summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog1074
-rw-r--r--gcc/testsuite/c-c++-common/Wunused-var-10.c68
-rw-r--r--gcc/testsuite/c-c++-common/Wunused-var-11.c12
-rw-r--r--gcc/testsuite/c-c++-common/Wunused-var-9.c80
-rw-r--r--gcc/testsuite/c-c++-common/pr20000.c32
-rw-r--r--gcc/testsuite/c-c++-common/torture/pr42834.c23
-rw-r--r--gcc/testsuite/c-c++-common/uninit-17.c25
-rw-r--r--gcc/testsuite/c-c++-common/warn-ommitted-condop.c29
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype4.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted10.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted13.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted17.C12
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted18.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted19.C21
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted2.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted3.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/explicit5.C25
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/implicit-copy.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/implicit1.C26
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/implicit2.C33
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/implicit3.C56
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/implicit4.C20
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/implicit5.C19
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist15.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist19.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist39.C15
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist40.C12
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist9.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ctor-neg.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept01.C83
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept02.C52
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept03.C68
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept04.C31
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept05.C19
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept06.C30
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept07.C25
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept08.C56
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/not_special.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr01.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr02.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr03.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr04.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr05.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr06.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr07.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr08.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr09.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr10.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr11.C23
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr12.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr13.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr14.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr15.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr16.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr17.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr18.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr20.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr21.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/nullptr22.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv1n.C34
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv1p.C32
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv2n.C110
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv2p.C112
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv3n.C202
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv3p.C224
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv4n.C230
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv4p.C280
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv5n.C170
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv5p.C224
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv6n.C74
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv6p.C112
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv7n.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv7p.C32
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv8p.C4
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/accessibility1.C24
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C34
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/typedef3.C19
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/method1.C20
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/parm1.C11
-rw-r--r--gcc/testsuite/g++.dg/eh/new1.C2
-rw-r--r--gcc/testsuite/g++.dg/eh/spec8.C4
-rw-r--r--gcc/testsuite/g++.dg/expr/cond8.C4
-rw-r--r--gcc/testsuite/g++.dg/expr/string-1.C4
-rw-r--r--gcc/testsuite/g++.dg/ext/attr-alias-1.C37
-rw-r--r--gcc/testsuite/g++.dg/ext/attr-alias-2.C37
-rw-r--r--gcc/testsuite/g++.dg/ext/has_virtual_destructor.C6
-rw-r--r--gcc/testsuite/g++.dg/ext/label13.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C24
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr26690-1.C2
-rw-r--r--gcc/testsuite/g++.dg/inherit/virtual5.C29
-rw-r--r--gcc/testsuite/g++.dg/init/ctor4.C4
-rw-r--r--gcc/testsuite/g++.dg/init/new5.C4
-rw-r--r--gcc/testsuite/g++.dg/init/pr44086.C15
-rw-r--r--gcc/testsuite/g++.dg/init/synth2.C4
-rw-r--r--gcc/testsuite/g++.dg/ipa/iinline-2.C61
-rw-r--r--gcc/testsuite/g++.dg/ipa/iinline-3.C64
-rw-r--r--gcc/testsuite/g++.dg/lto/20081118_1.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20100603-1_0.C14
-rw-r--r--gcc/testsuite/g++.dg/lto/20100603-1_1.c2
-rw-r--r--gcc/testsuite/g++.dg/other/arm-neon-1.C18
-rw-r--r--gcc/testsuite/g++.dg/other/error13.C4
-rw-r--r--gcc/testsuite/g++.dg/other/error20.C2
-rw-r--r--gcc/testsuite/g++.dg/other/error31.C2
-rw-r--r--gcc/testsuite/g++.dg/other/pr25632.C6
-rw-r--r--gcc/testsuite/g++.dg/other/typedef4.C7
-rw-r--r--gcc/testsuite/g++.dg/other/unused1.C2
-rw-r--r--gcc/testsuite/g++.dg/overload/arg3.C3
-rw-r--r--gcc/testsuite/g++.dg/overload/copy1.C3
-rw-r--r--gcc/testsuite/g++.dg/parse/error19.C2
-rw-r--r--gcc/testsuite/g++.dg/plugin/attribute_plugin.c2
-rw-r--r--gcc/testsuite/g++.dg/plugin/dumb_plugin.c3
-rw-r--r--gcc/testsuite/g++.dg/plugin/header_plugin.c4
-rw-r--r--gcc/testsuite/g++.dg/plugin/pragma_plugin.c3
-rw-r--r--gcc/testsuite/g++.dg/plugin/selfassign.c35
-rw-r--r--gcc/testsuite/g++.dg/pr44486.C10
-rw-r--r--gcc/testsuite/g++.dg/tc1/dr147.C10
-rw-r--r--gcc/testsuite/g++.dg/tc1/dr152.C6
-rw-r--r--gcc/testsuite/g++.dg/template/crash100.C24
-rw-r--r--gcc/testsuite/g++.dg/template/error23.C4
-rw-r--r--gcc/testsuite/g++.dg/template/incomplete4.C4
-rw-r--r--gcc/testsuite/g++.dg/template/incomplete5.C4
-rw-r--r--gcc/testsuite/g++.dg/template/qualified-id2.C27
-rw-r--r--gcc/testsuite/g++.dg/template/qualified-id3.C14
-rw-r--r--gcc/testsuite/g++.dg/template/qualttp5.C2
-rw-r--r--gcc/testsuite/g++.dg/torture/pr43801.C22
-rw-r--r--gcc/testsuite/g++.dg/torture/pr43905.C13
-rw-r--r--gcc/testsuite/g++.dg/torture/pr44357.C228
-rw-r--r--gcc/testsuite/g++.dg/torture/pr44492.C31
-rw-r--r--gcc/testsuite/g++.dg/torture/pr44535.C34
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C4
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr31146.C2
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr33604.C12
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-var-10.C42
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-var-11.C33
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-var-12.C36
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-var-13.C22
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-var-14.C17
-rw-r--r--gcc/testsuite/g++.dg/warn/incomplete2.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.bob/inherit2.C7
-rw-r--r--gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.bugs/900514_03.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.jason/new.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.jason/opeq3.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/ctors17.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/ctors5.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/operators27.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/p755.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/delete1.C3
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/dwarf2.C1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/dwarf3.C1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/delete3.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/init19.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/new.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/assign1.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C3
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/crash20.C5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/crash9.C4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20100609-1.c8
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pc44485.c46
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr44686.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr44687.c32
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20100316-1.c24
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/960321-1.x15
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/frame-address.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr44468.c60
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr44555.c16
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr44575.c49
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr44683.c18
-rw-r--r--gcc/testsuite/gcc.dg/assign-warn-1.c20
-rw-r--r--gcc/testsuite/gcc.dg/assign-warn-2.c20
-rw-r--r--gcc/testsuite/gcc.dg/c90-const-expr-10.c2
-rw-r--r--gcc/testsuite/gcc.dg/c99-array-lval-8.c6
-rw-r--r--gcc/testsuite/gcc.dg/c99-arraydecl-3.c4
-rw-r--r--gcc/testsuite/gcc.dg/c99-const-expr-10.c2
-rw-r--r--gcc/testsuite/gcc.dg/c99-restrict-4.c17
-rw-r--r--gcc/testsuite/gcc.dg/cast-qual-2.c8
-rw-r--r--gcc/testsuite/gcc.dg/compound-literal-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/cpp/line3.c8
-rw-r--r--gcc/testsuite/gcc.dg/format/gcc_diag-1.c24
-rw-r--r--gcc/testsuite/gcc.dg/funroll-loops-all.c2
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr44391.c7
-rw-r--r--gcc/testsuite/gcc.dg/init-bad-7.c11
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c32
-rw-r--r--gcc/testsuite/gcc.dg/ipa/modif-1.c41
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pure-const-1.c80
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pure-const-2.c28
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091216-1_0.c6
-rw-r--r--gcc/testsuite/gcc.dg/lto/20100603-1_0.c4
-rw-r--r--gcc/testsuite/gcc.dg/lto/20100603-2_0.c5
-rw-r--r--gcc/testsuite/gcc.dg/lto/20100603-3_0.c4
-rw-r--r--gcc/testsuite/gcc.dg/noncompile/990416-1.c8
-rw-r--r--gcc/testsuite/gcc.dg/noncompile/pr44517.c18
-rw-r--r--gcc/testsuite/gcc.dg/noreturn-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/noreturn-7.c6
-rw-r--r--gcc/testsuite/gcc.dg/opts-1.c9
-rw-r--r--gcc/testsuite/gcc.dg/opts-2.c8
-rw-r--r--gcc/testsuite/gcc.dg/opts-3.c7
-rw-r--r--gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c1
-rw-r--r--gcc/testsuite/gcc.dg/plugin/one_time_plugin.c2
-rw-r--r--gcc/testsuite/gcc.dg/plugin/selfassign.c35
-rw-r--r--gcc/testsuite/gcc.dg/pr32370.c8
-rw-r--r--gcc/testsuite/gcc.dg/pr36902.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr37561.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr39874.c29
-rw-r--r--gcc/testsuite/gcc.dg/pr41340.c4
-rw-r--r--gcc/testsuite/gcc.dg/pr41551.c4
-rw-r--r--gcc/testsuite/gcc.dg/pr42461.c14
-rw-r--r--gcc/testsuite/gcc.dg/pr44393.c15
-rw-r--r--gcc/testsuite/gcc.dg/pr44404.c35
-rw-r--r--gcc/testsuite/gcc.dg/pr44509.c9
-rw-r--r--gcc/testsuite/gcc.dg/pr44539.c29
-rw-r--r--gcc/testsuite/gcc.dg/pr44674.c10
-rw-r--r--gcc/testsuite/gcc.dg/pr44699.c157
-rw-r--r--gcc/testsuite/gcc.dg/pragma-diag-1.c21
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_global_array.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_global_var.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_local_array.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_local_var.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_two_strs.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_ratio_cold_str.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_array_field.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_array_through_pointer.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_empty_str.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_arg_to_local.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_return.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_str_init.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_array.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_pointer.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_value.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_global_array.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_global_var.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_local_array.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_local_var.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_malloc_size_var.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c2
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_two_strs.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr43781.c45
-rw-r--r--gcc/testsuite/gcc.dg/tree-prof/stringop-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/foldaddr-2.c13
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/foldaddr-3.c28
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c11
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c11
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c29
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c41
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ipa-split-3.c21
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ipa-split-4.c29
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c8
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ltrans-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ltrans-6.c1
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c1
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr21086.c9
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr44258.c43
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr44423.c47
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr44483.c20
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c22
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c28
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c32
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-21.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-23.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-25.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-26.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c3
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c3
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c3
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp47.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-10.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-11.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-13.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-14.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-15.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-17.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-18.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-19.c5
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-20.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-21.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-22.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-23.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-3.c5
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-4.c5
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr44507.c55
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-5.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-6.c3
-rw-r--r--gcc/testsuite/gcc.dg/volatile2.c7
-rw-r--r--gcc/testsuite/gcc.target/arm/eliminate.c19
-rw-r--r--gcc/testsuite/gcc.target/arm/pr40900.c12
-rw-r--r--gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-1.c12
-rw-r--r--gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-2.c12
-rw-r--r--gcc/testsuite/gcc.target/arm/wmul-1.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/wmul-3.c18
-rw-r--r--gcc/testsuite/gcc.target/arm/wmul-4.c18
-rw-r--r--gcc/testsuite/gcc.target/i386/abi-2.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/aes-avx-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/aes-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/amd64-abi-3.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vextractf128-256-3.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vextractf128-256-4.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/extract-1.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/extract-2.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/extract-3.c21
-rw-r--r--gcc/testsuite/gcc.target/i386/extract-4.c22
-rw-r--r--gcc/testsuite/gcc.target/i386/extract-5.c21
-rw-r--r--gcc/testsuite/gcc.target/i386/extract-6.c23
-rw-r--r--gcc/testsuite/gcc.target/i386/fma4-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/mmx-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/mod-1.c29
-rw-r--r--gcc/testsuite/gcc.target/i386/pclmul-avx-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/pclmul-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/pr27971.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/pr39139.c16
-rw-r--r--gcc/testsuite/gcc.target/i386/pr39315-check.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/pr44481.c14
-rw-r--r--gcc/testsuite/gcc.target/i386/pr44546.c22
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-vec-2a.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/sse3-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_2-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4a-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/ssse3-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/umod-1.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/umod-2.c14
-rw-r--r--gcc/testsuite/gcc.target/i386/umod-3.c21
-rw-r--r--gcc/testsuite/gcc.target/i386/vararg-1.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/vararg-2.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c17
-rw-r--r--gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c17
-rw-r--r--gcc/testsuite/gcc.target/i386/xop-check.h9
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-9.c16
-rw-r--r--gcc/testsuite/gcc.target/powerpc/recip-1.c18
-rw-r--r--gcc/testsuite/gcc.target/powerpc/recip-2.c21
-rw-r--r--gcc/testsuite/gcc.target/powerpc/recip-3.c22
-rw-r--r--gcc/testsuite/gcc.target/powerpc/recip-4.c36
-rw-r--r--gcc/testsuite/gcc.target/powerpc/recip-5.c94
-rw-r--r--gcc/testsuite/gcc.target/powerpc/recip-6.c16
-rw-r--r--gcc/testsuite/gcc.target/powerpc/recip-7.c16
-rw-r--r--gcc/testsuite/gcc.target/powerpc/recip-test.h149
-rw-r--r--gcc/testsuite/gcc.target/powerpc/recip-test2.h432
-rw-r--r--gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-1.c11
-rw-r--r--gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-2.c25
-rw-r--r--gcc/testsuite/gfortran.dg/abstract_type_8.f0329
-rw-r--r--gcc/testsuite/gfortran.dg/actual_rank_check_1.f9023
-rw-r--r--gcc/testsuite/gfortran.dg/aliasing_array_result_1.f90164
-rw-r--r--gcc/testsuite/gfortran.dg/alloc_comp_class_1.f9033
-rw-r--r--gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f9046
-rw-r--r--gcc/testsuite/gfortran.dg/allocate_alloc_opt_11.f9026
-rw-r--r--gcc/testsuite/gfortran.dg/allocate_alloc_opt_7.f9018
-rw-r--r--gcc/testsuite/gfortran.dg/allocate_alloc_opt_8.f9016
-rw-r--r--gcc/testsuite/gfortran.dg/allocate_alloc_opt_9.f9023
-rw-r--r--gcc/testsuite/gfortran.dg/array_constructor_23.f4
-rw-r--r--gcc/testsuite/gfortran.dg/array_memcpy_3.f902
-rw-r--r--gcc/testsuite/gfortran.dg/array_memcpy_4.f902
-rw-r--r--gcc/testsuite/gfortran.dg/associate_1.f0349
-rw-r--r--gcc/testsuite/gfortran.dg/associate_2.f9512
-rw-r--r--gcc/testsuite/gfortran.dg/associate_3.f0341
-rw-r--r--gcc/testsuite/gfortran.dg/associate_4.f0812
-rw-r--r--gcc/testsuite/gfortran.dg/associated_target_4.f9023
-rw-r--r--gcc/testsuite/gfortran.dg/asynchronous_3.f0315
-rw-r--r--gcc/testsuite/gfortran.dg/atan2_1.f901
-rw-r--r--gcc/testsuite/gfortran.dg/btest_1.f907
-rw-r--r--gcc/testsuite/gfortran.dg/class_23.f0324
-rw-r--r--gcc/testsuite/gfortran.dg/class_allocate_2.f034
-rw-r--r--gcc/testsuite/gfortran.dg/contiguous_1.f90177
-rw-r--r--gcc/testsuite/gfortran.dg/contiguous_2.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/contiguous_3.f9065
-rw-r--r--gcc/testsuite/gfortran.dg/data_namelist_conflict.f9026
-rw-r--r--gcc/testsuite/gfortran.dg/end_subroutine_1.f9016
-rw-r--r--gcc/testsuite/gfortran.dg/end_subroutine_2.f9024
-rw-r--r--gcc/testsuite/gfortran.dg/endfile_2.f902
-rw-r--r--gcc/testsuite/gfortran.dg/endfile_3.f909
-rw-r--r--gcc/testsuite/gfortran.dg/endfile_4.f908
-rw-r--r--gcc/testsuite/gfortran.dg/entry_19.f909
-rw-r--r--gcc/testsuite/gfortran.dg/eof_3.f901
-rw-r--r--gcc/testsuite/gfortran.dg/generic_23.f0367
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr44536.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/sharing-3.f902
-rw-r--r--gcc/testsuite/gfortran.dg/ibclr_1.f907
-rw-r--r--gcc/testsuite/gfortran.dg/ibits_1.f9013
-rw-r--r--gcc/testsuite/gfortran.dg/ibset_1.f907
-rw-r--r--gcc/testsuite/gfortran.dg/import8.f9018
-rw-r--r--gcc/testsuite/gfortran.dg/interface_proc_end.f905
-rw-r--r--gcc/testsuite/gfortran.dg/ltrans-7.f901
-rw-r--r--gcc/testsuite/gfortran.dg/mvbits_9.f9019
-rw-r--r--gcc/testsuite/gfortran.dg/nan_6.f9099
-rw-r--r--gcc/testsuite/gfortran.dg/pr43688.f9011
-rw-r--r--gcc/testsuite/gfortran.dg/pr43866.f9044
-rw-r--r--gcc/testsuite/gfortran.dg/pr44592.f9020
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_27.f9020
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_28.f9039
-rw-r--r--gcc/testsuite/gfortran.dg/read_infnan_1.f9031
-rw-r--r--gcc/testsuite/gfortran.dg/selected_char_kind_4.f9024
-rw-r--r--gcc/testsuite/gfortran.dg/selected_real_kind_1.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/selected_real_kind_2.f9032
-rw-r--r--gcc/testsuite/gfortran.dg/selected_real_kind_3.f906
-rw-r--r--gcc/testsuite/gfortran.dg/semicolon_fixed.f8
-rw-r--r--gcc/testsuite/gfortran.dg/semicolon_fixed_2.f12
-rw-r--r--gcc/testsuite/gfortran.dg/semicolon_free.f901
-rw-r--r--gcc/testsuite/gfortran.dg/semicolon_free_2.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/type_decl_1.f9030
-rw-r--r--gcc/testsuite/gfortran.dg/type_decl_2.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_call_14.f0329
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_call_15.f0325
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_proc_14.f0333
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_proc_15.f0334
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_proc_16.f0358
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_proc_4.f036
-rw-r--r--[-rwxr-xr-x]gcc/testsuite/gfortran.dg/unpack_bounds_1.f900
-rw-r--r--[-rwxr-xr-x]gcc/testsuite/gfortran.dg/unpack_bounds_2.f900
-rw-r--r--[-rwxr-xr-x]gcc/testsuite/gfortran.dg/unpack_bounds_3.f900
-rw-r--r--gcc/testsuite/gfortran.dg/warn_conversion.f901
-rw-r--r--gcc/testsuite/gfortran.dg/warn_conversion_2.f907
-rw-r--r--gcc/testsuite/gfortran.dg/whole_file_18.f902
-rw-r--r--gcc/testsuite/gfortran.dg/whole_file_20.f0333
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/compile/pr40421.f9015
-rw-r--r--gcc/testsuite/gnat.dg/class_wide2.adb2
-rw-r--r--gcc/testsuite/gnat.dg/noreturn3.adb27
-rw-r--r--gcc/testsuite/gnat.dg/noreturn3.ads12
-rw-r--r--gcc/testsuite/gnat.dg/not_null.adb2
-rw-r--r--gcc/testsuite/lib/lto.exp11
-rw-r--r--gcc/testsuite/lib/target-supports.exp50
443 files changed, 8732 insertions, 1413 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4f97f01350f..9c91245d613 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,1077 @@
+2010-06-30 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/nullptr04.C: Use __INTPTR_TYPE__.
+ * g++.dg/other/pr25632.C: Likewise.
+
+2010-07-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/40421
+ * gfortran.fortran-torture/compile/pr40421.f90: New test.
+
+2010-07-01 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/42834
+ PR middle-end/44468
+ * gcc.c-torture/execute/20100316-1.c: New testcase.
+ * gcc.c-torture/execute/pr44468.c: Likewise.
+ * gcc.c-torture/compile/20100609-1.c: Likewise.
+ * gcc.dg/volatile2.c: Adjust.
+ * gcc.dg/plugin/selfassign.c: Likewise.
+ * gcc.dg/pr36902.c: Likewise.
+ * gcc.dg/tree-ssa/foldaddr-2.c: Remove.
+ * gcc.dg/tree-ssa/foldaddr-3.c: Likewise.
+ * gcc.dg/tree-ssa/forwprop-8.c: Adjust.
+ * gcc.dg/tree-ssa/pr17141-1.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-13.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-14.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-ccp-21.c: Likewise.
+ * gcc.dg/tree-ssa/pta-ptrarith-1.c: Likewise.
+ * gcc.dg/tree-ssa/20030807-7.c: Likewise.
+ * gcc.dg/tree-ssa/forwprop-10.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-1.c: Likewise.
+ * gcc.dg/tree-ssa/pta-ptrarith-2.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-ccp-23.c: Likewise.
+ * gcc.dg/tree-ssa/forwprop-1.c: Likewise.
+ * gcc.dg/tree-ssa/forwprop-2.c: Likewise.
+ * gcc.dg/tree-ssa/struct-aliasing-1.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-ccp-25.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-26.c: Likewise.
+ * gcc.dg/tree-ssa/struct-aliasing-2.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-ccp-26.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-sccvn-4.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-7.c: Likewise.
+ * gcc.dg/tree-ssa/forwprop-5.c: Likewise.
+ * gcc.dg/struct/w_prof_two_strs.c: XFAIL.
+ * gcc.dg/struct/wo_prof_escape_arg_to_local.c: Likewise.
+ * gcc.dg/struct/wo_prof_global_var.c: Likewise.
+ * gcc.dg/struct/wo_prof_malloc_size_var.c: Likewise.
+ * gcc.dg/struct/w_prof_local_array.c: Likewise.
+ * gcc.dg/struct/w_prof_single_str_global.c: Likewise.
+ * gcc.dg/struct/wo_prof_escape_str_init.c: Likewise.
+ * gcc.dg/struct/wo_prof_array_through_pointer.c: Likewise.
+ * gcc.dg/struct/w_prof_global_array.c: Likewise.
+ * gcc.dg/struct/wo_prof_array_field.c: Likewise.
+ * gcc.dg/struct/wo_prof_single_str_local.c: Likewise.
+ * gcc.dg/struct/w_prof_local_var.c: Likewise.
+ * gcc.dg/struct/wo_prof_two_strs.c: Likewise.
+ * gcc.dg/struct/wo_prof_empty_str.c: Likewise.
+ * gcc.dg/struct/wo_prof_local_array.c: Likewise.
+ * gcc.dg/struct/w_prof_global_var.c: Likewise.
+ * gcc.dg/struct/wo_prof_single_str_global.c: Likewise.
+ * gcc.dg/struct/wo_prof_escape_substr_value.c: Likewise.
+ * gcc.dg/struct/wo_prof_global_array.c: Likewise.
+ * gcc.dg/struct/wo_prof_escape_return.c: Likewise.
+ * gcc.dg/struct/wo_prof_escape_substr_array.c: Likewise.
+ * gcc.dg/struct/wo_prof_double_malloc.c: Likewise.
+ * gcc.dg/struct/w_ratio_cold_str.c: Likewise.
+ * gcc.dg/struct/wo_prof_escape_substr_pointer.c: Likewise.
+ * gcc.dg/struct/wo_prof_local_var.c: Likewise.
+ * gcc.dg/tree-prof/stringop-1.c: Adjust.
+ * g++.dg/tree-ssa/pr31146.C: Likewise.
+ * g++.dg/tree-ssa/copyprop-1.C: Likewise.
+ * g++.dg/tree-ssa/pr33604.C: Likewise.
+ * g++.dg/plugin/selfassign.c: Likewise.
+ * gfortran.dg/array_memcpy_3.f90: Likewise.
+ * gfortran.dg/array_memcpy_4.f90: Likewise.
+ * c-c++-common/torture/pr42834.c: New testcase.
+
+2010-06-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/44628
+ * g++.dg/template/crash100.C: New.
+
+2010-06-30 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/tree-ssa/ipa-split-4.c: New testcase.
+
+2010-06-30 Michael Matz <matz@suse.de>
+
+ PR bootstrap/44699
+ * gcc.dg/pr44699.c: New test.
+
+2010-06-30 Bernd Schmidt <bernds@codesourcery.com>
+
+ PR tree-optimization/39799
+ * c-c++-common/uninit-17.c: New test.
+
+2010-06-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/43298
+ * gfortran.dg/read_infnan_1.f90: New test.
+
+2010-06-29 Jason Merrill <jason@redhat.com>
+
+ Enable implicitly declared move constructor/operator= (N3053).
+ * g++.dg/cpp0x/implicit3.C: New.
+ * g++.dg/cpp0x/implicit4.C: New.
+ * g++.dg/cpp0x/implicit5.C: New.
+ * g++.dg/cpp0x/implicit-copy.C: Adjust.
+ * g++.dg/cpp0x/not_special.C: Adjust.
+ * g++.dg/cpp0x/rv-trivial-bug.C: Adjust.
+ * g++.dg/cpp0x/rv1n.C: Adjust.
+ * g++.dg/cpp0x/rv1p.C: Adjust.
+ * g++.dg/cpp0x/rv2n.C: Adjust.
+ * g++.dg/cpp0x/rv2p.C: Adjust.
+ * g++.dg/cpp0x/rv3n.C: Adjust.
+ * g++.dg/cpp0x/rv3p.C: Adjust.
+ * g++.dg/cpp0x/rv4n.C: Adjust.
+ * g++.dg/cpp0x/rv4p.C: Adjust.
+ * g++.dg/cpp0x/rv5n.C: Adjust.
+ * g++.dg/cpp0x/rv5p.C: Adjust.
+ * g++.dg/cpp0x/rv6n.C: Adjust.
+ * g++.dg/cpp0x/rv6p.C: Adjust.
+ * g++.dg/cpp0x/rv7n.C: Adjust.
+ * g++.dg/cpp0x/rv7p.C: Adjust.
+ * g++.dg/cpp0x/rv8p.C: Adjust.
+ * g++.dg/gomp/pr26690-1.C: Adjust.
+ * g++.dg/other/error20.C: Adjust.
+ * g++.dg/other/error31.C: Adjust.
+ * g++.dg/parse/error19.C: Adjust.
+ * g++.dg/template/qualttp5.C: Adjust.
+ * g++.old-deja/g++.law/ctors5.C: Adjust.
+
+ Enable implicitly deleted functions (N2346)
+ * g++.dg/cpp0x/defaulted17.C: New.
+ * g++.dg/cpp0x/implicit1.C: New.
+ * g++.dg/cpp0x/implicit2.C: New.
+ * g++.dg/cpp0x/lambda/lambda-ctor-neg.C: Adjust.
+ * g++.dg/ext/has_virtual_destructor.C: Adjust.
+ * g++.dg/init/ctor4.C: Adjust.
+ * g++.dg/init/synth2.C: Adjust.
+ * g++.dg/lto/20081118_1.C: Adjust.
+ * g++.dg/other/error13.C: Adjust.
+ * g++.dg/other/unused1.C: Adjust.
+ * g++.old-deja/g++.bob/inherit2.C: Adjust.
+ * g++.old-deja/g++.bugs/900205_04.C: Adjust.
+ * g++.old-deja/g++.jason/opeq3.C: Adjust.
+ * g++.old-deja/g++.law/ctors17.C: Adjust.
+ * g++.old-deja/g++.oliva/delete1.C: Adjust.
+ * g++.old-deja/g++.pt/assign1.C: Adjust.
+ * g++.old-deja/g++.pt/crash20.C: Adjust.
+
+ * g++.dg/cpp0x/defaulted10.C: Adjust for new deleted message.
+ * g++.dg/cpp0x/defaulted13.C: Adjust.
+ * g++.dg/cpp0x/defaulted2.C: Adjust.
+ * g++.dg/cpp0x/defaulted3.C: Adjust.
+ * g++.dg/cpp0x/initlist9.C: Adjust.
+ * g++.dg/cpp0x/lambda/lambda-errloc.C: Adjust.
+ * g++.dg/cpp0x/lambda/lambda-errloc2.C: Adjust.
+ * g++.dg/init/synth2.C: Adjust.
+
+ * g++.dg/cpp0x/defaulted19.C: New.
+
+ * g++.dg/expr/string-1.C: Fix for -std=c++0x.
+ * g++.dg/template/error23.C: Fix for -std=c++0x.
+
+2010-06-29 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44718
+ * gfortran.dg/proc_ptr_28.f90: New.
+
+2010-06-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/43801
+ * g++.dg/torture/pr43801.C: New test.
+
+ PR debug/44668
+ * g++.dg/debug/dwarf2/accessibility1.C: New test.
+
+2010-06-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/44587
+ * g++.dg/template/qualified-id2.C: New.
+ * g++.dg/template/qualified-id3.C: New.
+
+2010-06-29 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44696
+ * gfortran.dg/associated_target_4.f90: New.
+
+2010-06-29 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/44582
+ * gfortran.dg/aliasing_array_result_1.f90 : New test.
+
+2010-06-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * lib/lto.exp (lto_prune_warns): Also accept leading single quote.
+
+2010-06-29 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/tree-ssa/ipa-split-3.c: New testcase.
+
+2010-06-29 Bernd Schmidt <bernds@codesourcery.com>
+
+ PR target/43902
+ * gcc.target/arm/wmul-1.c: Test for smlabb instead of smulbb.
+ * gcc.target/arm/wmul-3.c: New test.
+ * gcc.target/arm/wmul-4.c: New test.
+
+2010-06-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR rtl-optimization/44659
+ * gcc.target/i386/extract-1.c: New.
+ * gcc.target/i386/extract-2.c: Likewise.
+ * gcc.target/i386/extract-3.c: Likewise.
+ * gcc.target/i386/extract-4.c: Likewise.
+ * gcc.target/i386/extract-5.c: Likewise.
+ * gcc.target/i386/extract-6.c: Likewise.
+
+2010-06-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/44682
+ * g++.dg/warn/Wunused-var-14.C: New test.
+
+2010-06-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/43298
+ * gfortran.dg/nan_6.f90: New.
+
+2010-06-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR tree-optimization/43781
+ * gcc.dg/torture/pr43781.c: New.
+
+2010-06-28 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/40158
+ * gfortran.dg/actual_rank_check_1.f90: New test.
+
+2010-06-28 Martin Jambor <mjambor@suse.cz>
+
+ * testsuite/gcc.dg/ipa/ipa-sra-6.c: New test.
+
+2010-06-28 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/44687
+ * gcc.c-torture/compile/pr44687.c
+
+2010-06-28 Martin Jambor <mjambor@suse.cz>
+
+ PR c++/44535
+ * g++.dg/torture/pr44535.C: New test.
+
+2010-06-28 Michael Matz <matz@suse.de>
+
+ PR middle-end/44592
+ * gfortran.dg/pr44592.f90: New test.
+
+2010-06-28 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/44357
+ * g++.dg/torture/pr44357.C: New testcase.
+
+2010-06-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.dg/tree-ssa/ltrans-1.c: Add -march=i486 for i?86-*-* && ilp32.
+ * gcc.dg/tree-ssa/ltrans-3.c: Likewise.
+ * gcc.dg/tree-ssa/ltrans-4.c: Likewise.
+ * gcc.dg/tree-ssa/ltrans-5.c: Likewise.
+ * gcc.dg/tree-ssa/ltrans-6.c: Likewise.
+ * gcc.dg/tree-ssa/ltrans-8.c: Likewise.
+ * gcc.dg/tree-ssa/vrp47.c: Add -march=i586 for i?86-*-* && ilp32.
+ * gfortran.dg/ltrans-7.f90: Add -march=i486 for i?86-*-* && ilp32.
+
+2010-06-27 Jan Hubicka <jh@suse.cz>
+
+ * gcc.c-torture/compile/pr44686.c: New file.
+
+2010-06-27 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/44683
+ * gcc.c-torture/execute/pr44683.c: New testcase.
+
+2010-06-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/noreturn3.ad[sb]: New test.
+
+2010-06-26 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/explicit5.C: New.
+
+2010-06-26 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/44393
+ * gcc.dg/pr44393.c: New testcase.
+
+2010-06-26 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/tree-ssa/ipa-split-2.c: New testcase.
+
+2010-06-26 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/44674
+ * gcc.dg/pr44674.c: New testcase.
+
+2010-06-26 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/opts-3.c: New test.
+
+2010-06-26 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/type_decl_1.f90: New.
+ * gfortran.dg/type_decl_2.f90: New.
+
+2010-06-26 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/semicolon_fixed.f: Fix dg syntax..
+ * gfortran.dg/semicolon_fixed_2.f: Ditto.
+
+2010-06-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR testsuite/38946
+ * gfortran.dg/array_constructor_23.f: Update test to allow for small
+ error in comparing reals.
+
+2010-06-25 Tobias Burnus <burnus@net-b.de>
+
+ * selected_real_kind_2.f90: New.
+ * selected_real_kind_3.f90: New.
+
+2010-06-25 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/entry_19.f90: New.
+
+2010-06-25 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/end_subroutine_1.f90: New.
+ * gfortran.dg/end_subroutine_2.f90: New.
+ * gfortran.dg/interface_proc_end.f90: Update.
+
+2010-06-25 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/semicolon_fixed.f: Update.
+ * gfortran.dg/semicolon_fixed_2.f: New.
+ * gfortran.dg/semicolon_free_2.f90: New.
+ * gfortran.dg/semicolon_free.f90: Update.
+
+2010-06-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/44448
+ * gfortran.dg/atan2_1.f90: Add -ffloat-store.
+
+2010-06-25 Martin Jambor <mjambor@suse.cz>
+
+ * g++.dg/ipa/iinline-3.C: New test.
+ * gcc.dg/ipa/modif-1.c: Removed.
+
+2010-06-25 Jan Hubicka <jh@suse.cz>
+
+ * testsuite/gcc.dg/tree-ssa/ipa-split-1.c
+
+2010-06-25 Martin Jambor <mjambor@suse.cz>
+
+ * g++.dg/ipa/iinline-2.C: New test.
+
+2010-06-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/43866
+ * gfortran.dg/pr43866.f90: New test.
+
+ PR tree-optimization/44539
+ * gcc.dg/pr44539.c: New test.
+
+2010-06-25 Bernd Schmidt <bernds@codesourcery.com>
+
+ From Jim Wilson:
+ PR target/43902
+ * gcc.target/mips/madd-9.c: New test.
+
+2010-06-25 Shujing Zhao <pearly.zhao@oracle.com>
+
+ PR c/44517
+ * gcc.dg/noncompile/pr44517.c: New.
+ * gcc.dg/noncompile/990416-1.c: Adjust expected error.
+
+2010-06-24 Steve Ellcey <sje@cup.hp.com>
+
+ PR testsuite/43283
+ * gcc.dg/lto/20091216-1_0.c: Use newline instead of semicolon
+ and add argument to nop for IA64.
+
+2010-06-24 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/44588
+ * gcc.target/i386/mod-1.c: New.
+ * gcc.target/i386/umod-1.c: Likewise.
+ * gcc.target/i386/umod-2.c: Likewise.
+ * gcc.target/i386/umod-3.c: Likewise.
+
+2010-06-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/44492
+ * g++.dg/torture/pr44492.C: New test.
+
+2010-06-24 Andi Kleen <ak@linux.intel.com>
+
+ * c-c++-common/warn-omitted-condop.c: New.
+
+2010-06-24 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/44614
+ * gfortran.dg/import8.f90: New.
+
+2010-06-23 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat.dg/not_null.adb: Update test case.
+
+2010-06-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/44619
+ * g++.dg/warn/Wunused-var-13.C: New test.
+
+ PR c++/44627
+ * g++.dg/diagnostic/method1.C: New test.
+
+2010-06-22 Cary Coutant <ccoutant@google.com>
+
+ * g++.dg/debug/dwarf2/dwarf4-typedef.C: New test.
+
+2010-06-22 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44616
+ * gfortran.dg/abstract_type_8.f03: New.
+
+2010-06-21 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/noexcept08.C: New.
+
+ * g++.dg/ext/unary_trait_incomplete.C: Adjust.
+
+2010-06-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/44615
+ * gcc.target/i386/sse2-vec-2a.c: New.
+
+2010-06-21 DJ Delorie <dj@redhat.com>
+
+ * gcc.dg/pragma-diag-1.c: New.
+
+2010-06-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/44615
+ * gcc.target/i386/amd64-abi-3.c: Add -mtune=k8.
+
+2010-06-21 Alan Modra <amodra@gmail.com>
+
+ PR testsuite/44505
+ * gcc.c-torture/execute/frame-address.c (check_fa): Avoid
+ tail call to check_fa_mid.
+
+2010-06-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/44575
+ * gcc.c-torture/execute/pr44575.c: New test.
+
+2010-06-21 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/40632
+ * gfortran.dg/contiguous_1.f90: New.
+ * gfortran.dg/contiguous_2.f90: New.
+ * gfortran.dg/contiguous_3.f90: New.
+
+2010-06-21 Kai Tietz <kai.tietz@onevision.com>
+
+ * gcc.target/x86_64/abi/callabi/leaf-1.c: New.
+ * gcc.target/x86_64/abi/callabi/leaf-2.c: New.
+
+2010-06-20 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/44546
+ * gcc.target/i386/pr44546.c: New test.
+
+2010-06-20 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/opts-2.c: New test.
+
+2010-06-19 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44584
+ * gfortran.dg/typebound_proc_15.f03: Modified.
+
+2010-06-19 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/44072
+ * gcc.target/arm/thumb2-cmpneg2add-1.c: New test.
+ * gcc.target/arm/thumb2-cmpneg2add-2.c: New test.
+
+2010-06-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * g++.dg/ext/label13.C: Fix typo in last change.
+
+2010-06-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/44477
+ * gfortran.dg/eof_3.f90
+ * gfortran.dg/endfile_2.f90
+ * gfortran.dg/endfile_4.f90
+ * gfortran.dg/endfile_3.f90
+
+2010-06-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR c++/41090
+ * g++.dg/ext/label13.C: xfail on 32-bit hppa*-*-hpux*.
+
+2010-06-18 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/44556
+ * gfortran.dg/allocate_alloc_opt_11.f90: New.
+
+2010-06-18 Bernd Schmidt <bernds@codesourcery.com>
+
+ * gcc.target/arm/pr40900.c: New test.
+
+2010-06-18 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat.dg/class_wide2.adb: Remove bogus message, no longer generated.
+
+2010-06-17 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44558
+ * gfortran.dg/typebound_call_15.f03: New.
+
+2010-06-17 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR c++/44486
+ * g++.dg/pr44486.C: New.
+
+2010-06-16 DJ Delorie <dj@redhat.com>
+
+ * gcc.target/i386/volatile-bitfields-1.c: New.
+ * gcc.target/i386/volatile-bitfields-2.c: New.
+
+2010-06-16 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/noexcept03.C: Test -Wnoexcept.
+
+ * g++.dg/cpp0x/noexcept01.C: Test defaulted fns.
+
+2010-06-16 Richard Guenther <rguenther@suse.de>
+
+ PR c/44555
+ * gcc.c-torture/execute/pr44555.c: New testcase.
+
+2010-06-16 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44549
+ * gfortran.dg/typebound_proc_16.f03: New.
+
+2010-06-16 Martin Jambor <mjambor@suse.cz>
+
+ * g++.dg/torture/pr43905.C: New test.
+
+2010-06-16 Mikael Pettersson <mikpe@it.uu.se>
+
+ PR testsuite/44538
+ * gcc.dg/vect/slp-perm-5.c (main): Prevent
+ initialization loop from being vectorized.
+ * gcc.dg/vect/slp-perm-6.c (main): Likewise.
+
+2010-06-16 Alan Modra <amodra@gmail.com>
+
+ PR tree-optimization/44507
+ * gcc.dg/vect/pr44507.c (seeIf256ByteArrayIsConstant): Correct cast.
+
+2010-06-15 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/overload/arg3.C: Adjust error locations.
+ * g++.dg/overload/copy1.C: Likewise.
+ * g++.dg/tc1/dr152.C: Likewise.
+ * g++.dg/template/incomplete4.C: Likewise.
+ * g++.dg/template/incomplete5.C: Likewise.
+ * g++.old-deja/g++.bob/inherit2.C: Likewise.
+ * g++.old-deja/g++.pt/auto_ptr.C: Likewise.
+ * g++.old-deja/g++.pt/crash9.C: Likewise.
+
+ * g++.dg/inherit/virtual5.C: New.
+
+ * g++.dg/cpp0x/defaulted18.C: New.
+
+ * g++.dg/cpp0x/initlist40.C: New.
+
+ * g++.dg/cpp0x/initlist39.C: New.
+
+2010-06-15 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR middle-end/44391
+ * gcc.dg/graphite/pr44391.c: New.
+
+2010-06-15 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/43388
+ * gfortran.dg/allocate_alloc_opt_8.f90: New.
+ * gfortran.dg/allocate_alloc_opt_9.f90: New.
+ * gfortran.dg/allocate_alloc_opt_10.f90: New.
+ * gfortran.dg/class_allocate_2.f03: Modified an error message.
+
+2010-06-15 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/ssa-sccvn-4.c: Adjust.
+
+2010-06-15 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-21.c: Adjust.
+ * gcc.dg/vect/bb-slp-13.c: Likewise
+ * gcc.dg/vect/bb-slp-4.c: Likewise
+ * gcc.dg/vect/bb-slp-22.c: Likewise
+ * gcc.dg/vect/bb-slp-14.c: Likewise
+ * gcc.dg/vect/bb-slp-23.c: Likewise
+ * gcc.dg/vect/bb-slp-15.c: Likewise
+ * gcc.dg/vect/bb-slp-17.c: Likewise
+ * gcc.dg/vect/bb-slp-18.c: Likewise
+ * gcc.dg/vect/bb-slp-19.c: Likewise
+ * gcc.dg/vect/bb-slp-10.c: Likewise
+ * gcc.dg/vect/bb-slp-11.c: Likewise
+ * gcc.dg/vect/bb-slp-20.c: Likewise
+ * gcc.dg/vect/bb-slp-3.c: Likewise
+
+2010-06-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/44536
+ * gfortran.dg/gomp/pr44536.f90: New test.
+ * gfortran.dg/gomp/sharing-3.f90: Remove xfail.
+
+2010-06-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/44534
+ * gcc.target/i386/avx-vextractf128-256-3.c: New.
+ * gcc.target/i386/avx-vextractf128-256-4.c: Likewise.
+
+2010-06-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/44508
+ * gcc.dg/tree-ssa/pr21086.c: Adjust.
+
+ PR bootstrap/44509
+ * gcc.dg/pr44509.c: New test.
+
+2010-06-14 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/44507
+ * gcc.dg/vect/pr44507.c: New test.
+
+2010-06-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ * g++.dg/plugin/header_plugin.c: Add "c-family/" to c-common.h
+ and c-pretty-print.h.
+
+ * g++.dg/plugin/pragma_plugin.c: Add "c-family/" to c-pragma.h.
+
+2010-06-13 Daniel Franke <franke.daniel@gmail.com>
+
+ * gfortran.dg/whole_file_18.f90: Updated error message.
+
+2010-06-12 Daniel Franke <franke.daniel@gmail.com>
+
+ * gfortran.dg/whole_file_20.f03: New.
+
+2010-06-12 Jan Hubicka <jh@suse.cz>
+
+ * gcc.c-torture/compile/pc44485.c: New testcase.
+
+2010-06-12 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/40117
+ * gfortran.dg/typebound_proc_4.f03: Modified error message.
+ * gfortran.dg/typebound_proc_14.f03: New.
+ * gfortran.dg/typebound_proc_15.f03: New.
+
+2010-06-11 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/opts-1.c: New test.
+
+2010-06-11 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/funroll-loops-all.c: Update expected error.
+
+2010-06-11 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/44481
+ * gcc.target/i386/pr44481.c: New test.
+
+2010-06-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr42461.c: Compile at -O2 instead of -O.
+
+2010-06-11 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR middle-end/44483
+ * gcc.dg/tree-ssa/pr44483.c: New.
+
+2010-06-11 Paul Brook <paul@codesourcery.com>
+
+ * g++.dg/other/arm-neon-1.C: New test.
+
+2010-06-11 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/42051
+ PR fortran/43896
+ * gfortran.dg/class_23.f03: New test.
+
+2010-06-11 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/ipa/pure-const-2.c: New testcase.
+
+2010-06-11 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/noreturn-7.c: Update.
+ * gcc.dg/noreturn-4.c: Update.
+
+2010-06-10 Dodji Seketeli <dodji@redhat.com>
+
+ Fix MIPS bootstrap
+ * g++.dg/other/typedef4.C: New test.
+
+2010-06-10 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44207
+ * gfortran.dg/allocate_alloc_opt_7.f90: New test.
+
+2010-06-10 Daniel Franke <franke.daniel@gmail.com>
+
+ PR fortran/44457
+ * gfortran.dg/asynchronous_3.f03
+
+2010-06-10 Changpeng Fang <changpeng.fang@amd.com>
+
+ PR middle-end/44185
+ * gcc.dg/tree-ssa/prefetch-7.c: take the loops that will generate
+ non-temporal stores out of the tests to form new test cases. As a
+ result, no non-temporal store should be generated in this case.
+
+ * gcc.dg/tree-ssa/prefetch-8.c: New. Test from original
+ prefetch-7.c that generate one non-temporal store.
+
+ * gcc.dg/tree-ssa/prefetch-9.c: New. Test from original
+ prefetch-7.c that generate one non-temporal store and one
+ one-temporal prefetch.
+
+2010-06-10 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/44258
+ * gcc.dg/tree-ssa/pr44258.c: New test.
+
+2010-06-10 Daniel Kraft <d@domob.eu>
+
+ PR fortran/38936
+ * gfortran.dg/associate_1.f03: New test.
+ * gfortran.dg/associate_2.f95: New test.
+ * gfortran.dg/associate_3.f03: New test.
+ * gfortran.dg/associate_4.f08: New test.
+
+2010-06-10 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ * gfortran.dg/selected_char_kind_4.f90: New test.
+
+2010-06-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr42461.c: New test.
+
+2010-06-09 Daniel Franke <franke.daniel@gmail.com>
+
+ PR fortran/44347
+ * gfortran.dg/selected_real_kind_1.f90: New.
+
+2010-06-09 Daniel Franke <franke.daniel@gmail.com>
+
+ PR fortran/44359
+ * gfortran.dg/warn_conversion.f90: Removed check for redundant
+ warning.
+ * gfortran.dg/warn_conversion_2.f90: Use non-constant expression to
+ check for warning.
+
+2010-06-09 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ * gfortran.dg/data_namelist_conflict.f90: New test.
+
+2010-06-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * g++.old-deja/g++.oliva/dwarf2.C: Don't xfail on i386-pc-solaris*.
+ * g++.old-deja/g++.oliva/dwarf3.C: Likewise.
+ * g++.old-deja/g++.other/init19.C: Don't xfail on *-*-solaris2*.
+
+2010-06-09 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ * testsuite/gfortran.dg/mvbits_9.f90: New test.
+ * testsuite/gfortran.dg/ibset_1.f90: Ditto.
+ * testsuite/gfortran.dg/ibits_1.f90: Ditto.
+ * testsuite/gfortran.dg/btest_1.f90: Ditto.
+ * testsuite/gfortran.dg/ibclr_1.f90: Ditto.
+
+2010-06-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/44366
+ * g++.dg/cpp0x/decltype23.C: Move to...
+ * g++.dg/diagnostic/parm1.C: ...here, and remove decltype.
+
+2010-06-09 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44211
+ * gfortran.dg/typebound_call_14.f03: New test.
+
+2010-06-09 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/44423
+ * gcc.dg/tree-ssa/pr44423.c: New test.
+
+2010-06-09 Joern Rennecke <amylaar@spamcop.net>
+
+ PR testsuite/42843
+ * gcc.dg/plugin/selfassign.c (pass_warn_self_assign): Use enumerator
+ TV_NONE to initialize tv_id field.
+ * g++.dg/plugin/selfassign.c (pass_warn_self_assign): Likewise.
+ * gcc.dg/plugin/one_time_plugin.c (one_pass): Likewise.
+ * g++.dg/plugin/dumb_plugin.c (pass_dumb_plugin_example): Likewise.
+ Include toplev.h .
+ * gcc.dg/plugin/finish_unit_plugin.c: Include cgraph.h.
+ * g++.dg/plugin/attribute_plugin.c: Include toplev.h and plugin.h .
+ * g++.dg/plugin/pragma_plugin.c: Include toplev.h .
+
+2010-06-08 Sandra Loosemore <sandra@codesourcery.com>
+
+ PR tree-optimization/39874
+ PR middle-end/28685
+ * gcc.dg/pr39874.c: New file.
+
+2010-06-08 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/ext/attr-alias-1.C: New.
+ * g++.dg/ext/attr-alias-2.C: New.
+
+2010-06-07 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/44446
+ * gfortran.dg/proc_ptr_27.f90: New.
+
+2010-06-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/44366
+ * g++.dg/cpp0x/decltype23.C: New.
+
+2010-06-08 Andrew Pinski <pinskia@gmail.com>
+ Shujing Zhao <pearly.zhao@oracle.com>
+
+ PR c/37724
+ * gcc.dg/c90-const-expr-10.c: Adjust.
+ * gcc.dg/c99-const-expr-10.c: Adjust.
+ * gcc.dg/init-bad-7.c: New.
+
+2010-06-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * lib/target-supports.exp (check_effective_target_gas): New proc.
+ * gcc.c-torture/execute/960321-1.x: New file.
+
+2010-06-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/44401
+ * g++.dg/tc1/dr147.C: Test case of member with same name as class.
+
+2010-06-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/44444
+ * g++.dg/warn/Wunused-var-12.C: New test.
+
+ PR c++/44443
+ * c-c++-common/Wunused-var-11.c: New test.
+
+2010-06-07 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/ipa/pure-const-1.c: New testcase.
+
+2010-06-07 Kazu Hirata <kazu@codesourcery.com>
+
+ PR rtl-optimization/44404
+ * gcc.dg/pr44404.c: New.
+
+2010-06-07 Kai Tietz <kai.tietz@onevision.com>
+
+ PR target/44159
+ * gcc.target/i386/abi-2.c: Check sysv abi here.
+ * gcc.target/i386/aes-avx-check.h: Call test in noinline
+ function to avoid failures by different ABIs.
+ * gcc.target/i386/aes-check.h: Likewise.
+ * gcc.target/i386/avx-check.h: Likewise.
+ * gcc.target/i386/fma4-check.h: Likewise.
+ * gcc.target/i386/mmx-3dnow-check.h: Likewise.
+ * gcc.target/i386/mmx-check.h: Likewise.
+ * gcc.target/i386/pclmul-avx-check.h: Likewise.
+ * gcc.target/i386/pclmul-check.h: Likewise.
+ * gcc.target/i386/sse-check.h: Likewise.
+ * gcc.target/i386/sse2-check.h: Likewise.
+ * gcc.target/i386/sse3-check.h: Likewise.
+ * gcc.target/i386/sse4_1-check.h: Likewise.
+ * gcc.target/i386/sse4_2-check.h: Likewise.
+ * gcc.target/i386/sse4a-check.h: Likewise.
+ * gcc.target/i386/ssse3-check.h: Likewise.
+ * gcc.target/i386/xop-check.h: Likewise.
+ * gcc.target/i386/pr27971.c: Fix for LLP64.
+ * gcc.target/i386/pr39139.c: Likewise.
+ * gcc.target/i386/pr39315-check.c: Likewise.
+ * gcc.target/i386/vararg-1.c: Likewise.
+ * gcc.target/i386/vararg-2.c: Likewise.
+ Additional add dg-compile to avoid failure due
+ missing foo symbol.
+
+ * gcc.dg/compound-literal-1.c: Fix for llp64.
+ * gcc.dg/pr32370.c: Likewise.
+ * gcc.dg/pr37561.c: Likewise.
+ * gcc.dg/pr41340.c: Likewise.
+ * gcc.dg/pr41551.c: Likewise.
+
+2010-05-25 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/44188
+ * g++.dg/debug/dwarf2/typedef3.C: New test.
+
+2010-06-06 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR c/20000
+ * c-c++-common/pr20000.c: New.
+
+2010-06-05 Fabien Chêne <fabien@gcc.gnu.org>
+
+ PR c++/44086
+ * g++.dg/init/pr44086.C: New.
+ * g++.dg/cpp0x/decltype4.C: Adjust.
+
+2010-06-05 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/43945
+ * gfortran.dg/generic_23.f03: New test.
+
+2010-06-05 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/43895
+ * gfortran.dg/alloc_comp_class_1.f90 : New test.
+
+2010-06-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/44361
+ * c-c++-common/Wunused-var-9.c: New test.
+
+2010-06-05 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/noexcept06.C: Call set_unexpected.
+
+2010-06-05 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/44322
+ * gcc.dg/c99-restrict-4.c: New test.
+
+2010-06-04 Magnus Fromreide <magfr@lysator.liu.se>
+
+ * g++.dg/cpp0x/nullptr01.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr02.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr03.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr04.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr05.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr06.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr07.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr08.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr09.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr10.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr11.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr12.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr13.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr14.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr15.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr16.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr17.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr18.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr19.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr20.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr21.C: Test nullptr_t variable.
+ * g++.dg/cpp0x/nullptr22.C: Test nullptr_t variable.
+
+2010-06-04 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/noexcept06.C: New.
+ * g++.dg/cpp0x/noexcept07.C: New.
+
+ * g++.dg/cpp0x/noexcept01.C: New.
+ * g++.dg/cpp0x/noexcept02.C: New.
+ * g++.dg/cpp0x/noexcept03.C: New.
+ * g++.dg/cpp0x/noexcept04.C: New.
+ * g++.dg/cpp0x/noexcept05.C: New.
+
+2010-06-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/44412
+ * g++.dg/warn/Wunused-var-10.C: New test.
+ * g++.dg/warn/Wunused-var-11.C: New test.
+
+ PR c++/44362
+ * c-c++-common/Wunused-var-10.c: New test.
+
+2010-06-04 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR c/25880
+ * gcc.dg/assign-warn-2.c: Update.
+ * gcc.dg/cpp/line3.c: Update.
+ * gcc.dg/c99-array-lval-8.c: Update.
+ * gcc.dg/cast-qual-2.c: Update.
+ * gcc.dg/c99-arraydecl-3.c: Update.
+ * gcc.dg/assign-warn-1.c: Update.
+ * gcc.dg/format/gcc_diag-1.c: Update.
+
+2010-06-04 Bernd Schmidt <bernds@codesourcery.com>
+
+ PR rtl-optimization/39871
+ PR rtl-optimization/40615
+ PR rtl-optimization/42500
+ PR rtl-optimization/42502
+ * gcc.target/arm/eliminate.c: New test.
+
+2010-06-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/44410
+ * g++.old-deja/g++.jason/new.C: Qualify size_t with std::.
+ * g++.old-deja/g++.other/delete3.C: Likewise.
+ * g++.old-deja/g++.other/new.C: Likewise.
+ * g++.old-deja/g++.law/operators27.C: Likewise.
+ * g++.old-deja/g++.mike/p755.C: Likewise.
+ * g++.dg/eh/new1.C: Likewise.
+ * g++.dg/init/new5.C: Likewise.
+
+2010-06-03 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * gfortran.dg/unpack_bounds_1.f90: Remove execute property.
+ * gfortran.dg/unpack_bounds_2.f90: Likewise.
+ * gfortran.dg/unpack_bounds_3.f90: Likewise.
+
+2010-06-03 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41921
+ * lib/lto.exp: Always load gcc.exp.
+ (lto-obj): For C source files invoke gcc_target_compile.
+ * g++.dg/lto/20100603-1_0.C: New testcase.
+ * g++.dg/lto/20100603-1_1.c: Likewise.
+
+2010-06-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR tree-optimization/43688
+ * gfortran.dg/pr43688.f90: New.
+
+2010-06-03 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41584
+ * gcc.dg/lto/20100603-1_0.c: New testcase.
+ * gcc.dg/lto/20100603-2_0.c: Likewise.
+ * gcc.dg/lto/20100603-3_0.c: Likewise.
+
+2010-06-02 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/44218
+ * gcc.target/powerpc/recip-1.c: New test for -mrecip support.
+ * gcc.target/powerpc/recip-2.c: Ditto.
+ * gcc.target/powerpc/recip-3.c: Ditto.
+ * gcc.target/powerpc/recip-4.c: Ditto.
+ * gcc.target/powerpc/recip-5.c: Ditto.
+ * gcc.target/powerpc/recip-6.c: Ditto.
+ * gcc.target/powerpc/recip-7.c: Ditto.
+ * gcc.target/powerpc/recip-test.h: Ditto.
+ * gcc.target/powerpc/recip-test2.h: Ditto.
+
2010-06-02 H.J. Lu <hongjiu.lu@intel.com>
* g++.dg/torture/pr44295.C (size_t): Use __SIZE_TYPE__.
diff --git a/gcc/testsuite/c-c++-common/Wunused-var-10.c b/gcc/testsuite/c-c++-common/Wunused-var-10.c
new file mode 100644
index 00000000000..16d5171d0bf
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/Wunused-var-10.c
@@ -0,0 +1,68 @@
+/* PR c++/44362 */
+/* { dg-options "-Wunused" } */
+/* { dg-do compile } */
+
+int
+f1 (int u, int v)
+{
+ int a, b, c, d, e, f, g, h, i;
+ a = u;
+ b = v;
+ c = u;
+ d = v;
+ e = u;
+ f = v;
+ g = u == 6 ? a : b;
+ h = 0 ? c : d;
+ i = 1 ? e : f;
+ return g + h + i;
+}
+
+int
+f2 (int u, int v)
+{
+ int a, b, c, d, e, f, g, h, i;
+ a = u;
+ b = v;
+ c = u;
+ d = v;
+ e = u;
+ f = v;
+ g = u == 6 ? a + 1 : b;
+ h = 0 ? c + 1 : d;
+ i = 1 ? e + 1 : f;
+ return g + h + i;
+}
+
+int
+f3 (int u, int v)
+{
+ int a, b, c, d, e, f, g, h, i;
+ a = u;
+ b = v;
+ c = u;
+ d = v;
+ e = u;
+ f = v;
+ g = u == 6 ? a : b + 1;
+ h = 0 ? c : d + 1;
+ i = 1 ? e : f + 1;
+ return g + h + i;
+}
+
+int
+f4 (int u, int v)
+{
+ int a, c, e, g, h, i;
+ long b, d, f;
+ a = u;
+ b = v;
+ c = u;
+ d = v;
+ e = u;
+ f = v;
+ g = u == 6 ? a : b;
+ h = 0 ? c : d;
+ i = 1 ? e : f;
+ return g + h + i;
+}
diff --git a/gcc/testsuite/c-c++-common/Wunused-var-11.c b/gcc/testsuite/c-c++-common/Wunused-var-11.c
new file mode 100644
index 00000000000..a59ef814938
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/Wunused-var-11.c
@@ -0,0 +1,12 @@
+/* PR c++/44443 */
+/* { dg-options "-Wunused" } */
+/* { dg-do compile } */
+
+int i;
+
+void
+f1 ()
+{
+ const int * __attribute__((unused)) a = &i;
+ const int *b __attribute__((unused)) = &i;
+}
diff --git a/gcc/testsuite/c-c++-common/Wunused-var-9.c b/gcc/testsuite/c-c++-common/Wunused-var-9.c
new file mode 100644
index 00000000000..b2cdc4510e1
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/Wunused-var-9.c
@@ -0,0 +1,80 @@
+/* { dg-options "-Wunused" } */
+/* { dg-do compile } */
+
+int f1 (int *, int);
+int f2 (int *);
+int f3 (int *);
+
+int
+f4 (int x)
+{
+ int a, n = 0;
+ int b;
+ for (a = f1 (&b, x); f2 (&b); (void) (a = f3 (&b)))
+ n++;
+ return n;
+}
+
+void
+f5 (int x)
+{
+ int a;
+ a = x;
+ (void) (a = x);
+}
+
+void
+f6 (int x)
+{
+ int a; /* { dg-warning "set but not used" } */
+ a = x;
+}
+
+void
+f7 (int x)
+{
+ int a;
+ ({ a = x; });
+}
+
+int
+f8 (int x)
+{
+ int a;
+ int b = ({ a = x; });
+ return b;
+}
+
+int v;
+
+void
+f9 (int x)
+{
+ int a;
+ ({ v++, a = x; });
+}
+
+int
+f10 (int x)
+{
+ int a;
+ int b = ({ v++, a = x; });
+ return b;
+}
+
+void
+f11 (int x)
+{
+ int a;
+ a = x;
+ ({ v++, a; });
+}
+
+int
+f12 (int x)
+{
+ int a;
+ a = x;
+ int b = ({ v++, a; });
+ return b;
+}
diff --git a/gcc/testsuite/c-c++-common/pr20000.c b/gcc/testsuite/c-c++-common/pr20000.c
new file mode 100644
index 00000000000..1fcd17877e8
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr20000.c
@@ -0,0 +1,32 @@
+/* PR c/20000 We only want to warn if the function returns
+ explicitly. We do not care about the return type. */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+int g(void) __attribute__((noreturn));
+int g2(void) __attribute__((noreturn)); /* { dg-bogus ".noreturn. function returns non-void value" } */
+void h(void) __attribute__((noreturn));
+
+
+int g(void) {
+ return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" } */
+} /* { dg-warning "'noreturn' function does return" } */
+
+int g2(void) {
+ h();
+}
+
+typedef int ft(void);
+volatile ft vg;
+volatile ft vg2;
+
+int vg(void);
+int vg2(void); /* { dg-bogus ".noreturn. function returns non-void value" } */
+
+int vg(void) {
+ return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" "" { target c } 27 } */
+} /* { dg-warning "'noreturn' function does return" "" { target c } 28 } */
+
+int vg2(void) {
+ h();
+}
diff --git a/gcc/testsuite/c-c++-common/torture/pr42834.c b/gcc/testsuite/c-c++-common/torture/pr42834.c
new file mode 100644
index 00000000000..a1ba49e46d4
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/torture/pr42834.c
@@ -0,0 +1,23 @@
+/* { dg-do run } */
+
+void __attribute__((noinline,noclone))
+foo(int *p, float *q) { __asm__ volatile ("" : : : "memory"); }
+
+int main()
+{
+ if (sizeof (int) == sizeof (float))
+ {
+ int i;
+ float f;
+ int *p;
+ /* Prevent i and f from being rewritten into SSA form. */
+ foo (&i, &f);
+ i = 0;
+ f = 1.0;
+ p = (int *)&f;
+ __builtin_memcpy (&i, p, 4);
+ if (*(float *)&i != 1.0)
+ __builtin_abort ();
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/c-c++-common/uninit-17.c b/gcc/testsuite/c-c++-common/uninit-17.c
new file mode 100644
index 00000000000..b895ac7dcd9
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/uninit-17.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -Wuninitialized" } */
+
+inline int foo(int x)
+{
+ return x;
+}
+static void bar(int a, int *ptr)
+{
+ do
+ {
+ int b; /* { dg-message "note: 'b' was declared here" } */
+ if (b < 40) {
+ ptr[0] = b; /* { dg-warning "may be used uninitialized" } */
+ }
+ b += 1;
+ ptr++;
+ }
+ while (--a != 0);
+}
+void foobar(int a, int *ptr)
+{
+ bar(foo(a), ptr);
+}
+
diff --git a/gcc/testsuite/c-c++-common/warn-ommitted-condop.c b/gcc/testsuite/c-c++-common/warn-ommitted-condop.c
new file mode 100644
index 00000000000..de92b8f2cdc
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/warn-ommitted-condop.c
@@ -0,0 +1,29 @@
+/* { dg-options "-Wparentheses" } */
+
+extern void f2 (int);
+
+void bar (int x, int y, int z)
+{
+#define T(op) f2 (x op y ? : 1)
+#define T2(op) f2 (x op y ? 2 : 1)
+
+ T(<); /* { dg-warning "omitted middle operand" } */
+ T(>); /* { dg-warning "omitted middle operand" } */
+ T(<=); /* { dg-warning "omitted middle operand" } */
+ T(>=); /* { dg-warning "omitted middle operand" } */
+ T(==); /* { dg-warning "omitted middle operand" } */
+ T(!=); /* { dg-warning "omitted middle operand" } */
+ T(||); /* { dg-warning "omitted middle operand" } */
+ T(&&); /* { dg-warning "omitted middle operand" } */
+ f2 (!x ? : 1); /* { dg-warning "omitted middle operand" } */
+ T2(<); /* { dg-bogus "omitted middle operand" } */
+ T2(>); /* { dg-bogus "omitted middle operand" } */
+ T2(==); /* { dg-bogus "omitted middle operand" } */
+ T2(||); /* { dg-bogus "omitted middle operand" } */
+ T2(&&); /* { dg-bogus "omitted middle operand" } */
+ T(+); /* { dg-bogus "omitted middle operand" } */
+ T(-); /* { dg-bogus "omitted middle operand" } */
+ T(*); /* { dg-bogus "omitted middle operand" } */
+ T(/); /* { dg-bogus "omitted middle operand" } */
+ T(^); /* { dg-bogus "omitted middle operand" } */
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype4.C b/gcc/testsuite/g++.dg/cpp0x/decltype4.C
index 23a34344e17..32fbc2b2ec2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype4.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype4.C
@@ -62,6 +62,7 @@ void wibble() {
}
struct B {
+ B () : bit(), cbit() {}
int bit : 2;
const int cbit : 3;
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted10.C b/gcc/testsuite/g++.dg/cpp0x/defaulted10.C
index d169e0c6007..64fa5f01930 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted10.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted10.C
@@ -3,12 +3,12 @@
struct A
{
- template<typename T> void foo(T) = delete; // { dg-error "previously|deleted" }
+ template<typename T> void foo(T) = delete; // { dg-error "previously|declared" }
};
template<typename T> void A::foo(T) {} // { dg-error "redefinition" }
void bar()
{
- A().foo(0); // { dg-error "used" }
+ A().foo(0); // { dg-error "use" }
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted13.C b/gcc/testsuite/g++.dg/cpp0x/defaulted13.C
index 87b8100ac77..8b23579217e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted13.C
@@ -7,22 +7,22 @@ struct NonCopyable {
};
template<>
-NonCopyable<int>::NonCopyable(NonCopyable<int> const&) = delete; // { dg-error "deleted" }
+NonCopyable<int>::NonCopyable(NonCopyable<int> const&) = delete; // { dg-error "declared" }
template<typename T>
NonCopyable<T>::NonCopyable(NonCopyable<T> const&) = default;
template<>
-NonCopyable<double>::NonCopyable(NonCopyable<double> const&) = delete; // { dg-error "deleted" }
+NonCopyable<double>::NonCopyable(NonCopyable<double> const&) = delete; // { dg-error "declared" }
int main()
{
NonCopyable<double> nc_dbl;
- NonCopyable<double> nc_dbl_cpy(nc_dbl); // { dg-error "used here" }
+ NonCopyable<double> nc_dbl_cpy(nc_dbl); // { dg-error "use" }
NonCopyable<int> nc_int;
- NonCopyable<int> nc_int_cpy(nc_int); // { dg-error "used here" }
+ NonCopyable<int> nc_int_cpy(nc_int); // { dg-error "use" }
NonCopyable<char> nc_char;
NonCopyable<char> nc_char_cpy(nc_char);
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted17.C b/gcc/testsuite/g++.dg/cpp0x/defaulted17.C
new file mode 100644
index 00000000000..79e91a0eb61
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted17.C
@@ -0,0 +1,12 @@
+// { dg-options -std=c++0x }
+
+struct A // { dg-error "const|operator=" }
+{
+ const int i;
+};
+
+int main()
+{
+ A a = { 0 };
+ a = a; // { dg-error "deleted" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted18.C b/gcc/testsuite/g++.dg/cpp0x/defaulted18.C
new file mode 100644
index 00000000000..ae055e3bc63
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted18.C
@@ -0,0 +1,9 @@
+// { dg-options "-std=c++0x" }
+
+void f(char i, int j) = delete; // { dg-message "<deleted>" }
+void f(int i, ...); // { dg-message "void f" }
+
+int main()
+{
+ f(1,1); // { dg-error "ambiguous" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted19.C b/gcc/testsuite/g++.dg/cpp0x/defaulted19.C
new file mode 100644
index 00000000000..ea33df39838
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted19.C
@@ -0,0 +1,21 @@
+// We allocate a cookie to help us run the destructor even if it's deleted.
+// { dg-options -std=c++0x }
+// { dg-do run }
+
+struct A
+{
+ ~A() = delete;
+};
+
+void *p = 0;
+void *operator new[](__SIZE_TYPE__ t)
+{
+ p = ::operator new (t);
+ return p;
+}
+
+int main()
+{
+ A* ap = new A[5];
+ return ap == p;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted2.C b/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
index ad3274a2ea9..909ebc5e6e0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
@@ -41,7 +41,7 @@ struct E
struct F
{
F() = default;
- F(const F&) = delete; // { dg-error "deleted" }
+ F(const F&) = delete; // { dg-error "declared" }
};
struct G
@@ -60,7 +60,7 @@ union U
int main()
{
F f;
- F f2(f); // { dg-error "used" }
+ F f2(f); // { dg-error "use" }
B* b = new const B; // { dg-error "uninitialized const" }
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted3.C b/gcc/testsuite/g++.dg/cpp0x/defaulted3.C
index efde415936d..5e2116b53b3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted3.C
@@ -4,7 +4,7 @@
template<class T>
struct A {
template<class U>
- bool operator==(const A<U>&) = delete; // { dg-error "deleted function" }
+ bool operator==(const A<U>&) = delete; // { dg-error "declared" }
operator bool () { return true; }
};
@@ -12,5 +12,5 @@ int main()
{
A<int> a1;
A<void> a2;
- if(a1 == a2) {} // { dg-error "used here" }
+ if(a1 == a2) {} // { dg-error "use" }
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/explicit5.C b/gcc/testsuite/g++.dg/cpp0x/explicit5.C
new file mode 100644
index 00000000000..88a47071db1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/explicit5.C
@@ -0,0 +1,25 @@
+// test for extension of DR 899 to handle template ctors
+// { dg-options "-std=c++0x" }
+// { dg-do run }
+
+int r = 1;
+
+struct C {
+ C() { }
+ template <class T = int> C(C&, T = 0) { r = 0; }
+};
+
+C c;
+
+struct A
+{
+ explicit operator C&() const { return c; }
+};
+
+int main()
+{
+ A a;
+ C c2 (a);
+
+ return r;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit-copy.C b/gcc/testsuite/g++.dg/cpp0x/implicit-copy.C
index ea680a8961b..861fe201f10 100644
--- a/gcc/testsuite/g++.dg/cpp0x/implicit-copy.C
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit-copy.C
@@ -3,13 +3,13 @@ struct S
{
S();
private:
- S(S const &&);
- S & operator=(S const &&);
+ S(S const &&); // { dg-error "" }
+ S & operator=(S const &&); // { dg-error "" }
};
void f()
{
S a;
- S b(a);
- a = b;
+ S b(a); // { dg-error "" }
+ a = b; // { dg-error "" }
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit1.C b/gcc/testsuite/g++.dg/cpp0x/implicit1.C
new file mode 100644
index 00000000000..2efbde6a93a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit1.C
@@ -0,0 +1,26 @@
+// Test for implicitly deleted destructors.
+// { dg-options "-std=c++0x" }
+// { dg-prune-output "default definition would be ill-formed" }
+// { dg-prune-output "within this context" }
+
+class C
+{
+ void operator delete (void *); // { dg-error "private" }
+public:
+ virtual ~C(); // { dg-error "overriding" }
+};
+
+struct D: C { }; // { dg-error "deleted" }
+D d; // { dg-error "deleted" }
+
+struct E
+{
+ ~E() = delete; // { dg-error "declared here" }
+};
+
+struct F
+{
+ virtual ~F(); // { dg-error "overriding" }
+};
+
+struct G: E, F { }; // { dg-error "deleted" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit2.C b/gcc/testsuite/g++.dg/cpp0x/implicit2.C
new file mode 100644
index 00000000000..f24a78838fa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit2.C
@@ -0,0 +1,33 @@
+// Test that the synthesized C copy constructor calls the A template
+// constructor and has the appropriate exception specification.
+// { dg-options -std=c++0x }
+// { dg-do run }
+
+int r = 1;
+
+struct A
+{
+ A() {}
+ A(const A&) throw () { }
+ template <class T>
+ A(T& t) { r = 0; }
+};
+
+struct B
+{
+ B() {}
+ B(B&) throw () { }
+};
+
+struct C: A, B { };
+
+#define SA(E) static_assert(E, #E)
+
+C c;
+SA (!noexcept(C(c)));
+
+int main()
+{
+ (C(c));
+ return r;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit3.C b/gcc/testsuite/g++.dg/cpp0x/implicit3.C
new file mode 100644
index 00000000000..a43eca708c0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit3.C
@@ -0,0 +1,56 @@
+// Basic runtime test for implicit move constructor
+// { dg-do run }
+// { dg-options -std=c++0x }
+
+int m;
+
+struct A
+{
+ A() = default;
+ A(A&&) { ++m; }
+ A& operator=(A&&) { ++m; return *this; }
+};
+
+struct B
+{
+ B() = default;
+ B(const B&);
+ B(B&&) { ++m; }
+ B& operator=(const B&);
+ B& operator=(B&&) { ++m; return *this; }
+};
+
+struct C
+{
+ C() = default;
+ C(C&);
+ C(C&&) { ++m; }
+ C& operator=(C&);
+ C& operator=(C&&) { ++m; return *this; }
+};
+
+struct D: public A, public B
+{
+ C c;
+ int i;
+};
+
+struct E: public A, public B
+{
+ C c;
+ int i;
+ E() = default;
+ E(E&&) = default;
+ E& operator=(E&&) = default;
+};
+
+int main()
+{
+ D d1;
+ D d2 (static_cast<D&&>(d1));
+ d1 = static_cast<D&&>(d2);
+ E e1;
+ E e2 (static_cast<E&&>(e1));
+ e1 = static_cast<E&&>(e2);
+ return m != 12;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit4.C b/gcc/testsuite/g++.dg/cpp0x/implicit4.C
new file mode 100644
index 00000000000..75606a3ce7e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit4.C
@@ -0,0 +1,20 @@
+// Test that a base with only a move constructor causes the implicit copy
+// constructor to be deleted.
+// { dg-options "-std=c++0x" }
+
+struct A
+{
+ A(); // { dg-message "A::A" }
+ A(A&&); // { dg-message "A::A" }
+};
+
+struct B: A // { dg-error "implicit|no match" }
+{
+};
+
+int main()
+{
+ B b1;
+ B b2(b1); // { dg-error "deleted function .B::B.const" }
+ B b3(static_cast<B&&>(b1));
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit5.C b/gcc/testsuite/g++.dg/cpp0x/implicit5.C
new file mode 100644
index 00000000000..f25c08530db
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit5.C
@@ -0,0 +1,19 @@
+// Test that the default B copy constructor calls the A member template
+// constructor.
+// { dg-options -std=c++0x }
+
+struct A
+{
+ A() = default;
+ A(A&&) = default;
+ template <class T>
+ A(const T& t) { t.i; } // { dg-error "no member" }
+};
+
+struct B: A { };
+
+int main()
+{
+ B b;
+ B b2(b);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index d59e5af640b..b75cc81729f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,5 +1,8 @@
// { dg-options "-std=c++0x" }
+// Just discard errors pointing at header files
+// { dg-prune-output "include" }
+
#include <vector>
#include <typeinfo>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist19.C b/gcc/testsuite/g++.dg/cpp0x/initlist19.C
index 418cddc618a..9cb197c9be2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist19.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist19.C
@@ -1,8 +1,10 @@
// { dg-options "-std=c++0x" }
+// Allow other errors, too
+// { dg-prune-output "error" }
+
void f(double);
int main()
{
f({{1}}); // { dg-error "too many braces" }
- // { dg-error "" "" { target *-*-* } 6 } allow other errors, too
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist39.C b/gcc/testsuite/g++.dg/cpp0x/initlist39.C
new file mode 100644
index 00000000000..a6dd1ec43d1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist39.C
@@ -0,0 +1,15 @@
+// { dg-options -std=c++0x }
+
+struct A { int i; };
+
+void f (const A &);
+void f (A &&);
+
+void g (A, int);
+void g (A, double);
+
+int main()
+{
+ f ( { 1 } );
+ g ( { 1 }, 1 );
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist40.C b/gcc/testsuite/g++.dg/cpp0x/initlist40.C
new file mode 100644
index 00000000000..f2703602c9e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist40.C
@@ -0,0 +1,12 @@
+// { dg-options "-std=c++0x" }
+
+struct A
+{
+ explicit A(int = 42);
+};
+
+int main()
+{
+ A a1 = { };
+ A a2 = { 24 }; // { dg-error "explicit" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist9.C b/gcc/testsuite/g++.dg/cpp0x/initlist9.C
index 2bc2d1782f9..d596b391508 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist9.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist9.C
@@ -8,7 +8,7 @@ struct b
b() = default;
~b() = default;
b& operator=(const b&) = delete;
- b(const b&) = delete; // { dg-error "deleted" }
+ b(const b&) = delete; // { dg-error "declared" }
b(bool _t): t (_t) { }
};
@@ -19,7 +19,7 @@ int main()
b tst1 = { false };
// copy initialization.
- b tst2 = false; // { dg-error "used here" }
+ b tst2 = false; // { dg-error "use" }
// direct list initialization
b tst3 { false };
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ctor-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ctor-neg.C
index c38f2955d46..76ed7445f45 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ctor-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ctor-neg.C
@@ -3,7 +3,7 @@
void f()
{
int i;
- auto lam = [i]{}; // { dg-message "note" }
+ auto lam = [i]{}; // { dg-message "" }
decltype(lam) lam2 = { 1 }; // { dg-error "" "not an aggregate" }
decltype(lam) lam3; // { dg-error "" "deleted default ctor" }
lam3 = lam; // { dg-error "" "deleted assignment op" }
@@ -12,7 +12,7 @@ void f()
template <class T>
void g(T i)
{
- auto lam = [i]{}; // { dg-message "note" }
+ auto lam = [i]{}; // { dg-message "" }
decltype(lam) lam2 = { 1 }; // { dg-error "" "not an aggregate" }
decltype(lam) lam3; // { dg-error "" "deleted default ctor" }
lam3 = lam; // { dg-error "" "deleted assignment op" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C
index 4037331ee37..f4766691eec 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C
@@ -5,7 +5,7 @@
struct A
{
A();
- A(const A& a) = delete; // { dg-error "deleted" }
+ A(const A& a) = delete; // { dg-error "declared" }
};
int main()
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C
index 3d53c139fe6..dab53f1276e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C
@@ -3,14 +3,14 @@
struct A {
A();
- A(const A&) = delete; // { dg-error "deleted function" }
+ A(const A&) = delete; // { dg-error "declared" }
};
template <class T>
void f()
{
T t;
- [t] { return 0; }; // { dg-error "used here" }
+ [t] { return 0; }; // { dg-error "use" }
}
int main()
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept01.C b/gcc/testsuite/g++.dg/cpp0x/noexcept01.C
new file mode 100644
index 00000000000..f314684eae8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept01.C
@@ -0,0 +1,83 @@
+// Test for noexcept-expression
+// { dg-options "-std=c++0x -O2" }
+
+#include <typeinfo>
+
+#define SA(X) static_assert(X, #X)
+
+void f();
+void g() throw();
+SA(noexcept(g()));
+SA(!noexcept(f()));
+SA(!noexcept(throw 1));
+SA(noexcept(42));
+
+struct A
+{
+ virtual ~A();
+};
+
+struct B: public A
+{
+ virtual ~B();
+};
+
+A* ap;
+
+struct C { };
+C* cp;
+
+SA (noexcept (dynamic_cast<B*>(ap)));
+SA (!noexcept (dynamic_cast<B&>(*ap)));
+SA (!noexcept (typeid (*ap)));
+SA (noexcept (typeid (*cp)));
+
+SA (!noexcept (true ? 1 : throw 1));
+SA (!noexcept (true || true ? 1 : throw 1));
+
+SA (noexcept (C()));
+
+struct D
+{
+ D() throw();
+};
+
+SA (noexcept (D()));
+
+struct E
+{
+ E() throw();
+ ~E();
+};
+
+SA (!noexcept (E()));
+
+struct F
+{
+ virtual void f();
+};
+
+SA (noexcept (F()));
+
+struct G
+{
+ G() = default;
+ ~G() = default;
+};
+
+SA (noexcept (G()));
+
+template <class T, bool b>
+void tf()
+{
+ SA (noexcept (T()) == b);
+}
+
+template void tf<int,true>();
+template void tf<E, false>();
+
+// Make sure that noexcept uses the declared exception-specification, not
+// any knowledge we might have about whether or not the function really
+// throws.
+void h() { }
+SA(!noexcept(h()));
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept02.C b/gcc/testsuite/g++.dg/cpp0x/noexcept02.C
new file mode 100644
index 00000000000..be6fa00dd09
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept02.C
@@ -0,0 +1,52 @@
+// Test for noexcept-specification
+// { dg-options "-std=c++0x" }
+
+#define SA(X) static_assert(X, #X)
+
+void f();
+void f() noexcept(false);
+void f() noexcept(1 == 0);
+void f();
+
+SA(!noexcept(f()));
+
+void g() throw (int);
+void g() noexcept(false); // { dg-error "previous declaration" }
+void g(); // { dg-error "different exception" }
+
+void h() throw();
+void h() noexcept;
+void h() throw();
+void h() noexcept;
+
+template <class T>
+void g (T) noexcept(noexcept(T())); // { dg-error "previous declaration" }
+template <class T>
+void g (T) noexcept(noexcept(T(0))); // { dg-error "different exception" }
+
+template <class T>
+void f (T) noexcept(noexcept(T()) && noexcept(T()));
+template <class T>
+void f (T) noexcept(noexcept(T()) && noexcept(T()));
+template <class T>
+void f2(T a) noexcept (noexcept (f (a)));
+
+struct A { A(); };
+SA(noexcept(f(1)));
+SA(!noexcept(f(A())));
+SA(noexcept(f2(1)));
+SA(!noexcept(f2(A())));
+
+template <class... Ts>
+void f3(Ts... ts) noexcept (noexcept (f(ts...)));
+
+SA(noexcept(f3(1)));
+SA(!noexcept(f3(A())));
+
+template <class T1, class T2>
+void f (T1, T2) noexcept(noexcept(T1(), T2()));
+
+SA(noexcept(f3(1,1)));
+SA(!noexcept(f3(1,A())));
+SA(!noexcept(f3(A(),1)));
+SA(!noexcept(f3(A(),A())));
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept03.C b/gcc/testsuite/g++.dg/cpp0x/noexcept03.C
new file mode 100644
index 00000000000..c759f6fb21d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept03.C
@@ -0,0 +1,68 @@
+// Runtime test for noexcept-specification.
+// { dg-options "-std=c++0x -Wnoexcept" }
+// { dg-do run }
+
+#include <exception>
+#include <cstdlib>
+
+void my_terminate ()
+{
+ std::exit (0);
+}
+
+void my_unexpected ()
+{
+ throw;
+}
+
+void g() { throw 1; }
+void (*p)() = g;
+void f () noexcept (false)
+{
+ p();
+}
+
+template <class T>
+void f(T) noexcept (noexcept (T())) // { dg-warning "false" }
+{
+ p();
+}
+
+template <class T>
+void f2(T a) noexcept (noexcept (f (a)))
+{
+ f(a);
+}
+
+struct A { A() { } }; // { dg-warning "does not throw" }
+
+// throw(int) overrides noexcept(false) in either order.
+void h() throw (int, std::bad_exception);
+void h() noexcept (false)
+{
+ throw 1.0;
+}
+
+void i() noexcept (false);
+void i() throw (int, std::bad_exception)
+{
+ throw 1.0;
+}
+
+int main()
+{
+ // noexcept(false) allows throw.
+ try { f(); } catch (int) { }
+ // noexcept(noexcept(A())) == noexcept(false).
+ try { f(A()); } catch (int) { }
+ try { f2(A()); } catch (int) { }
+
+ std::set_unexpected (my_unexpected);
+ try { h(); } catch (std::bad_exception) { }
+ try { i(); } catch (std::bad_exception) { }
+
+ std::set_terminate (my_terminate);
+ // noexcept(noexcept(int())) == noexcept(true).
+ try { f2(1); } catch (...) { }
+ return 1;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept04.C b/gcc/testsuite/g++.dg/cpp0x/noexcept04.C
new file mode 100644
index 00000000000..8df818610f5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept04.C
@@ -0,0 +1,31 @@
+// Make sure that we call terminate when a noexcept spec is violated.
+// The function pointers are there to make sure that
+// the compiler doesn't get clever about optimizing the calls based on
+// knowledge about the called functions.
+
+// { dg-options "-std=c++0x" }
+// { dg-do run }
+
+#include <exception>
+#include <cstdlib>
+
+void my_terminate ()
+{
+ std::exit (0);
+}
+
+void g() { throw 1; }
+void (*p1)() = g;
+void f() noexcept { p1(); }
+void (*p2)() = f;
+void h() { p2(); }
+
+int main()
+{
+ std::set_terminate (my_terminate);
+
+ try { h(); }
+ catch (int) { }
+
+ return 1;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept05.C b/gcc/testsuite/g++.dg/cpp0x/noexcept05.C
new file mode 100644
index 00000000000..6acea432736
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept05.C
@@ -0,0 +1,19 @@
+// Make sure that we force an LSDA for a noexcept spec so
+// that the personality routine will call terminate. Also check that we
+// optimize away the EH cleanup for var because the personality routine
+// will call terminate before unwinding: there should not be an EH region
+// (i.e. LEHB/LEHE labels) around the call to g().
+
+// { dg-final { scan-assembler-not "_ZSt9terminatev" } }
+// { dg-final { scan-assembler-not "EHB" } }
+// { dg-final { scan-assembler "LSDA" } }
+
+// { dg-options "-std=c++0x" }
+
+struct A { ~A(); };
+void g();
+void f() noexcept
+{
+ A var;
+ g();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept06.C b/gcc/testsuite/g++.dg/cpp0x/noexcept06.C
new file mode 100644
index 00000000000..3babdffdad5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept06.C
@@ -0,0 +1,30 @@
+// Test that checking of a nothrow specification uses the one on the
+// definition.
+// { dg-options "-std=c++0x" }
+// { dg-do run }
+
+#include <exception>
+#include <cstdlib>
+
+void my_unexpected ()
+{
+ std::abort ();
+}
+void my_terminate ()
+{
+ std::exit (0);
+}
+
+void f() throw();
+void f() noexcept
+{
+ throw 1;
+}
+
+int main()
+{
+ std::set_unexpected (my_unexpected);
+ std::set_terminate (my_terminate);
+ f();
+ return 1;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept07.C b/gcc/testsuite/g++.dg/cpp0x/noexcept07.C
new file mode 100644
index 00000000000..0a5773fc86b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept07.C
@@ -0,0 +1,25 @@
+// Test that checking of a nothrow specification uses the one on the
+// definition.
+// { dg-options "-std=c++0x" }
+// { dg-do run }
+
+#include <exception>
+#include <cstdlib>
+
+void my_unexpected ()
+{
+ std::exit (0);
+}
+
+void f() noexcept;
+void f() throw()
+{
+ throw 1;
+}
+
+int main()
+{
+ std::set_unexpected (my_unexpected);
+ f();
+ return 1;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept08.C b/gcc/testsuite/g++.dg/cpp0x/noexcept08.C
new file mode 100644
index 00000000000..c45033246eb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept08.C
@@ -0,0 +1,56 @@
+// { dg-options "-std=c++0x" }
+// { dg-prune-output "overriding" }
+
+struct A
+{
+ virtual void f();
+ virtual void g() throw();
+ virtual void h() noexcept;
+ virtual void i() noexcept(false);
+ virtual void j() throw(int);
+};
+
+struct B: A
+{
+ void f() noexcept;
+ void g() noexcept;
+ void h() noexcept;
+ void i() noexcept;
+ void j() noexcept;
+};
+
+struct C: A
+{
+ void f() throw();
+ void g() throw();
+ void h() throw();
+ void i() throw();
+ void j() throw();
+};
+
+struct D: A
+{
+ void f() noexcept(false);
+ void g() noexcept(false); // { dg-error "looser" }
+ void h() noexcept(false); // { dg-error "looser" }
+ void i() noexcept(false);
+ void j() noexcept(false); // compatible; treated as throw(int)
+};
+
+struct E: A
+{
+ void f() throw(int);
+ void g() throw(int); // { dg-error "looser" }
+ void h() throw(int); // { dg-error "looser" }
+ void i() throw(int);
+ void j() throw(int);
+};
+
+struct F: A
+{
+ void f();
+ void g(); // { dg-error "looser" }
+ void h(); // { dg-error "looser" }
+ void i();
+ void j(); // { dg-error "looser" }
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/not_special.C b/gcc/testsuite/g++.dg/cpp0x/not_special.C
index f94b82a0c1a..6d73bd086ca 100644
--- a/gcc/testsuite/g++.dg/cpp0x/not_special.C
+++ b/gcc/testsuite/g++.dg/cpp0x/not_special.C
@@ -1,11 +1,9 @@
// I, Howard Hinnant, hereby place this code in the public domain.
-// Test that move constructor and move assignement are not special.
-// That is, their presence should not inhibit compiler generated
-// copy ctor or assignment. Rather they should overload with the
-// compiler generated special members.
+// Test that move constructor and move assignement are special.
+// That is, their presence should inhibit compiler generated
+// copy ctor or assignment.
-// { dg-do run }
// { dg-options "-std=c++0x" }
#include <assert.h>
@@ -30,8 +28,8 @@ struct derived
: base
{
derived() {}
- derived(derived&&) {}
- derived& operator=(derived&&) {return *this;}
+ derived(derived&&) {} // { dg-error "argument 1" }
+ derived& operator=(derived&&) {return *this;} // { dg-error "argument 1" }
};
int test1()
@@ -39,11 +37,11 @@ int test1()
derived d;
derived d2(static_cast<derived&&>(d)); // should not call base::(const base&)
assert(copy == 0);
- derived d3(d); // should call base::(const base&)
+ derived d3(d); // { dg-error "lvalue" }
assert(copy == 1);
d2 = static_cast<derived&&>(d); // should not call base::operator=
assert(assign == 0);
- d3 = d; // should call base::operator=
+ d3 = d; // { dg-error "lvalue" }
assert(assign == 1);
return 0;
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr01.C b/gcc/testsuite/g++.dg/cpp0x/nullptr01.C
index 8de877bab50..de3860c9ea4 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr01.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr01.C
@@ -6,3 +6,5 @@
char* const cp1 = nullptr;
char* const cp2 = __null;
char* const cp3 = 0;
+decltype(nullptr) mynull = 0;
+char* const cp4 = mynull;
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr02.C b/gcc/testsuite/g++.dg/cpp0x/nullptr02.C
index 2272152cf73..80977cb2f00 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr02.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr02.C
@@ -8,3 +8,9 @@ typedef decltype(nullptr) nullptr_t;
const nullptr_t np1 = nullptr;
const nullptr_t np2 = __null;
const nullptr_t np3 = 0;
+const nullptr_t np4 = np1;
+const nullptr_t np5 = np2;
+const nullptr_t np6 = np3;
+const nullptr_t np7 = np4;
+const nullptr_t np8 = np5;
+const nullptr_t np9 = np6;
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr03.C b/gcc/testsuite/g++.dg/cpp0x/nullptr03.C
index 1c9e521bd88..b6df8963740 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr03.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr03.C
@@ -3,4 +3,7 @@
// Test assignment to int
-const int n = nullptr; // { dg-error "cannot convert " }
+const int n1 = nullptr; // { dg-error "cannot convert " }
+decltype(nullptr) mynull = 0;
+const int n2 = mynull; // { dg-error "cannot convert " }
+
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr04.C b/gcc/testsuite/g++.dg/cpp0x/nullptr04.C
index 28e37156f8c..be581bcb6e3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr04.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr04.C
@@ -3,11 +3,15 @@
// Test cast to int
-#define unsigned
-__extension__ typedef __SIZE_TYPE__ ssize_t;
-#undef unsigned
+__extension__ typedef __INTPTR_TYPE__ intptr_t;
const int n4 = static_cast<const int>(nullptr); // { dg-error "invalid static_cast " }
const short int n5 = reinterpret_cast<short int>(nullptr); // { dg-error "loses precision" }
-const ssize_t n6 = reinterpret_cast<ssize_t>(nullptr);
-const ssize_t n7 = (ssize_t)nullptr;
+const intptr_t n6 = reinterpret_cast<intptr_t>(nullptr);
+const intptr_t n7 = (intptr_t)nullptr;
+
+decltype(nullptr) mynull = 0;
+const int n8 = static_cast<const int>(mynull); // { dg-error "invalid static_cast " }
+const short int n9 = reinterpret_cast<short int>(mynull); // { dg-error "loses precision" }
+const intptr_t n10 = reinterpret_cast<intptr_t>(mynull);
+const intptr_t n11 = (intptr_t)mynull;
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr05.C b/gcc/testsuite/g++.dg/cpp0x/nullptr05.C
index 7c3f8b7093d..22a8b51c1c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr05.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr05.C
@@ -10,3 +10,5 @@ typedef void (F::*pmf)();
const pmf pmf1 = nullptr;
const pmf pmf2 = __null;
const pmf pmf3 = 0;
+decltype(nullptr) mynull = 0;
+const pmf pmf4 = mynull;
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr06.C b/gcc/testsuite/g++.dg/cpp0x/nullptr06.C
index 5dea1fbf171..c50bb9bc113 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr06.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr06.C
@@ -10,4 +10,6 @@ char* const cp1 = nullptr;
void fun()
{
assert_true(cp1 == nullptr);
+ decltype(nullptr) mynull = 0;
+ assert_true(cp1 == mynull);
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr07.C b/gcc/testsuite/g++.dg/cpp0x/nullptr07.C
index cebed8862df..64d442be331 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr07.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr07.C
@@ -9,4 +9,7 @@ void fun()
if( n == nullptr ); // { dg-error "invalid operands of types " }
const int m = 1;
if( m == nullptr ); // { dg-error "invalid operands of types " }
+ decltype(nullptr) mynull = 0;
+ if( n == mynull ); // { dg-error "invalid operands of types " }
+ if( m == mynull ); // { dg-error "invalid operands of types " }
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr08.C b/gcc/testsuite/g++.dg/cpp0x/nullptr08.C
index d7d9169f5a1..1e5db278ddf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr08.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr08.C
@@ -8,4 +8,6 @@
void fun()
{
assert_true(nullptr ? false : true);
+ decltype(nullptr) mynull = 0;
+ assert_true(mynull ? false : true);
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr09.C b/gcc/testsuite/g++.dg/cpp0x/nullptr09.C
index a42821cbfa6..b35a3c3207d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr09.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr09.C
@@ -6,4 +6,6 @@
void fun()
{
if( nullptr == 0 );
+ decltype(nullptr) mynull = 0;
+ if( mynull == 0 );
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr10.C b/gcc/testsuite/g++.dg/cpp0x/nullptr10.C
index cd131864a33..fa32267ec02 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr10.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr10.C
@@ -7,4 +7,8 @@ void fun()
{
nullptr = 0; // { dg-error "lvalue required as left operand" }
nullptr + 2; // { dg-error "invalid operands of types " }
+ decltype(nullptr) mynull = 0;
+ mynull = 1; // { dg-error "cannot convert" }
+ mynull = 0;
+ mynull + 2; // { dg-error "invalid operands of types " }
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr11.C b/gcc/testsuite/g++.dg/cpp0x/nullptr11.C
index 85402a1a2a3..5907816a847 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr11.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr11.C
@@ -14,4 +14,27 @@ void fun()
assert_false(nullptr > nullptr);
assert_true(nullptr <= nullptr);
assert_true(nullptr >= nullptr);
+
+ decltype(nullptr) mynull = 0;
+
+ assert_true(mynull == nullptr);
+ assert_false(mynull != nullptr);
+ assert_false(mynull < nullptr);
+ assert_false(mynull > nullptr);
+ assert_true(mynull <= nullptr);
+ assert_true(mynull >= nullptr);
+
+ assert_true(nullptr == mynull);
+ assert_false(nullptr != mynull);
+ assert_false(nullptr < mynull);
+ assert_false(nullptr > mynull);
+ assert_true(nullptr <= mynull);
+ assert_true(nullptr >= mynull);
+
+ assert_true(mynull == mynull);
+ assert_false(mynull != mynull);
+ assert_false(mynull < mynull);
+ assert_false(mynull > mynull);
+ assert_true(mynull <= mynull);
+ assert_true(mynull >= mynull);
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr12.C b/gcc/testsuite/g++.dg/cpp0x/nullptr12.C
index f68652c999e..1713259f103 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr12.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr12.C
@@ -4,3 +4,5 @@
// Test sizeof
static_assert(sizeof(nullptr) == sizeof(void*), "sizeof(nullptr) is wrong");
+const decltype(nullptr) mynull = 0;
+static_assert(sizeof(mynull) == sizeof(void*), "sizeof(nullptr) is wrong");
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr13.C b/gcc/testsuite/g++.dg/cpp0x/nullptr13.C
index 633e971feca..a9377584c56 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr13.C
@@ -5,7 +5,12 @@
#include <typeinfo>
+#define assert_true(b) do { char c[2 * bool(b) - 1]; } while(0)
+
void fun()
{
typeid(nullptr);
+ const decltype(nullptr) mynull = 0;
+ typeid(mynull);
+ assert_true(typeid(nullptr) == typeid(mynull));
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr14.C b/gcc/testsuite/g++.dg/cpp0x/nullptr14.C
index 0493bcca006..4c4627b541b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr14.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr14.C
@@ -20,4 +20,6 @@ void test_f()
//
type_equal<char*>(f(nullptr));
type_equal<int>(f(0));
+ decltype(nullptr) mynull = 0;
+ type_equal<char*>(f(mynull));
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr15.C b/gcc/testsuite/g++.dg/cpp0x/nullptr15.C
index abb45f4e937..67d9d4a2311 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr15.C
@@ -18,4 +18,7 @@ void test_g()
//
g(nullptr); // { dg-error "no matching function for call to " }
type_equal<float*>(g((float*)nullptr));
+ decltype(nullptr) mynull = 0;
+ g(mynull); // { dg-error "no matching function for call to " }
+ type_equal<float*>(g((float*)mynull));
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr16.C b/gcc/testsuite/g++.dg/cpp0x/nullptr16.C
index 7561b21cfe3..0ec0b6a12b6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr16.C
@@ -19,4 +19,7 @@ void test_h()
type_equal<int>(h(0));
type_equal<nullptr_t>(h(nullptr));
type_equal<float*>(h((float*)nullptr));
+ nullptr_t mynull = 0;
+ type_equal<nullptr_t>(h(mynull));
+ type_equal<float*>(h((float*)mynull));
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr17.C b/gcc/testsuite/g++.dg/cpp0x/nullptr17.C
index acedbae3787..2e580557bc3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr17.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr17.C
@@ -18,4 +18,6 @@ void test_i()
{
// Overload to bool, not int
type_equal<bool>(i(nullptr));
+ decltype(nullptr) mynull = 0;
+ type_equal<bool>(i(mynull));
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr18.C b/gcc/testsuite/g++.dg/cpp0x/nullptr18.C
index 192b646efb4..b8fa38c718d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr18.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr18.C
@@ -16,4 +16,6 @@ bool j( bool );
void test_j()
{
type_equal<char*>(j(nullptr));
+ decltype(nullptr) mynull = 0;
+ type_equal<char*>(j(mynull));
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index a959b00786f..3e58406770d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -10,8 +10,11 @@ int main()
{
char buf1[64];
char buf2[64];
+ char buf3[64];
std::sprintf(buf1, "%p", (void*)0);
std::sprintf(buf2, "%p", nullptr);
- return std::strcmp(buf1, buf2) != 0;
+ decltype(nullptr) mynull = 0;
+ std::sprintf(buf3, "%p", nullptr);
+ return std::strcmp(buf1, buf2) != 0 || std::strcmp(buf1, buf3) != 0;
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr21.C b/gcc/testsuite/g++.dg/cpp0x/nullptr21.C
index 84c34dd1e0a..c30cb3c8b6d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr21.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr21.C
@@ -24,4 +24,21 @@ int main()
} catch (...) {
printf("Test 1 Fail");
} // { dg-output "Test 1 OK" }
+
+ nullptr_t mynull = 0;
+ try {
+ throw mynull;
+ } catch (void*) {
+ printf("Test 2 Fail");
+ } catch (bool) {
+ printf("Test 2 Fail");
+ } catch (int) {
+ printf("Test 2 Fail");
+ } catch (long int) {
+ printf("Test 2 Fail");
+ } catch (nullptr_t) {
+ printf("Test 2 OK");
+ } catch (...) {
+ printf("Test 2 Fail");
+ } // { dg-output "Test 2 OK" }
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr22.C b/gcc/testsuite/g++.dg/cpp0x/nullptr22.C
index 13cb8e3aab1..d800f9869d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr22.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr22.C
@@ -13,4 +13,8 @@ void f()
f2(nullptr); // { dg-warning "null argument where non-null required " }
f3("x", "y", __null); // { dg-warning "missing sentinel in function call" }
f3("x", "y", nullptr);
+ decltype(nullptr) mynull = 0;
+ f1("%p", mynull);
+ f2(mynull); // { dg-warning "null argument where non-null required " }
+ f3("x", "y", mynull);
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index beb8acb5a50..2765b5f3c30 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,3 @@
-// { dg-do "run" }
// { dg-options "-std=c++0x" }
// PR c++/33235
#include <cassert>
@@ -9,19 +8,19 @@ int move_assign = 0;
struct base2
{
base2() {}
- base2(base2&&) {++move_construct;}
- base2& operator=(base2&&) {++move_assign; return *this;}
+ base2(base2&&) {++move_construct;} // { dg-error "argument 1" }
+ base2& operator=(base2&&) {++move_assign; return *this;} // { dg-error "argument 1" }
};
int test2()
{
base2 b;
- base2 b2(b);
+ base2 b2(b); // { dg-error "lvalue" }
assert(move_construct == 0);
base2 b3(static_cast<base2&&>(b));
base2 b4 = static_cast<base2&&>(b);
assert(move_construct == 2);
- b = b2;
+ b = b2; // { dg-error "lvalue" }
assert(move_assign == 0);
b = static_cast<base2&&>(b2);
assert(move_assign == 1);
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv1n.C b/gcc/testsuite/g++.dg/cpp0x/rv1n.C
index b7b9b6e25ce..5224d3eb70e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv1n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv1n.C
@@ -20,7 +20,7 @@ struct eight {char x[8];};
struct A
{
A();
- A(const volatile A&&);
+ A(const volatile A&&); // { dg-error "argument 1" }
};
A source();
@@ -35,9 +35,9 @@ one sink_1_1( A&); // { dg-error "" }
int test1_1()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "cannot bind" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "cannot bind" }
sink_1_1(ca); // { dg-error "invalid initialization" }
sink_1_1(va); // { dg-error "invalid initialization" }
sink_1_1(cva); // { dg-error "invalid initialization" }
@@ -53,9 +53,9 @@ two sink_1_2(const A&); // { dg-error "" }
int test1_2()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_1_2(va); // { dg-error "invalid initialization" }
sink_1_2(cva); // { dg-error "invalid initialization" }
sink_1_2(v_source()); // { dg-error "invalid initialization" }
@@ -68,9 +68,9 @@ three sink_1_3(volatile A&); // { dg-error "" }
int test1_3()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_1_3(ca); // { dg-error "invalid initialization" }
sink_1_3(cva); // { dg-error "invalid initialization" }
sink_1_3(source()); // { dg-error "invalid initialization" }
@@ -85,9 +85,9 @@ four sink_1_4(const volatile A&); // { dg-error "" }
int test1_4()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_1_4(source()); // { dg-error "invalid initialization" }
sink_1_4(c_source()); // { dg-error "invalid initialization" }
sink_1_4(v_source()); // { dg-error "invalid initialization" }
@@ -100,9 +100,9 @@ five sink_1_5( A&&); // { dg-error "" }
int test1_5()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_1_5(a); // { dg-error "lvalue" }
sink_1_5(ca); // { dg-error "invalid initialization" }
sink_1_5(va); // { dg-error "invalid initialization" }
@@ -118,9 +118,9 @@ six sink_1_6(const A&&); // { dg-error "" }
int test1_6()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_1_6(a); // { dg-error "lvalue" }
sink_1_6(ca); // { dg-error "lvalue" }
sink_1_6(va); // { dg-error "invalid initialization" }
@@ -135,9 +135,9 @@ seven sink_1_7(volatile A&&); // { dg-error "" }
int test1_7()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_1_7(a); // { dg-error "lvalue" }
sink_1_7(ca); // { dg-error "invalid initialization" }
sink_1_7(va); // { dg-error "lvalue" }
@@ -152,9 +152,9 @@ eight sink_1_8(const volatile A&&); // { dg-error "" }
int test1_8()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_1_8(a); // { dg-error "lvalue" }
sink_1_8(ca); // { dg-error "lvalue" }
sink_1_8(va); // { dg-error "lvalue" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv1p.C b/gcc/testsuite/g++.dg/cpp0x/rv1p.C
index b2770ef33d5..4990165a465 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv1p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv1p.C
@@ -35,9 +35,9 @@ one sink_1_1( A&);
int test1_1()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_1_1(a)) == 1> t1;
return 0;
}
@@ -47,9 +47,9 @@ two sink_1_2(const A&);
int test1_2()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_1_2(a)) == 2> t1;
sa<sizeof(sink_1_2(ca)) == 2> t2;
sa<sizeof(sink_1_2(source())) == 2> t5;
@@ -62,9 +62,9 @@ three sink_1_3(volatile A&);
int test1_3()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_1_3(a)) == 3> t1;
sa<sizeof(sink_1_3(va)) == 3> t3;
return 0;
@@ -75,9 +75,9 @@ four sink_1_4(const volatile A&);
int test1_4()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_1_4(a)) == 4> t1;
sa<sizeof(sink_1_4(ca)) == 4> t2;
sa<sizeof(sink_1_4(va)) == 4> t3;
@@ -90,9 +90,9 @@ five sink_1_5( A&&);
int test1_5()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_1_5(source())) == 5> t5;
return 0;
}
@@ -102,9 +102,9 @@ six sink_1_6(const A&&);
int test1_6()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_1_6(source())) == 6> t5;
sa<sizeof(sink_1_6(c_source())) == 6> t6;
return 0;
@@ -115,9 +115,9 @@ seven sink_1_7(volatile A&&);
int test1_7()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_1_7(source())) == 7> t5;
sa<sizeof(sink_1_7(v_source())) == 7> t7;
return 0;
@@ -128,9 +128,9 @@ eight sink_1_8(const volatile A&&);
int test1_8()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_1_8(source())) == 8> t5;
sa<sizeof(sink_1_8(c_source())) == 8> t6;
sa<sizeof(sink_1_8(v_source())) == 8> t7;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv2n.C b/gcc/testsuite/g++.dg/cpp0x/rv2n.C
index 5eee82c4bcf..a5c51778e34 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv2n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv2n.C
@@ -20,7 +20,7 @@ struct eight {char x[8];};
struct A
{
A();
- A(const volatile A&&);
+ A(const volatile A&&); // { dg-error "argument 1" }
};
A source();
@@ -36,9 +36,9 @@ two sink_2_12(const A&); // { dg-message "note|argument" }
int test2_12()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_12(va); // { dg-error "no match" }
sink_2_12(cva); // { dg-error "no match" }
sink_2_12(v_source()); // { dg-error "no match" }
@@ -52,9 +52,9 @@ three sink_2_13(volatile A&); // { dg-message "note|argument" }
int test2_13()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_13(ca); // { dg-error "no match" }
sink_2_13(cva); // { dg-error "no match" }
sink_2_13(source()); // { dg-error "no match" }
@@ -70,9 +70,9 @@ four sink_2_14(const volatile A&); // { dg-message "note|argument" }
int test2_14()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_14(source()); // { dg-error "no match" }
sink_2_14(c_source()); // { dg-error "no match" }
sink_2_14(v_source()); // { dg-error "no match" }
@@ -86,9 +86,9 @@ five sink_2_15( A&&); // { dg-message "note|argument" }
int test2_15()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_15(ca); // { dg-error "no match" }
sink_2_15(va); // { dg-error "no match" }
sink_2_15(cva); // { dg-error "no match" }
@@ -104,9 +104,9 @@ six sink_2_16(const A&&); // { dg-message "note|argument" }
int test2_16()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_16(ca); // { dg-error "lvalue" }
sink_2_16(va); // { dg-error "no match" }
sink_2_16(cva); // { dg-error "no match" }
@@ -121,9 +121,9 @@ seven sink_2_17(volatile A&&); // { dg-message "note|argument" }
int test2_17()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_17(ca); // { dg-error "no match" }
sink_2_17(va); // { dg-error "lvalue" }
sink_2_17(cva); // { dg-error "no match" }
@@ -138,9 +138,9 @@ eight sink_2_18(const volatile A&&); // { dg-error "argument" }
int test2_18()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_18(ca); // { dg-error "lvalue" }
sink_2_18(va); // { dg-error "lvalue" }
sink_2_18(cva); // { dg-error "lvalue" }
@@ -152,9 +152,9 @@ three sink_2_23(volatile A&); // { dg-message "note|argument" }
int test2_23()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_23(a); // { dg-error "ambiguous" }
sink_2_23(cva); // { dg-error "no match" }
sink_2_23(v_source()); // { dg-error "no match" }
@@ -168,9 +168,9 @@ four sink_2_24(const volatile A&); // { dg-message "note|argument" }
int test2_24()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_24(v_source()); // { dg-error "no match" }
sink_2_24(cv_source()); // { dg-error "no match" }
return 0;
@@ -182,9 +182,9 @@ four sink_2_34(const volatile A&); // { dg-message "note|argument" }
int test2_34()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_34(source()); // { dg-error "no match" }
sink_2_34(c_source()); // { dg-error "no match" }
sink_2_34(v_source()); // { dg-error "no match" }
@@ -198,9 +198,9 @@ five sink_2_25( A&&); // { dg-message "note|argument" }
int test2_25()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_25(va); // { dg-error "no match" }
sink_2_25(cva); // { dg-error "no match" }
sink_2_25(v_source()); // { dg-error "no match" }
@@ -214,9 +214,9 @@ six sink_2_26(const A&&); // { dg-message "note|argument" }
int test2_26()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_26(va); // { dg-error "no match" }
sink_2_26(cva); // { dg-error "no match" }
sink_2_26(v_source()); // { dg-error "no match" }
@@ -230,9 +230,9 @@ seven sink_2_27(volatile A&&); // { dg-message "note|argument" }
int test2_27()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_27(va); // { dg-error "lvalue" }
sink_2_27(cva); // { dg-error "no match" }
sink_2_27(cv_source()); // { dg-error "no match" }
@@ -245,9 +245,9 @@ eight sink_2_28(const volatile A&&); // { dg-error "argument" }
int test2_28()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_28(va); // { dg-error "lvalue" }
sink_2_28(cva); // { dg-error "lvalue" }
}
@@ -258,9 +258,9 @@ five sink_2_35( A&&); // { dg-message "note|argument" }
int test2_35()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_35(ca); // { dg-error "no match" }
sink_2_35(cva); // { dg-error "no match" }
sink_2_35(c_source()); // { dg-error "no match" }
@@ -275,9 +275,9 @@ six sink_2_36(const A&&); // { dg-message "note|argument" }
int test2_36()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_36(ca); // { dg-error "lvalue" }
sink_2_36(cva); // { dg-error "no match" }
sink_2_36(v_source()); // { dg-error "no match" }
@@ -291,9 +291,9 @@ seven sink_2_37(volatile A&&); // { dg-message "note|argument" }
int test2_37()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_37(ca); // { dg-error "no match" }
sink_2_37(cva); // { dg-error "no match" }
sink_2_37(c_source()); // { dg-error "no match" }
@@ -307,9 +307,9 @@ eight sink_2_38(const volatile A&&); // { dg-error "argument" }
int test2_38()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_38(ca); // { dg-error "lvalue" }
sink_2_38(cva); // { dg-error "lvalue" }
}
@@ -320,9 +320,9 @@ five sink_2_45( A&&); // { dg-message "note|argument" }
int test2_45()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_45(c_source()); // { dg-error "no match" }
sink_2_45(v_source()); // { dg-error "no match" }
sink_2_45(cv_source()); // { dg-error "no match" }
@@ -335,9 +335,9 @@ six sink_2_46(const A&&); // { dg-message "note|argument" }
int test2_46()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_46(v_source()); // { dg-error "no match" }
sink_2_46(cv_source()); // { dg-error "no match" }
return 0;
@@ -349,9 +349,9 @@ seven sink_2_47(volatile A&&); // { dg-message "note|argument" }
int test2_47()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_47(c_source()); // { dg-error "no match" }
sink_2_47(cv_source()); // { dg-error "no match" }
return 0;
@@ -363,9 +363,9 @@ six sink_2_56(const A&&); // { dg-message "note|argument" }
int test2_56()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_56(a); // { dg-error "lvalue" }
sink_2_56(ca); // { dg-error "lvalue" }
sink_2_56(va); // { dg-error "no match" }
@@ -381,9 +381,9 @@ seven sink_2_57(volatile A&&); // { dg-message "note|argument" }
int test2_57()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_57(a); // { dg-error "lvalue" }
sink_2_57(va); // { dg-error "lvalue" }
sink_2_57(ca); // { dg-error "no match" }
@@ -399,9 +399,9 @@ eight sink_2_58(const volatile A&&); // { dg-error "argument" }
int test2_58()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_58(a); // { dg-error "lvalue" }
sink_2_58(ca); // { dg-error "lvalue" }
sink_2_58(va); // { dg-error "lvalue" }
@@ -414,9 +414,9 @@ seven sink_2_67(volatile A&&); // { dg-message "note|argument" }
int test2_67()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_67(a); // { dg-error "ambiguous" }
sink_2_67(ca); // { dg-error "lvalue" }
sink_2_67(va); // { dg-error "lvalue" }
@@ -432,9 +432,9 @@ eight sink_2_68(const volatile A&&); // { dg-error "argument" }
int test2_68()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_68(a); // { dg-error "lvalue" }
sink_2_68(ca); // { dg-error "lvalue" }
sink_2_68(va); // { dg-error "lvalue" }
@@ -447,9 +447,9 @@ eight sink_2_78(const volatile A&&); // { dg-error "argument" }
int test2_78()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_2_78(a); // { dg-error "lvalue" }
sink_2_78(ca); // { dg-error "lvalue" }
sink_2_78(va); // { dg-error "lvalue" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv2p.C b/gcc/testsuite/g++.dg/cpp0x/rv2p.C
index 61c4fb046b6..4ed9238a1a1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv2p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv2p.C
@@ -36,9 +36,9 @@ two sink_2_12(const A&);
int test2_12()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_12(a)) == 1> t1;
sa<sizeof(sink_2_12(ca)) == 2> t2;
sa<sizeof(sink_2_12(source())) == 2> t5;
@@ -52,9 +52,9 @@ three sink_2_13(volatile A&);
int test2_13()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_13(a)) == 1> t1;
sa<sizeof(sink_2_13(va)) == 3> t3;
return 0;
@@ -66,9 +66,9 @@ four sink_2_14(const volatile A&);
int test2_14()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_14(a)) == 1> t1;
sa<sizeof(sink_2_14(ca)) == 4> t2;
sa<sizeof(sink_2_14(va)) == 4> t3;
@@ -82,9 +82,9 @@ five sink_2_15( A&&);
int test2_15()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_15(a)) == 1> t1;
sa<sizeof(sink_2_15(source())) == 5> t5;
return 0;
@@ -96,9 +96,9 @@ six sink_2_16(const A&&);
int test2_16()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_16(a)) == 1> t1;
sa<sizeof(sink_2_16(source())) == 6> t5;
sa<sizeof(sink_2_16(c_source())) == 6> t6;
@@ -111,9 +111,9 @@ seven sink_2_17(volatile A&&);
int test2_17()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_17(a)) == 1> t1;
sa<sizeof(sink_2_17(source())) == 7> t5;
sa<sizeof(sink_2_17(v_source())) == 7> t7;
@@ -126,9 +126,9 @@ eight sink_2_18(const volatile A&&);
int test2_18()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_18(a)) == 1> t1;
sa<sizeof(sink_2_18(source())) == 8> t5;
sa<sizeof(sink_2_18(c_source())) == 8> t6;
@@ -143,9 +143,9 @@ three sink_2_23(volatile A&);
int test2_23()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_23(ca)) == 2> t2;
sa<sizeof(sink_2_23(va)) == 3> t3;
sa<sizeof(sink_2_23(source())) == 2> t5;
@@ -159,9 +159,9 @@ four sink_2_24(const volatile A&);
int test2_24()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_24(a)) == 2> t1;
sa<sizeof(sink_2_24(ca)) == 2> t2;
sa<sizeof(sink_2_24(va)) == 4> t3;
@@ -179,9 +179,9 @@ five sink_2_25( A&&);
int test2_25()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_25(a)) == 2> t1;
sa<sizeof(sink_2_25(ca)) == 2> t2;
sa<sizeof(sink_2_25(source())) == 5> t5;
@@ -195,9 +195,9 @@ six sink_2_26(const A&&);
int test2_26()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_26(a)) == 2> t1;
sa<sizeof(sink_2_26(ca)) == 2> t2;
sa<sizeof(sink_2_26(source())) == 6> t5;
@@ -211,9 +211,9 @@ seven sink_2_27(volatile A&&);
int test2_27()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_27(a)) == 2> t1;
sa<sizeof(sink_2_27(ca)) == 2> t2;
sa<sizeof(sink_2_27(source())) == 7> t5;
@@ -228,9 +228,9 @@ eight sink_2_28(const volatile A&&);
int test2_28()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_28(a)) == 2> t1;
sa<sizeof(sink_2_28(ca)) == 2> t2;
sa<sizeof(sink_2_28(source())) == 8> t5;
@@ -246,9 +246,9 @@ four sink_2_34(const volatile A&);
int test2_34()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_34(a)) == 3> t1;
sa<sizeof(sink_2_34(ca)) == 4> t2;
sa<sizeof(sink_2_34(va)) == 3> t3;
@@ -266,9 +266,9 @@ five sink_2_35( A&&);
int test2_35()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_35(a)) == 3> t1;
sa<sizeof(sink_2_35(va)) == 3> t3;
sa<sizeof(sink_2_35(source())) == 5> t5;
@@ -281,9 +281,9 @@ six sink_2_36(const A&&);
int test2_36()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_36(a)) == 3> t1;
sa<sizeof(sink_2_36(va)) == 3> t3;
sa<sizeof(sink_2_36(source())) == 6> t5;
@@ -297,9 +297,9 @@ seven sink_2_37(volatile A&&);
int test2_37()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_37(a)) == 3> t1;
sa<sizeof(sink_2_37(va)) == 3> t3;
sa<sizeof(sink_2_37(source())) == 7> t5;
@@ -313,9 +313,9 @@ eight sink_2_38(const volatile A&&);
int test2_38()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_38(a)) == 3> t1;
sa<sizeof(sink_2_38(va)) == 3> t3;
sa<sizeof(sink_2_38(source())) == 8> t5;
@@ -331,9 +331,9 @@ five sink_2_45( A&&);
int test2_45()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_45(a)) == 4> t1;
sa<sizeof(sink_2_45(ca)) == 4> t2;
sa<sizeof(sink_2_45(va)) == 4> t3;
@@ -351,9 +351,9 @@ six sink_2_46(const A&&);
int test2_46()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_46(a)) == 4> t1;
sa<sizeof(sink_2_46(ca)) == 4> t2;
sa<sizeof(sink_2_46(va)) == 4> t3;
@@ -371,9 +371,9 @@ seven sink_2_47(volatile A&&);
int test2_47()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_47(a)) == 4> t1;
sa<sizeof(sink_2_47(ca)) == 4> t2;
sa<sizeof(sink_2_47(va)) == 4> t3;
@@ -391,9 +391,9 @@ eight sink_2_48(const volatile A&&);
int test2_48()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_48(a)) == 4> t1;
sa<sizeof(sink_2_48(ca)) == 4> t2;
sa<sizeof(sink_2_48(va)) == 4> t3;
@@ -411,9 +411,9 @@ six sink_2_56(const A&&);
int test2_56()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_56(source())) == 5> t5;
sa<sizeof(sink_2_56(c_source())) == 6> t6;
return 0;
@@ -425,9 +425,9 @@ seven sink_2_57(volatile A&&);
int test2_57()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_57(source())) == 5> t5;
sa<sizeof(sink_2_57(v_source())) == 7> t7;
return 0;
@@ -439,9 +439,9 @@ eight sink_2_58(const volatile A&&);
int test2_58()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_58(source())) == 5> t5;
sa<sizeof(sink_2_58(c_source())) == 8> t6;
sa<sizeof(sink_2_58(v_source())) == 8> t7;
@@ -455,9 +455,9 @@ seven sink_2_67(volatile A&&);
int test2_67()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_67(c_source())) == 6> t6;
sa<sizeof(sink_2_67(v_source())) == 7> t7;
return 0;
@@ -469,9 +469,9 @@ eight sink_2_68(const volatile A&&);
int test2_68()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_68(source())) == 6> t5;
sa<sizeof(sink_2_68(c_source())) == 6> t6;
sa<sizeof(sink_2_68(v_source())) == 8> t7;
@@ -485,9 +485,9 @@ eight sink_2_78(const volatile A&&);
int test2_78()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_2_78(source())) == 7> t5;
sa<sizeof(sink_2_78(c_source())) == 8> t6;
sa<sizeof(sink_2_78(v_source())) == 7> t7;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv3n.C b/gcc/testsuite/g++.dg/cpp0x/rv3n.C
index 0c208ab6ed0..cacbdb395e7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv3n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv3n.C
@@ -20,7 +20,7 @@ struct eight {char x[8];};
struct A
{
A();
- A(const volatile A&&);
+ A(const volatile A&&); // { dg-error "argument 1" }
};
A source();
@@ -37,9 +37,9 @@ three sink_3_123(volatile A&); // { dg-message "note" }
int test3_123()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_123(cva); // { dg-error "no match" }
sink_3_123(v_source()); // { dg-error "no match" }
sink_3_123(cv_source()); // { dg-error "no match" }
@@ -57,9 +57,9 @@ four sink_3_124(const volatile A&); // { dg-message "note" }
int test3_124()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_124(v_source()); // { dg-error "no match" }
sink_3_124(cv_source()); // { dg-error "no match" }
return 0;
@@ -68,9 +68,9 @@ int test3_124()
int test3_125()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_125(va); // { dg-error "no match" }
sink_3_125(cva); // { dg-error "no match" }
sink_3_125(v_source()); // { dg-error "no match" }
@@ -85,9 +85,9 @@ six sink_3_126(const A&&); // { dg-message "note" }
int test3_126()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_126(va); // { dg-error "no match" }
sink_3_126(cva); // { dg-error "no match" }
sink_3_126(v_source()); // { dg-error "no match" }
@@ -102,9 +102,9 @@ seven sink_3_127(volatile A&&); // { dg-message "" }
int test3_127()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_127(va); // { dg-error "lvalue" }
sink_3_127(cva); // { dg-error "no match" }
sink_3_127(cv_source()); // { dg-error "no match" }
@@ -118,9 +118,9 @@ eight sink_3_128(const volatile A&&); // { dg-message "" }
int test3_128()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_128(va); // { dg-error "lvalue" }
sink_3_128(cva); // { dg-error "lvalue" }
@@ -133,9 +133,9 @@ four sink_3_134(const volatile A&); // { dg-message "note" }
int test3_134()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_134(source()); // { dg-error "no match" }
sink_3_134(c_source()); // { dg-error "no match" }
sink_3_134(v_source()); // { dg-error "no match" }
@@ -150,9 +150,9 @@ five sink_3_135( A&&); // { dg-message "note" }
int test3_135()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_135(ca); // { dg-error "no match" }
sink_3_135(cva); // { dg-error "no match" }
sink_3_135(c_source()); // { dg-error "no match" }
@@ -168,9 +168,9 @@ six sink_3_136(const A&&); // { dg-message "" }
int test3_136()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_136(ca); // { dg-error "lvalue" }
sink_3_136(cva); // { dg-error "no match" }
sink_3_136(v_source()); // { dg-error "no match" }
@@ -185,9 +185,9 @@ seven sink_3_137(volatile A&&); // { dg-message "note" }
int test3_137()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_137(ca); // { dg-error "no match" }
sink_3_137(cva); // { dg-error "no match" }
sink_3_137(c_source()); // { dg-error "no match" }
@@ -202,9 +202,9 @@ eight sink_3_138(const volatile A&&); // { dg-message "" }
int test3_138()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_138(ca); // { dg-error "lvalue" }
sink_3_138(cva); // { dg-error "lvalue" }
return 0;
@@ -217,9 +217,9 @@ five sink_3_145( A&&); // { dg-message "note" }
int test3_145()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_145(c_source()); // { dg-error "no match" }
sink_3_145(v_source()); // { dg-error "no match" }
sink_3_145(cv_source()); // { dg-error "no match" }
@@ -233,9 +233,9 @@ six sink_3_146(const A&&); // { dg-message "note" }
int test3_146()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_146(v_source()); // { dg-error "no match" }
sink_3_146(cv_source()); // { dg-error "no match" }
return 0;
@@ -248,9 +248,9 @@ seven sink_3_147(volatile A&&); // { dg-message "note" }
int test3_147()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_147(c_source()); // { dg-error "no match" }
sink_3_147(cv_source()); // { dg-error "no match" }
return 0;
@@ -263,9 +263,9 @@ six sink_3_156(const A&&); // { dg-message "" }
int test3_156()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_156(ca); // { dg-error "lvalue" }
sink_3_156(va); // { dg-error "no match" }
sink_3_156(cva); // { dg-error "no match" }
@@ -281,9 +281,9 @@ seven sink_3_157(volatile A&&); // { dg-message "" }
int test3_157()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_157(ca); // { dg-error "no match" }
sink_3_157(va); // { dg-error "lvalue" }
sink_3_157(cva); // { dg-error "no match" }
@@ -299,9 +299,9 @@ eight sink_3_158(const volatile A&&); // { dg-message "" }
int test3_158()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_158(ca); // { dg-error "lvalue" }
sink_3_158(va); // { dg-error "lvalue" }
sink_3_158(cva); // { dg-error "lvalue" }
@@ -315,9 +315,9 @@ seven sink_3_167(volatile A&&); // { dg-message "" }
int test3_167()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_167(ca); // { dg-error "lvalue" }
sink_3_167(va); // { dg-error "lvalue" }
sink_3_167(cva); // { dg-error "no match" }
@@ -333,9 +333,9 @@ eight sink_3_168(const volatile A&&); // { dg-message "" }
int test3_168()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_168(ca); // { dg-error "lvalue" }
sink_3_168(va); // { dg-error "lvalue" }
sink_3_168(cva); // { dg-error "lvalue" }
@@ -349,9 +349,9 @@ eight sink_3_178(const volatile A&&); // { dg-message "" }
int test3_178()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_178(ca); // { dg-error "lvalue" }
sink_3_178(va); // { dg-error "lvalue" }
sink_3_178(cva); // { dg-error "lvalue" }
@@ -365,9 +365,9 @@ four sink_3_234(const volatile A&); // { dg-message "note" }
int test3_234()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_234(a); // { dg-error "ambiguous" }
sink_3_234(v_source()); // { dg-error "no match" }
sink_3_234(cv_source()); // { dg-error "no match" }
@@ -381,9 +381,9 @@ five sink_3_235( A&&); // { dg-message "note" }
int test3_235()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_235(a); // { dg-error "ambiguous" }
sink_3_235(cva); // { dg-error "no match" }
sink_3_235(v_source()); // { dg-error "no match" }
@@ -398,9 +398,9 @@ six sink_3_236(const A&&); // { dg-message "note" }
int test3_236()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_236(a); // { dg-error "ambiguous" }
sink_3_236(cva); // { dg-error "no match" }
sink_3_236(v_source()); // { dg-error "no match" }
@@ -415,9 +415,9 @@ seven sink_3_237(volatile A&&); // { dg-message "note" }
int test3_237()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_237(a); // { dg-error "ambiguous" }
sink_3_237(cva); // { dg-error "no match" }
sink_3_237(cv_source()); // { dg-error "no match" }
@@ -431,9 +431,9 @@ eight sink_3_238(const volatile A&&); // { dg-message "" }
int test3_238()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_238(a); // { dg-error "ambiguous" }
sink_3_238(cva); // { dg-error "lvalue" }
return 0;
@@ -446,9 +446,9 @@ five sink_3_245( A&&); // { dg-message "note" }
int test3_245()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_245(v_source()); // { dg-error "no match" }
sink_3_245(cv_source()); // { dg-error "no match" }
return 0;
@@ -461,9 +461,9 @@ six sink_3_246(const A&&); // { dg-message "note" }
int test3_246()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_246(v_source()); // { dg-error "no match" }
sink_3_246(cv_source()); // { dg-error "no match" }
return 0;
@@ -476,9 +476,9 @@ seven sink_3_247(volatile A&&); // { dg-message "note" }
int test3_247()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_247(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -490,9 +490,9 @@ six sink_3_256(const A&&); // { dg-message "note" }
int test3_256()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_256(va); // { dg-error "no match" }
sink_3_256(cva); // { dg-error "no match" }
sink_3_256(v_source()); // { dg-error "no match" }
@@ -507,9 +507,9 @@ seven sink_3_257(volatile A&&); // { dg-message "" }
int test3_257()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_257(va); // { dg-error "lvalue" }
sink_3_257(cva); // { dg-error "no match" }
sink_3_257(cv_source()); // { dg-error "no match" }
@@ -523,9 +523,9 @@ eight sink_3_258(const volatile A&&); // { dg-message "" }
int test3_258()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_258(va); // { dg-error "lvalue" }
sink_3_258(cva); // { dg-error "lvalue" }
return 0;
@@ -538,9 +538,9 @@ seven sink_3_267(volatile A&&); // { dg-message "" }
int test3_267()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_267(va); // { dg-error "lvalue" }
sink_3_267(cva); // { dg-error "no match" }
sink_3_267(source()); // { dg-error "ambiguous" }
@@ -555,9 +555,9 @@ eight sink_3_268(const volatile A&&); // { dg-message "" }
int test3_268()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_268(va); // { dg-error "lvalue" }
sink_3_268(cva); // { dg-error "lvalue" }
return 0;
@@ -570,9 +570,9 @@ eight sink_3_278(const volatile A&&); // { dg-message "" }
int test3_278()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_278(va); // { dg-error "lvalue" }
sink_3_278(cva); // { dg-error "lvalue" }
return 0;
@@ -585,9 +585,9 @@ five sink_3_345( A&&); // { dg-message "note" }
int test3_345()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_345(c_source()); // { dg-error "no match" }
sink_3_345(v_source()); // { dg-error "no match" }
sink_3_345(cv_source()); // { dg-error "no match" }
@@ -601,9 +601,9 @@ six sink_3_346(const A&&); // { dg-message "note" }
int test3_346()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_346(v_source()); // { dg-error "no match" }
sink_3_346(cv_source()); // { dg-error "no match" }
return 0;
@@ -616,9 +616,9 @@ seven sink_3_347(volatile A&&); // { dg-message "note" }
int test3_347()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_347(c_source()); // { dg-error "no match" }
sink_3_347(cv_source()); // { dg-error "no match" }
return 0;
@@ -631,9 +631,9 @@ six sink_3_356(const A&&); // { dg-message "" }
int test3_356()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_356(ca); // { dg-error "lvalue" }
sink_3_356(cva); // { dg-error "no match" }
sink_3_356(v_source()); // { dg-error "no match" }
@@ -648,9 +648,9 @@ seven sink_3_357(volatile A&&); // { dg-message "note" }
int test3_357()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_357(ca); // { dg-error "no match" }
sink_3_357(cva); // { dg-error "no match" }
sink_3_357(c_source()); // { dg-error "no match" }
@@ -665,9 +665,9 @@ eight sink_3_358(const volatile A&&); // { dg-message "" }
int test3_358()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_358(ca); // { dg-error "lvalue" }
sink_3_358(cva); // { dg-error "lvalue" }
return 0;
@@ -680,9 +680,9 @@ seven sink_3_367(volatile A&&); // { dg-message "note" }
int test3_367()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_367(ca); // { dg-error "lvalue" }
sink_3_367(cva); // { dg-error "no match" }
sink_3_367(source()); // { dg-error "ambiguous" }
@@ -697,9 +697,9 @@ eight sink_3_368(const volatile A&&); // { dg-message "" }
int test3_368()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_368(ca); // { dg-error "lvalue" }
sink_3_368(cva); // { dg-error "lvalue" }
return 0;
@@ -712,9 +712,9 @@ eight sink_3_378(const volatile A&&); // { dg-message "" }
int test3_378()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_378(ca); // { dg-error "lvalue" }
sink_3_378(cva); // { dg-error "lvalue" }
return 0;
@@ -727,9 +727,9 @@ six sink_3_456(const A&&); // { dg-message "note" }
int test3_456()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_456(v_source()); // { dg-error "no match" }
sink_3_456(cv_source()); // { dg-error "no match" }
return 0;
@@ -742,9 +742,9 @@ seven sink_3_457(volatile A&&); // { dg-message "note" }
int test3_457()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_457(c_source()); // { dg-error "no match" }
sink_3_457(cv_source()); // { dg-error "no match" }
return 0;
@@ -757,9 +757,9 @@ seven sink_3_467(volatile A&&); // { dg-message "note" }
int test3_467()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_467(source()); // { dg-error "ambiguous" }
sink_3_467(cv_source()); // { dg-error "no match" }
return 0;
@@ -772,9 +772,9 @@ seven sink_3_567(volatile A&&); // { dg-message "" }
int test3_567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_567(a); // { dg-error "lvalue" }
sink_3_567(ca); // { dg-error "lvalue" }
sink_3_567(va); // { dg-error "lvalue" }
@@ -790,9 +790,9 @@ eight sink_3_568(const volatile A&&); // { dg-message "" }
int test3_568()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_568(a); // { dg-error "lvalue" }
sink_3_568(ca); // { dg-error "lvalue" }
sink_3_568(va); // { dg-error "lvalue" }
@@ -807,9 +807,9 @@ eight sink_3_578(const volatile A&&); // { dg-message "" }
int test3_578()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_578(a); // { dg-error "lvalue" }
sink_3_578(ca); // { dg-error "lvalue" }
sink_3_578(va); // { dg-error "lvalue" }
@@ -824,9 +824,9 @@ eight sink_3_678(const volatile A&&); // { dg-message "" }
int test3_678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_3_678(a); // { dg-error "ambiguous" }
sink_3_678(ca); // { dg-error "lvalue" }
sink_3_678(va); // { dg-error "lvalue" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv3p.C b/gcc/testsuite/g++.dg/cpp0x/rv3p.C
index 5ab171f2655..5f59920bba6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv3p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv3p.C
@@ -37,9 +37,9 @@ three sink_3_123(volatile A&);
int test3_123()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_123(a)) == 1> t1;
sa<sizeof(sink_3_123(ca)) == 2> t2;
sa<sizeof(sink_3_123(va)) == 3> t3;
@@ -55,9 +55,9 @@ four sink_3_124(const volatile A&);
int test3_124()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_124(a)) == 1> t1;
sa<sizeof(sink_3_124(ca)) == 2> t2;
sa<sizeof(sink_3_124(va)) == 4> t3;
@@ -74,9 +74,9 @@ five sink_3_125( A&&);
int test3_125()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_125(a)) == 1> t1;
sa<sizeof(sink_3_125(ca)) == 2> t2;
sa<sizeof(sink_3_125(source())) == 5> t5;
@@ -91,9 +91,9 @@ six sink_3_126(const A&&);
int test3_126()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_126(a)) == 1> t1;
sa<sizeof(sink_3_126(ca)) == 2> t2;
sa<sizeof(sink_3_126(source())) == 6> t5;
@@ -108,9 +108,9 @@ seven sink_3_127(volatile A&&);
int test3_127()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_127(a)) == 1> t1;
sa<sizeof(sink_3_127(ca)) == 2> t2;
sa<sizeof(sink_3_127(source())) == 7> t5;
@@ -126,9 +126,9 @@ eight sink_3_128(const volatile A&&);
int test3_128()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_128(a)) == 1> t1;
sa<sizeof(sink_3_128(ca)) == 2> t2;
sa<sizeof(sink_3_128(source())) == 8> t5;
@@ -145,9 +145,9 @@ four sink_3_134(const volatile A&);
int test3_134()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_134(a)) == 1> t1;
sa<sizeof(sink_3_134(ca)) == 4> t2;
sa<sizeof(sink_3_134(va)) == 3> t3;
@@ -162,9 +162,9 @@ five sink_3_135( A&&);
int test3_135()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_135(a)) == 1> t1;
sa<sizeof(sink_3_135(va)) == 3> t3;
sa<sizeof(sink_3_135(source())) == 5> t5;
@@ -178,9 +178,9 @@ six sink_3_136(const A&&);
int test3_136()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_136(a)) == 1> t1;
sa<sizeof(sink_3_136(va)) == 3> t3;
sa<sizeof(sink_3_136(source())) == 6> t5;
@@ -195,9 +195,9 @@ seven sink_3_137(volatile A&&);
int test3_137()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_137(a)) == 1> t1;
sa<sizeof(sink_3_137(va)) == 3> t3;
sa<sizeof(sink_3_137(source())) == 7> t5;
@@ -212,9 +212,9 @@ eight sink_3_138(const volatile A&&);
int test3_138()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_138(a)) == 1> t1;
sa<sizeof(sink_3_138(va)) == 3> t3;
sa<sizeof(sink_3_138(source())) == 8> t5;
@@ -231,9 +231,9 @@ five sink_3_145( A&&);
int test3_145()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_145(a)) == 1> t1;
sa<sizeof(sink_3_145(ca)) == 4> t2;
sa<sizeof(sink_3_145(va)) == 4> t3;
@@ -249,9 +249,9 @@ six sink_3_146(const A&&);
int test3_146()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_146(a)) == 1> t1;
sa<sizeof(sink_3_146(ca)) == 4> t2;
sa<sizeof(sink_3_146(va)) == 4> t3;
@@ -268,9 +268,9 @@ seven sink_3_147(volatile A&&);
int test3_147()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_147(a)) == 1> t1;
sa<sizeof(sink_3_147(ca)) == 4> t2;
sa<sizeof(sink_3_147(va)) == 4> t3;
@@ -287,9 +287,9 @@ eight sink_3_148(const volatile A&&);
int test3_148()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_148(a)) == 1> t1;
sa<sizeof(sink_3_148(ca)) == 4> t2;
sa<sizeof(sink_3_148(va)) == 4> t3;
@@ -308,9 +308,9 @@ six sink_3_156(const A&&);
int test3_156()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_156(a)) == 1> t1;
sa<sizeof(sink_3_156(source())) == 5> t5;
sa<sizeof(sink_3_156(c_source())) == 6> t6;
@@ -324,9 +324,9 @@ seven sink_3_157(volatile A&&);
int test3_157()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_157(a)) == 1> t1;
sa<sizeof(sink_3_157(source())) == 5> t5;
sa<sizeof(sink_3_157(v_source())) == 7> t7;
@@ -340,9 +340,9 @@ eight sink_3_158(const volatile A&&);
int test3_158()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_158(a)) == 1> t1;
sa<sizeof(sink_3_158(source())) == 5> t5;
sa<sizeof(sink_3_158(c_source())) == 8> t6;
@@ -358,9 +358,9 @@ seven sink_3_167(volatile A&&);
int test3_167()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_167(a)) == 1> t1;
sa<sizeof(sink_3_167(c_source())) == 6> t6;
sa<sizeof(sink_3_167(v_source())) == 7> t7;
@@ -374,9 +374,9 @@ eight sink_3_168(const volatile A&&);
int test3_168()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_168(a)) == 1> t1;
sa<sizeof(sink_3_168(source())) == 6> t5;
sa<sizeof(sink_3_168(c_source())) == 6> t6;
@@ -392,9 +392,9 @@ eight sink_3_178(const volatile A&&);
int test3_178()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_178(a)) == 1> t1;
sa<sizeof(sink_3_178(source())) == 7> t5;
sa<sizeof(sink_3_178(c_source())) == 8> t6;
@@ -410,9 +410,9 @@ four sink_3_234(const volatile A&);
int test3_234()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_234(ca)) == 2> t2;
sa<sizeof(sink_3_234(va)) == 3> t3;
sa<sizeof(sink_3_234(cva)) == 4> t4;
@@ -428,9 +428,9 @@ five sink_3_235( A&&);
int test3_235()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_235(ca)) == 2> t2;
sa<sizeof(sink_3_235(va)) == 3> t3;
sa<sizeof(sink_3_235(source())) == 5> t5;
@@ -445,9 +445,9 @@ six sink_3_236(const A&&);
int test3_236()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_236(ca)) == 2> t2;
sa<sizeof(sink_3_236(va)) == 3> t3;
sa<sizeof(sink_3_236(source())) == 6> t5;
@@ -462,9 +462,9 @@ seven sink_3_237(volatile A&&);
int test3_237()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_237(ca)) == 2> t2;
sa<sizeof(sink_3_237(va)) == 3> t3;
sa<sizeof(sink_3_237(source())) == 7> t5;
@@ -480,9 +480,9 @@ eight sink_3_238(const volatile A&&);
int test3_238()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_238(ca)) == 2> t2;
sa<sizeof(sink_3_238(va)) == 3> t3;
sa<sizeof(sink_3_238(source())) == 8> t5;
@@ -499,9 +499,9 @@ five sink_3_245( A&&);
int test3_245()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_245(a)) == 2> t1;
sa<sizeof(sink_3_245(ca)) == 2> t2;
sa<sizeof(sink_3_245(va)) == 4> t3;
@@ -518,9 +518,9 @@ six sink_3_246(const A&&);
int test3_246()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_246(a)) == 2> t1;
sa<sizeof(sink_3_246(ca)) == 2> t2;
sa<sizeof(sink_3_246(va)) == 4> t3;
@@ -537,9 +537,9 @@ seven sink_3_247(volatile A&&);
int test3_247()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_247(a)) == 2> t1;
sa<sizeof(sink_3_247(ca)) == 2> t2;
sa<sizeof(sink_3_247(va)) == 4> t3;
@@ -557,9 +557,9 @@ eight sink_3_248(const volatile A&&);
int test3_248()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_248(a)) == 2> t1;
sa<sizeof(sink_3_248(ca)) == 2> t2;
sa<sizeof(sink_3_248(va)) == 4> t3;
@@ -578,9 +578,9 @@ six sink_3_256(const A&&);
int test3_256()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_256(a)) == 2> t1;
sa<sizeof(sink_3_256(ca)) == 2> t2;
sa<sizeof(sink_3_256(source())) == 5> t5;
@@ -595,9 +595,9 @@ seven sink_3_257(volatile A&&);
int test3_257()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_257(a)) == 2> t1;
sa<sizeof(sink_3_257(ca)) == 2> t2;
sa<sizeof(sink_3_257(source())) == 5> t5;
@@ -613,9 +613,9 @@ eight sink_3_258(const volatile A&&);
int test3_258()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_258(a)) == 2> t1;
sa<sizeof(sink_3_258(ca)) == 2> t2;
sa<sizeof(sink_3_258(source())) == 5> t5;
@@ -632,9 +632,9 @@ seven sink_3_267(volatile A&&);
int test3_267()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_267(a)) == 2> t1;
sa<sizeof(sink_3_267(ca)) == 2> t2;
sa<sizeof(sink_3_267(c_source())) == 6> t6;
@@ -649,9 +649,9 @@ eight sink_3_268(const volatile A&&);
int test3_268()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_268(a)) == 2> t1;
sa<sizeof(sink_3_268(ca)) == 2> t2;
sa<sizeof(sink_3_268(source())) == 6> t5;
@@ -668,9 +668,9 @@ eight sink_3_278(const volatile A&&);
int test3_278()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_278(a)) == 2> t1;
sa<sizeof(sink_3_278(ca)) == 2> t2;
sa<sizeof(sink_3_278(source())) == 7> t5;
@@ -687,9 +687,9 @@ five sink_3_345( A&&);
int test3_345()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_345(a)) == 3> t1;
sa<sizeof(sink_3_345(ca)) == 4> t2;
sa<sizeof(sink_3_345(va)) == 3> t3;
@@ -705,9 +705,9 @@ six sink_3_346(const A&&);
int test3_346()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_346(a)) == 3> t1;
sa<sizeof(sink_3_346(ca)) == 4> t2;
sa<sizeof(sink_3_346(va)) == 3> t3;
@@ -724,9 +724,9 @@ seven sink_3_347(volatile A&&);
int test3_347()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_347(a)) == 3> t1;
sa<sizeof(sink_3_347(ca)) == 4> t2;
sa<sizeof(sink_3_347(va)) == 3> t3;
@@ -743,9 +743,9 @@ eight sink_3_348(const volatile A&&);
int test3_348()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_348(a)) == 3> t1;
sa<sizeof(sink_3_348(ca)) == 4> t2;
sa<sizeof(sink_3_348(va)) == 3> t3;
@@ -764,9 +764,9 @@ six sink_3_356(const A&&);
int test3_356()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_356(a)) == 3> t1;
sa<sizeof(sink_3_356(va)) == 3> t3;
sa<sizeof(sink_3_356(source())) == 5> t5;
@@ -781,9 +781,9 @@ seven sink_3_357(volatile A&&);
int test3_357()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_357(a)) == 3> t1;
sa<sizeof(sink_3_357(va)) == 3> t3;
sa<sizeof(sink_3_357(source())) == 5> t5;
@@ -798,9 +798,9 @@ eight sink_3_358(const volatile A&&);
int test3_358()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_358(a)) == 3> t1;
sa<sizeof(sink_3_358(va)) == 3> t3;
sa<sizeof(sink_3_358(source())) == 5> t5;
@@ -817,9 +817,9 @@ seven sink_3_367(volatile A&&);
int test3_367()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_367(a)) == 3> t1;
sa<sizeof(sink_3_367(va)) == 3> t3;
sa<sizeof(sink_3_367(c_source())) == 6> t6;
@@ -834,9 +834,9 @@ eight sink_3_368(const volatile A&&);
int test3_368()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_368(a)) == 3> t1;
sa<sizeof(sink_3_368(va)) == 3> t3;
sa<sizeof(sink_3_368(source())) == 6> t5;
@@ -853,9 +853,9 @@ eight sink_3_378(const volatile A&&);
int test3_378()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_378(a)) == 3> t1;
sa<sizeof(sink_3_378(va)) == 3> t3;
sa<sizeof(sink_3_378(source())) == 7> t5;
@@ -872,9 +872,9 @@ six sink_3_456(const A&&);
int test3_456()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_456(a)) == 4> t1;
sa<sizeof(sink_3_456(ca)) == 4> t2;
sa<sizeof(sink_3_456(va)) == 4> t3;
@@ -891,9 +891,9 @@ seven sink_3_457(volatile A&&);
int test3_457()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_457(a)) == 4> t1;
sa<sizeof(sink_3_457(ca)) == 4> t2;
sa<sizeof(sink_3_457(va)) == 4> t3;
@@ -910,9 +910,9 @@ eight sink_3_458(const volatile A&&);
int test3_458()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_458(a)) == 4> t1;
sa<sizeof(sink_3_458(ca)) == 4> t2;
sa<sizeof(sink_3_458(va)) == 4> t3;
@@ -931,9 +931,9 @@ seven sink_3_467(volatile A&&);
int test3_467()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_467(a)) == 4> t1;
sa<sizeof(sink_3_467(ca)) == 4> t2;
sa<sizeof(sink_3_467(va)) == 4> t3;
@@ -950,9 +950,9 @@ eight sink_3_468(const volatile A&&);
int test3_468()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_468(a)) == 4> t1;
sa<sizeof(sink_3_468(ca)) == 4> t2;
sa<sizeof(sink_3_468(va)) == 4> t3;
@@ -971,9 +971,9 @@ eight sink_3_478(const volatile A&&);
int test3_478()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_478(a)) == 4> t1;
sa<sizeof(sink_3_478(ca)) == 4> t2;
sa<sizeof(sink_3_478(va)) == 4> t3;
@@ -992,9 +992,9 @@ seven sink_3_567(volatile A&&);
int test3_567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_567(source())) == 5> t5;
sa<sizeof(sink_3_567(c_source())) == 6> t6;
sa<sizeof(sink_3_567(v_source())) == 7> t7;
@@ -1008,9 +1008,9 @@ eight sink_3_568(const volatile A&&);
int test3_568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_568(source())) == 5> t5;
sa<sizeof(sink_3_568(c_source())) == 6> t6;
sa<sizeof(sink_3_568(v_source())) == 8> t7;
@@ -1025,9 +1025,9 @@ eight sink_3_578(const volatile A&&);
int test3_578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_578(source())) == 5> t5;
sa<sizeof(sink_3_578(c_source())) == 8> t6;
sa<sizeof(sink_3_578(v_source())) == 7> t7;
@@ -1042,9 +1042,9 @@ eight sink_3_678(const volatile A&&);
int test3_678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_3_678(c_source())) == 6> t6;
sa<sizeof(sink_3_678(v_source())) == 7> t7;
sa<sizeof(sink_3_678(cv_source())) == 8> t8;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv4n.C b/gcc/testsuite/g++.dg/cpp0x/rv4n.C
index cf627aed3f0..524885f1d60 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv4n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv4n.C
@@ -20,7 +20,7 @@ struct eight {char x[8];};
struct A
{
A();
- A(const volatile A&&);
+ A(const volatile A&&); // { dg-error "argument 1" }
};
A source();
@@ -38,9 +38,9 @@ four sink_4_1234(const volatile A&); // { dg-message "note" }
int test4_1234()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1234(v_source()); // { dg-error "no match" }
sink_4_1234(cv_source()); // { dg-error "no match" }
return 0;
@@ -54,9 +54,9 @@ five sink_4_1235( A&&); // { dg-message "note" }
int test4_1235()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1235(cva); // { dg-error "no match" }
sink_4_1235(v_source()); // { dg-error "no match" }
sink_4_1235(cv_source()); // { dg-error "no match" }
@@ -71,9 +71,9 @@ six sink_4_1236(const A&&); // { dg-message "note" }
int test4_1236()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1236(cva); // { dg-error "no match" }
sink_4_1236(v_source()); // { dg-error "no match" }
sink_4_1236(cv_source()); // { dg-error "no match" }
@@ -88,9 +88,9 @@ seven sink_4_1237(volatile A&&); // { dg-message "note" }
int test4_1237()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1237(cva); // { dg-error "no match" }
sink_4_1237(cv_source()); // { dg-error "no match" }
return 0;
@@ -104,9 +104,9 @@ eight sink_4_1238(const volatile A&&); // { dg-message "" }
int test4_1238()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1238(cva); // { dg-error "lvalue" }
return 0;
}
@@ -119,9 +119,9 @@ five sink_4_1245( A&&); // { dg-message "note" }
int test4_1245()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1245(v_source()); // { dg-error "no match" }
sink_4_1245(cv_source()); // { dg-error "no match" }
return 0;
@@ -135,9 +135,9 @@ six sink_4_1246(const A&&); // { dg-message "note" }
int test4_1246()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1246(v_source()); // { dg-error "no match" }
sink_4_1246(cv_source()); // { dg-error "no match" }
return 0;
@@ -151,9 +151,9 @@ seven sink_4_1247(volatile A&&); // { dg-message "note" }
int test4_1247()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1247(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -166,9 +166,9 @@ six sink_4_1256(const A&&); // { dg-message "note" }
int test4_1256()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1256(va); // { dg-error "no match" }
sink_4_1256(cva); // { dg-error "no match" }
sink_4_1256(v_source()); // { dg-error "no match" }
@@ -184,9 +184,9 @@ seven sink_4_1257(volatile A&&); // { dg-message "" }
int test4_1257()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1257(va); // { dg-error "lvalue" }
sink_4_1257(cva); // { dg-error "no match" }
sink_4_1257(cv_source()); // { dg-error "no match" }
@@ -201,9 +201,9 @@ eight sink_4_1258(const volatile A&&); // { dg-message "" }
int test4_1258()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1258(va); // { dg-error "lvalue" }
sink_4_1258(cva); // { dg-error "lvalue" }
return 0;
@@ -217,9 +217,9 @@ seven sink_4_1267(volatile A&&); // { dg-message "" }
int test4_1267()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1267(va); // { dg-error "lvalue" }
sink_4_1267(cva); // { dg-error "no match" }
sink_4_1267(source()); // { dg-error "ambiguous" }
@@ -235,9 +235,9 @@ eight sink_4_1268(const volatile A&&); // { dg-message "" }
int test4_1268()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1268(va); // { dg-error "lvalue" }
sink_4_1268(cva); // { dg-error "lvalue" }
return 0;
@@ -251,9 +251,9 @@ eight sink_4_1278(const volatile A&&); // { dg-message "" }
int test4_1278()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1278(va); // { dg-error "lvalue" }
sink_4_1278(cva); // { dg-error "lvalue" }
return 0;
@@ -267,9 +267,9 @@ five sink_4_1345( A&&); // { dg-message "note" }
int test4_1345()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1345(c_source()); // { dg-error "no match" }
sink_4_1345(v_source()); // { dg-error "no match" }
sink_4_1345(cv_source()); // { dg-error "no match" }
@@ -284,9 +284,9 @@ six sink_4_1346(const A&&); // { dg-message "note" }
int test4_1346()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1346(v_source()); // { dg-error "no match" }
sink_4_1346(cv_source()); // { dg-error "no match" }
return 0;
@@ -300,9 +300,9 @@ seven sink_4_1347(volatile A&&); // { dg-message "note" }
int test4_1347()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1347(c_source()); // { dg-error "no match" }
sink_4_1347(cv_source()); // { dg-error "no match" }
return 0;
@@ -316,9 +316,9 @@ six sink_4_1356(const A&&); // { dg-message "" }
int test4_1356()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1356(ca); // { dg-error "lvalue" }
sink_4_1356(cva); // { dg-error "no match" }
sink_4_1356(v_source()); // { dg-error "no match" }
@@ -334,9 +334,9 @@ seven sink_4_1357(volatile A&&); // { dg-message "note" }
int test4_1357()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1357(ca); // { dg-error "no match" }
sink_4_1357(cva); // { dg-error "no match" }
sink_4_1357(c_source()); // { dg-error "no match" }
@@ -352,9 +352,9 @@ eight sink_4_1358(const volatile A&&); // { dg-message "" }
int test4_1358()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1358(ca); // { dg-error "lvalue" }
sink_4_1358(cva); // { dg-error "lvalue" }
return 0;
@@ -368,9 +368,9 @@ seven sink_4_1367(volatile A&&); // { dg-message "note" }
int test4_1367()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1367(ca); // { dg-error "lvalue" }
sink_4_1367(cva); // { dg-error "no match" }
sink_4_1367(source()); // { dg-error "ambiguous" }
@@ -386,9 +386,9 @@ eight sink_4_1368(const volatile A&&); // { dg-message "" }
int test4_1368()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1368(ca); // { dg-error "lvalue" }
sink_4_1368(cva); // { dg-error "lvalue" }
return 0;
@@ -402,9 +402,9 @@ eight sink_4_1378(const volatile A&&); // { dg-message "" }
int test4_1378()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1378(ca); // { dg-error "lvalue" }
sink_4_1378(cva); // { dg-error "lvalue" }
return 0;
@@ -418,9 +418,9 @@ six sink_4_1456(const A&&); // { dg-message "note" }
int test4_1456()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1456(v_source()); // { dg-error "no match" }
sink_4_1456(cv_source()); // { dg-error "no match" }
return 0;
@@ -434,9 +434,9 @@ seven sink_4_1457(volatile A&&); // { dg-message "note" }
int test4_1457()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1457(c_source()); // { dg-error "no match" }
sink_4_1457(cv_source()); // { dg-error "no match" }
return 0;
@@ -450,9 +450,9 @@ seven sink_4_1467(volatile A&&); // { dg-message "note" }
int test4_1467()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1467(source()); // { dg-error "ambiguous" }
sink_4_1467(cv_source()); // { dg-error "no match" }
return 0;
@@ -466,9 +466,9 @@ seven sink_4_1567(volatile A&&); // { dg-message "" }
int test4_1567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1567(ca); // { dg-error "lvalue" }
sink_4_1567(va); // { dg-error "lvalue" }
sink_4_1567(cva); // { dg-error "no match" }
@@ -484,9 +484,9 @@ eight sink_4_1568(const volatile A&&); // { dg-message "" }
int test4_1568()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1568(ca); // { dg-error "lvalue" }
sink_4_1568(va); // { dg-error "lvalue" }
sink_4_1568(cva); // { dg-error "lvalue" }
@@ -501,9 +501,9 @@ eight sink_4_1578(const volatile A&&); // { dg-message "" }
int test4_1578()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1578(ca); // { dg-error "lvalue" }
sink_4_1578(va); // { dg-error "lvalue" }
sink_4_1578(cva); // { dg-error "lvalue" }
@@ -518,9 +518,9 @@ eight sink_4_1678(const volatile A&&); // { dg-message "" }
int test4_1678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_1678(ca); // { dg-error "lvalue" }
sink_4_1678(va); // { dg-error "lvalue" }
sink_4_1678(cva); // { dg-error "lvalue" }
@@ -536,9 +536,9 @@ five sink_4_2345( A&&); // { dg-message "note" }
int test4_2345()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2345(a); // { dg-error "ambiguous" }
sink_4_2345(v_source()); // { dg-error "no match" }
sink_4_2345(cv_source()); // { dg-error "no match" }
@@ -553,9 +553,9 @@ six sink_4_2346(const A&&); // { dg-message "note" }
int test4_2346()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2346(a); // { dg-error "ambiguous" }
sink_4_2346(v_source()); // { dg-error "no match" }
sink_4_2346(cv_source()); // { dg-error "no match" }
@@ -570,9 +570,9 @@ seven sink_4_2347(volatile A&&); // { dg-message "note" }
int test4_2347()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2347(a); // { dg-error "ambiguous" }
sink_4_2347(cv_source()); // { dg-error "no match" }
return 0;
@@ -586,9 +586,9 @@ eight sink_4_2348(const volatile A&&); // { dg-message "note" }
int test4_2348()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2348(a); // { dg-error "ambiguous" }
return 0;
}
@@ -601,9 +601,9 @@ six sink_4_2356(const A&&); // { dg-message "note" }
int test4_2356()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2356(a); // { dg-error "ambiguous" }
sink_4_2356(cva); // { dg-error "no match" }
sink_4_2356(v_source()); // { dg-error "no match" }
@@ -619,9 +619,9 @@ seven sink_4_2357(volatile A&&); // { dg-message "note" }
int test4_2357()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2357(a); // { dg-error "ambiguous" }
sink_4_2357(cva); // { dg-error "no match" }
sink_4_2357(cv_source()); // { dg-error "no match" }
@@ -636,9 +636,9 @@ eight sink_4_2358(const volatile A&&); // { dg-message "" }
int test4_2358()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2358(a); // { dg-error "ambiguous" }
sink_4_2358(cva); // { dg-error "lvalue" }
return 0;
@@ -652,9 +652,9 @@ seven sink_4_2367(volatile A&&); // { dg-message "note" }
int test4_2367()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2367(a); // { dg-error "ambiguous" }
sink_4_2367(cva); // { dg-error "no match" }
sink_4_2367(source()); // { dg-error "ambiguous" }
@@ -670,9 +670,9 @@ eight sink_4_2368(const volatile A&&); // { dg-message "" }
int test4_2368()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2368(a); // { dg-error "ambiguous" }
sink_4_2368(cva); // { dg-error "lvalue" }
return 0;
@@ -686,9 +686,9 @@ eight sink_4_2378(const volatile A&&); // { dg-message "" }
int test4_2378()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2378(a); // { dg-error "ambiguous" }
sink_4_2378(cva); // { dg-error "lvalue" }
return 0;
@@ -702,9 +702,9 @@ six sink_4_2456(const A&&); // { dg-message "note" }
int test4_2456()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2456(v_source()); // { dg-error "no match" }
sink_4_2456(cv_source()); // { dg-error "no match" }
return 0;
@@ -718,9 +718,9 @@ seven sink_4_2457(volatile A&&); // { dg-message "note" }
int test4_2457()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2457(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -733,9 +733,9 @@ seven sink_4_2467(volatile A&&); // { dg-message "note" }
int test4_2467()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2467(source()); // { dg-error "ambiguous" }
sink_4_2467(cv_source()); // { dg-error "no match" }
return 0;
@@ -749,9 +749,9 @@ seven sink_4_2567(volatile A&&); // { dg-message "" }
int test4_2567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2567(va); // { dg-error "lvalue" }
sink_4_2567(cva); // { dg-error "no match" }
sink_4_2567(cv_source()); // { dg-error "no match" }
@@ -766,9 +766,9 @@ eight sink_4_2568(const volatile A&&); // { dg-message "" }
int test4_2568()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2568(va); // { dg-error "lvalue" }
sink_4_2568(cva); // { dg-error "lvalue" }
return 0;
@@ -782,9 +782,9 @@ eight sink_4_2578(const volatile A&&); // { dg-message "" }
int test4_2578()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2578(va); // { dg-error "lvalue" }
sink_4_2578(cva); // { dg-error "lvalue" }
return 0;
@@ -798,9 +798,9 @@ eight sink_4_2678(const volatile A&&); // { dg-message "" }
int test4_2678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_2678(va); // { dg-error "lvalue" }
sink_4_2678(cva); // { dg-error "lvalue" }
sink_4_2678(source()); // { dg-error "ambiguous" }
@@ -815,9 +815,9 @@ six sink_4_3456(const A&&); // { dg-message "note" }
int test4_3456()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_3456(v_source()); // { dg-error "no match" }
sink_4_3456(cv_source()); // { dg-error "no match" }
return 0;
@@ -831,9 +831,9 @@ seven sink_4_3457(volatile A&&); // { dg-message "note" }
int test4_3457()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_3457(c_source()); // { dg-error "no match" }
sink_4_3457(cv_source()); // { dg-error "no match" }
return 0;
@@ -847,9 +847,9 @@ seven sink_4_3467(volatile A&&); // { dg-message "note" }
int test4_3467()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_3467(source()); // { dg-error "ambiguous" }
sink_4_3467(cv_source()); // { dg-error "no match" }
return 0;
@@ -863,9 +863,9 @@ seven sink_4_3567(volatile A&&); // { dg-message "note" }
int test4_3567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_3567(ca); // { dg-error "lvalue" }
sink_4_3567(cva); // { dg-error "no match" }
sink_4_3567(cv_source()); // { dg-error "no match" }
@@ -880,9 +880,9 @@ eight sink_4_3568(const volatile A&&); // { dg-message "" }
int test4_3568()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_3568(ca); // { dg-error "lvalue" }
sink_4_3568(cva); // { dg-error "lvalue" }
return 0;
@@ -896,9 +896,9 @@ eight sink_4_3578(const volatile A&&); // { dg-message "" }
int test4_3578()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_3578(ca); // { dg-error "lvalue" }
sink_4_3578(cva); // { dg-error "lvalue" }
return 0;
@@ -912,9 +912,9 @@ eight sink_4_3678(const volatile A&&); // { dg-message "" }
int test4_3678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_3678(ca); // { dg-error "lvalue" }
sink_4_3678(cva); // { dg-error "lvalue" }
sink_4_3678(source()); // { dg-error "ambiguous" }
@@ -929,9 +929,9 @@ seven sink_4_4567(volatile A&&); // { dg-message "note" }
int test4_4567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_4567(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -944,9 +944,9 @@ eight sink_4_4678(const volatile A&&); // { dg-message "note" }
int test4_4678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_4678(source()); // { dg-error "ambiguous" }
return 0;
}
@@ -959,9 +959,9 @@ eight sink_4_5678(const volatile A&&); // { dg-message "" }
int test4_5678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_4_5678(a); // { dg-error "lvalue" }
sink_4_5678(ca); // { dg-error "lvalue" }
sink_4_5678(va); // { dg-error "lvalue" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv4p.C b/gcc/testsuite/g++.dg/cpp0x/rv4p.C
index 03ad9734614..33a90f854d1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv4p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv4p.C
@@ -38,9 +38,9 @@ four sink_4_1234(const volatile A&);
int test4_1234()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1234(a)) == 1> t1;
sa<sizeof(sink_4_1234(ca)) == 2> t2;
sa<sizeof(sink_4_1234(va)) == 3> t3;
@@ -58,9 +58,9 @@ five sink_4_1235( A&&);
int test4_1235()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1235(a)) == 1> t1;
sa<sizeof(sink_4_1235(ca)) == 2> t2;
sa<sizeof(sink_4_1235(va)) == 3> t3;
@@ -77,9 +77,9 @@ six sink_4_1236(const A&&);
int test4_1236()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1236(a)) == 1> t1;
sa<sizeof(sink_4_1236(ca)) == 2> t2;
sa<sizeof(sink_4_1236(va)) == 3> t3;
@@ -96,9 +96,9 @@ seven sink_4_1237(volatile A&&);
int test4_1237()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1237(a)) == 1> t1;
sa<sizeof(sink_4_1237(ca)) == 2> t2;
sa<sizeof(sink_4_1237(va)) == 3> t3;
@@ -116,9 +116,9 @@ eight sink_4_1238(const volatile A&&);
int test4_1238()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1238(a)) == 1> t1;
sa<sizeof(sink_4_1238(ca)) == 2> t2;
sa<sizeof(sink_4_1238(va)) == 3> t3;
@@ -137,9 +137,9 @@ five sink_4_1245( A&&);
int test4_1245()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1245(a)) == 1> t1;
sa<sizeof(sink_4_1245(ca)) == 2> t2;
sa<sizeof(sink_4_1245(va)) == 4> t3;
@@ -157,9 +157,9 @@ six sink_4_1246(const A&&);
int test4_1246()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1246(a)) == 1> t1;
sa<sizeof(sink_4_1246(ca)) == 2> t2;
sa<sizeof(sink_4_1246(va)) == 4> t3;
@@ -177,9 +177,9 @@ seven sink_4_1247(volatile A&&);
int test4_1247()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1247(a)) == 1> t1;
sa<sizeof(sink_4_1247(ca)) == 2> t2;
sa<sizeof(sink_4_1247(va)) == 4> t3;
@@ -198,9 +198,9 @@ eight sink_4_1248(const volatile A&&);
int test4_1248()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1248(a)) == 1> t1;
sa<sizeof(sink_4_1248(ca)) == 2> t2;
sa<sizeof(sink_4_1248(va)) == 4> t3;
@@ -220,9 +220,9 @@ six sink_4_1256(const A&&);
int test4_1256()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1256(a)) == 1> t1;
sa<sizeof(sink_4_1256(ca)) == 2> t2;
sa<sizeof(sink_4_1256(source())) == 5> t5;
@@ -238,9 +238,9 @@ seven sink_4_1257(volatile A&&);
int test4_1257()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1257(a)) == 1> t1;
sa<sizeof(sink_4_1257(ca)) == 2> t2;
sa<sizeof(sink_4_1257(source())) == 5> t5;
@@ -257,9 +257,9 @@ eight sink_4_1258(const volatile A&&);
int test4_1258()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1258(a)) == 1> t1;
sa<sizeof(sink_4_1258(ca)) == 2> t2;
sa<sizeof(sink_4_1258(source())) == 5> t5;
@@ -277,9 +277,9 @@ seven sink_4_1267(volatile A&&);
int test4_1267()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1267(a)) == 1> t1;
sa<sizeof(sink_4_1267(ca)) == 2> t2;
sa<sizeof(sink_4_1267(c_source())) == 6> t6;
@@ -295,9 +295,9 @@ eight sink_4_1268(const volatile A&&);
int test4_1268()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1268(a)) == 1> t1;
sa<sizeof(sink_4_1268(ca)) == 2> t2;
sa<sizeof(sink_4_1268(source())) == 6> t5;
@@ -315,9 +315,9 @@ eight sink_4_1278(const volatile A&&);
int test4_1278()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1278(a)) == 1> t1;
sa<sizeof(sink_4_1278(ca)) == 2> t2;
sa<sizeof(sink_4_1278(source())) == 7> t5;
@@ -335,9 +335,9 @@ five sink_4_1345( A&&);
int test4_1345()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1345(a)) == 1> t1;
sa<sizeof(sink_4_1345(ca)) == 4> t2;
sa<sizeof(sink_4_1345(va)) == 3> t3;
@@ -354,9 +354,9 @@ six sink_4_1346(const A&&);
int test4_1346()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1346(a)) == 1> t1;
sa<sizeof(sink_4_1346(ca)) == 4> t2;
sa<sizeof(sink_4_1346(va)) == 3> t3;
@@ -374,9 +374,9 @@ seven sink_4_1347(volatile A&&);
int test4_1347()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1347(a)) == 1> t1;
sa<sizeof(sink_4_1347(ca)) == 4> t2;
sa<sizeof(sink_4_1347(va)) == 3> t3;
@@ -394,9 +394,9 @@ eight sink_4_1348(const volatile A&&);
int test4_1348()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1348(a)) == 1> t1;
sa<sizeof(sink_4_1348(ca)) == 4> t2;
sa<sizeof(sink_4_1348(va)) == 3> t3;
@@ -416,9 +416,9 @@ six sink_4_1356(const A&&);
int test4_1356()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1356(a)) == 1> t1;
sa<sizeof(sink_4_1356(va)) == 3> t3;
sa<sizeof(sink_4_1356(source())) == 5> t5;
@@ -434,9 +434,9 @@ seven sink_4_1357(volatile A&&);
int test4_1357()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1357(a)) == 1> t1;
sa<sizeof(sink_4_1357(va)) == 3> t3;
sa<sizeof(sink_4_1357(source())) == 5> t5;
@@ -452,9 +452,9 @@ eight sink_4_1358(const volatile A&&);
int test4_1358()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1358(a)) == 1> t1;
sa<sizeof(sink_4_1358(va)) == 3> t3;
sa<sizeof(sink_4_1358(source())) == 5> t5;
@@ -472,9 +472,9 @@ seven sink_4_1367(volatile A&&);
int test4_1367()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1367(a)) == 1> t1;
sa<sizeof(sink_4_1367(va)) == 3> t3;
sa<sizeof(sink_4_1367(c_source())) == 6> t6;
@@ -490,9 +490,9 @@ eight sink_4_1368(const volatile A&&);
int test4_1368()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1368(a)) == 1> t1;
sa<sizeof(sink_4_1368(va)) == 3> t3;
sa<sizeof(sink_4_1368(source())) == 6> t5;
@@ -510,9 +510,9 @@ eight sink_4_1378(const volatile A&&);
int test4_1378()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1378(a)) == 1> t1;
sa<sizeof(sink_4_1378(va)) == 3> t3;
sa<sizeof(sink_4_1378(source())) == 7> t5;
@@ -530,9 +530,9 @@ six sink_4_1456(const A&&);
int test4_1456()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1456(a)) == 1> t1;
sa<sizeof(sink_4_1456(ca)) == 4> t2;
sa<sizeof(sink_4_1456(va)) == 4> t3;
@@ -550,9 +550,9 @@ seven sink_4_1457(volatile A&&);
int test4_1457()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1457(a)) == 1> t1;
sa<sizeof(sink_4_1457(ca)) == 4> t2;
sa<sizeof(sink_4_1457(va)) == 4> t3;
@@ -570,9 +570,9 @@ eight sink_4_1458(const volatile A&&);
int test4_1458()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1458(a)) == 1> t1;
sa<sizeof(sink_4_1458(ca)) == 4> t2;
sa<sizeof(sink_4_1458(va)) == 4> t3;
@@ -592,9 +592,9 @@ seven sink_4_1467(volatile A&&);
int test4_1467()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1467(a)) == 1> t1;
sa<sizeof(sink_4_1467(ca)) == 4> t2;
sa<sizeof(sink_4_1467(va)) == 4> t3;
@@ -612,9 +612,9 @@ eight sink_4_1468(const volatile A&&);
int test4_1468()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1468(a)) == 1> t1;
sa<sizeof(sink_4_1468(ca)) == 4> t2;
sa<sizeof(sink_4_1468(va)) == 4> t3;
@@ -634,9 +634,9 @@ eight sink_4_1478(const volatile A&&);
int test4_1478()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1478(a)) == 1> t1;
sa<sizeof(sink_4_1478(ca)) == 4> t2;
sa<sizeof(sink_4_1478(va)) == 4> t3;
@@ -656,9 +656,9 @@ seven sink_4_1567(volatile A&&);
int test4_1567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1567(a)) == 1> t1;
sa<sizeof(sink_4_1567(source())) == 5> t5;
sa<sizeof(sink_4_1567(c_source())) == 6> t6;
@@ -674,9 +674,9 @@ eight sink_4_1568(const volatile A&&);
int test4_1568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1568(a)) == 1> t1;
sa<sizeof(sink_4_1568(source())) == 5> t5;
sa<sizeof(sink_4_1568(c_source())) == 6> t6;
@@ -693,9 +693,9 @@ eight sink_4_1578(const volatile A&&);
int test4_1578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1578(a)) == 1> t1;
sa<sizeof(sink_4_1578(source())) == 5> t5;
sa<sizeof(sink_4_1578(c_source())) == 8> t6;
@@ -712,9 +712,9 @@ eight sink_4_1678(const volatile A&&);
int test4_1678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_1678(a)) == 1> t1;
sa<sizeof(sink_4_1678(c_source())) == 6> t6;
sa<sizeof(sink_4_1678(v_source())) == 7> t7;
@@ -730,9 +730,9 @@ five sink_4_2345( A&&);
int test4_2345()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2345(ca)) == 2> t2;
sa<sizeof(sink_4_2345(va)) == 3> t3;
sa<sizeof(sink_4_2345(cva)) == 4> t4;
@@ -749,9 +749,9 @@ six sink_4_2346(const A&&);
int test4_2346()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2346(ca)) == 2> t2;
sa<sizeof(sink_4_2346(va)) == 3> t3;
sa<sizeof(sink_4_2346(cva)) == 4> t4;
@@ -768,9 +768,9 @@ seven sink_4_2347(volatile A&&);
int test4_2347()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2347(ca)) == 2> t2;
sa<sizeof(sink_4_2347(va)) == 3> t3;
sa<sizeof(sink_4_2347(cva)) == 4> t4;
@@ -788,9 +788,9 @@ eight sink_4_2348(const volatile A&&);
int test4_2348()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2348(ca)) == 2> t2;
sa<sizeof(sink_4_2348(va)) == 3> t3;
sa<sizeof(sink_4_2348(cva)) == 4> t4;
@@ -809,9 +809,9 @@ six sink_4_2356(const A&&);
int test4_2356()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2356(ca)) == 2> t2;
sa<sizeof(sink_4_2356(va)) == 3> t3;
sa<sizeof(sink_4_2356(source())) == 5> t5;
@@ -827,9 +827,9 @@ seven sink_4_2357(volatile A&&);
int test4_2357()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2357(ca)) == 2> t2;
sa<sizeof(sink_4_2357(va)) == 3> t3;
sa<sizeof(sink_4_2357(source())) == 5> t5;
@@ -846,9 +846,9 @@ eight sink_4_2358(const volatile A&&);
int test4_2358()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2358(ca)) == 2> t2;
sa<sizeof(sink_4_2358(va)) == 3> t3;
sa<sizeof(sink_4_2358(source())) == 5> t5;
@@ -866,9 +866,9 @@ seven sink_4_2367(volatile A&&);
int test4_2367()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2367(ca)) == 2> t2;
sa<sizeof(sink_4_2367(va)) == 3> t3;
sa<sizeof(sink_4_2367(c_source())) == 6> t6;
@@ -884,9 +884,9 @@ eight sink_4_2368(const volatile A&&);
int test4_2368()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2368(ca)) == 2> t2;
sa<sizeof(sink_4_2368(va)) == 3> t3;
sa<sizeof(sink_4_2368(source())) == 6> t5;
@@ -904,9 +904,9 @@ eight sink_4_2378(const volatile A&&);
int test4_2378()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2378(ca)) == 2> t2;
sa<sizeof(sink_4_2378(va)) == 3> t3;
sa<sizeof(sink_4_2378(source())) == 7> t5;
@@ -924,9 +924,9 @@ six sink_4_2456(const A&&);
int test4_2456()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2456(a)) == 2> t1;
sa<sizeof(sink_4_2456(ca)) == 2> t2;
sa<sizeof(sink_4_2456(va)) == 4> t3;
@@ -944,9 +944,9 @@ seven sink_4_2457(volatile A&&);
int test4_2457()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2457(a)) == 2> t1;
sa<sizeof(sink_4_2457(ca)) == 2> t2;
sa<sizeof(sink_4_2457(va)) == 4> t3;
@@ -965,9 +965,9 @@ eight sink_4_2458(const volatile A&&);
int test4_2458()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2458(a)) == 2> t1;
sa<sizeof(sink_4_2458(ca)) == 2> t2;
sa<sizeof(sink_4_2458(va)) == 4> t3;
@@ -987,9 +987,9 @@ seven sink_4_2467(volatile A&&);
int test4_2467()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2467(a)) == 2> t1;
sa<sizeof(sink_4_2467(ca)) == 2> t2;
sa<sizeof(sink_4_2467(va)) == 4> t3;
@@ -1007,9 +1007,9 @@ eight sink_4_2468(const volatile A&&);
int test4_2468()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2468(a)) == 2> t1;
sa<sizeof(sink_4_2468(ca)) == 2> t2;
sa<sizeof(sink_4_2468(va)) == 4> t3;
@@ -1029,9 +1029,9 @@ eight sink_4_2478(const volatile A&&);
int test4_2478()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2478(a)) == 2> t1;
sa<sizeof(sink_4_2478(ca)) == 2> t2;
sa<sizeof(sink_4_2478(va)) == 4> t3;
@@ -1051,9 +1051,9 @@ seven sink_4_2567(volatile A&&);
int test4_2567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2567(a)) == 2> t1;
sa<sizeof(sink_4_2567(ca)) == 2> t2;
sa<sizeof(sink_4_2567(source())) == 5> t5;
@@ -1070,9 +1070,9 @@ eight sink_4_2568(const volatile A&&);
int test4_2568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2568(a)) == 2> t1;
sa<sizeof(sink_4_2568(ca)) == 2> t2;
sa<sizeof(sink_4_2568(source())) == 5> t5;
@@ -1090,9 +1090,9 @@ eight sink_4_2578(const volatile A&&);
int test4_2578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2578(a)) == 2> t1;
sa<sizeof(sink_4_2578(ca)) == 2> t2;
sa<sizeof(sink_4_2578(source())) == 5> t5;
@@ -1110,9 +1110,9 @@ eight sink_4_2678(const volatile A&&);
int test4_2678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_2678(a)) == 2> t1;
sa<sizeof(sink_4_2678(ca)) == 2> t2;
sa<sizeof(sink_4_2678(c_source())) == 6> t6;
@@ -1129,9 +1129,9 @@ six sink_4_3456(const A&&);
int test4_3456()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_3456(a)) == 3> t1;
sa<sizeof(sink_4_3456(ca)) == 4> t2;
sa<sizeof(sink_4_3456(va)) == 3> t3;
@@ -1149,9 +1149,9 @@ seven sink_4_3457(volatile A&&);
int test4_3457()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_3457(a)) == 3> t1;
sa<sizeof(sink_4_3457(ca)) == 4> t2;
sa<sizeof(sink_4_3457(va)) == 3> t3;
@@ -1169,9 +1169,9 @@ eight sink_4_3458(const volatile A&&);
int test4_3458()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_3458(a)) == 3> t1;
sa<sizeof(sink_4_3458(ca)) == 4> t2;
sa<sizeof(sink_4_3458(va)) == 3> t3;
@@ -1191,9 +1191,9 @@ seven sink_4_3467(volatile A&&);
int test4_3467()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_3467(a)) == 3> t1;
sa<sizeof(sink_4_3467(ca)) == 4> t2;
sa<sizeof(sink_4_3467(va)) == 3> t3;
@@ -1211,9 +1211,9 @@ eight sink_4_3468(const volatile A&&);
int test4_3468()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_3468(a)) == 3> t1;
sa<sizeof(sink_4_3468(ca)) == 4> t2;
sa<sizeof(sink_4_3468(va)) == 3> t3;
@@ -1233,9 +1233,9 @@ eight sink_4_3478(const volatile A&&);
int test4_3478()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_3478(a)) == 3> t1;
sa<sizeof(sink_4_3478(ca)) == 4> t2;
sa<sizeof(sink_4_3478(va)) == 3> t3;
@@ -1255,9 +1255,9 @@ seven sink_4_3567(volatile A&&);
int test4_3567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_3567(a)) == 3> t1;
sa<sizeof(sink_4_3567(va)) == 3> t3;
sa<sizeof(sink_4_3567(source())) == 5> t5;
@@ -1274,9 +1274,9 @@ eight sink_4_3568(const volatile A&&);
int test4_3568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_3568(a)) == 3> t1;
sa<sizeof(sink_4_3568(va)) == 3> t3;
sa<sizeof(sink_4_3568(source())) == 5> t5;
@@ -1294,9 +1294,9 @@ eight sink_4_3578(const volatile A&&);
int test4_3578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_3578(a)) == 3> t1;
sa<sizeof(sink_4_3578(va)) == 3> t3;
sa<sizeof(sink_4_3578(source())) == 5> t5;
@@ -1314,9 +1314,9 @@ eight sink_4_3678(const volatile A&&);
int test4_3678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_3678(a)) == 3> t1;
sa<sizeof(sink_4_3678(va)) == 3> t3;
sa<sizeof(sink_4_3678(c_source())) == 6> t6;
@@ -1333,9 +1333,9 @@ seven sink_4_4567(volatile A&&);
int test4_4567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_4567(a)) == 4> t1;
sa<sizeof(sink_4_4567(ca)) == 4> t2;
sa<sizeof(sink_4_4567(va)) == 4> t3;
@@ -1354,9 +1354,9 @@ eight sink_4_4568(const volatile A&&);
int test4_4568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_4568(a)) == 4> t1;
sa<sizeof(sink_4_4568(ca)) == 4> t2;
sa<sizeof(sink_4_4568(va)) == 4> t3;
@@ -1376,9 +1376,9 @@ eight sink_4_4578(const volatile A&&);
int test4_4578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_4578(a)) == 4> t1;
sa<sizeof(sink_4_4578(ca)) == 4> t2;
sa<sizeof(sink_4_4578(va)) == 4> t3;
@@ -1398,9 +1398,9 @@ eight sink_4_4678(const volatile A&&);
int test4_4678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_4678(a)) == 4> t1;
sa<sizeof(sink_4_4678(ca)) == 4> t2;
sa<sizeof(sink_4_4678(va)) == 4> t3;
@@ -1419,9 +1419,9 @@ eight sink_4_5678(const volatile A&&);
int test4_5678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_4_5678(source())) == 5> t5;
sa<sizeof(sink_4_5678(c_source())) == 6> t6;
sa<sizeof(sink_4_5678(v_source())) == 7> t7;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv5n.C b/gcc/testsuite/g++.dg/cpp0x/rv5n.C
index c31a30b2d6f..92ec1d925e1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv5n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv5n.C
@@ -20,7 +20,7 @@ struct eight {char x[8];};
struct A
{
A();
- A(const volatile A&&);
+ A(const volatile A&&); // { dg-error "argument 1" }
};
A source();
@@ -39,9 +39,9 @@ five sink_5_12345( A&&); // { dg-message "note" }
int test5_12345()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12345(v_source()); // { dg-error "no match" }
sink_5_12345(cv_source()); // { dg-error "no match" }
return 0;
@@ -56,9 +56,9 @@ six sink_5_12346(const A&&); // { dg-message "note" }
int test5_12346()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12346(v_source()); // { dg-error "no match" }
sink_5_12346(cv_source()); // { dg-error "no match" }
return 0;
@@ -73,9 +73,9 @@ seven sink_5_12347(volatile A&&); // { dg-message "note" }
int test5_12347()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12347(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -89,9 +89,9 @@ six sink_5_12356(const A&&); // { dg-message "note" }
int test5_12356()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12356(cva); // { dg-error "no match" }
sink_5_12356(v_source()); // { dg-error "no match" }
sink_5_12356(cv_source()); // { dg-error "no match" }
@@ -107,9 +107,9 @@ seven sink_5_12357(volatile A&&); // { dg-message "note" }
int test5_12357()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12357(cva); // { dg-error "no match" }
sink_5_12357(cv_source()); // { dg-error "no match" }
return 0;
@@ -124,9 +124,9 @@ eight sink_5_12358(const volatile A&&); // { dg-message "" }
int test5_12358()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12358(cva); // { dg-error "lvalue" }
return 0;
}
@@ -140,9 +140,9 @@ seven sink_5_12367(volatile A&&); // { dg-message "note" }
int test5_12367()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12367(cva); // { dg-error "no match" }
sink_5_12367(source()); // { dg-error "ambiguous" }
sink_5_12367(cv_source()); // { dg-error "no match" }
@@ -158,9 +158,9 @@ eight sink_5_12368(const volatile A&&); // { dg-message "" }
int test5_12368()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12368(cva); // { dg-error "lvalue" }
return 0;
}
@@ -174,9 +174,9 @@ eight sink_5_12378(const volatile A&&); // { dg-message "" }
int test5_12378()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12378(cva); // { dg-error "lvalue" }
return 0;
}
@@ -190,9 +190,9 @@ six sink_5_12456(const A&&); // { dg-message "note" }
int test5_12456()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12456(v_source()); // { dg-error "no match" }
sink_5_12456(cv_source()); // { dg-error "no match" }
return 0;
@@ -207,9 +207,9 @@ seven sink_5_12457(volatile A&&); // { dg-message "note" }
int test5_12457()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12457(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -223,9 +223,9 @@ seven sink_5_12467(volatile A&&); // { dg-message "note" }
int test5_12467()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12467(source()); // { dg-error "ambiguous" }
sink_5_12467(cv_source()); // { dg-error "no match" }
return 0;
@@ -240,9 +240,9 @@ seven sink_5_12567(volatile A&&); // { dg-message "" }
int test5_12567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12567(va); // { dg-error "lvalue" }
sink_5_12567(cva); // { dg-error "no match" }
sink_5_12567(cv_source()); // { dg-error "no match" }
@@ -258,9 +258,9 @@ eight sink_5_12568(const volatile A&&); // { dg-message "" }
int test5_12568()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12568(va); // { dg-error "lvalue" }
sink_5_12568(cva); // { dg-error "lvalue" }
return 0;
@@ -275,9 +275,9 @@ eight sink_5_12578(const volatile A&&); // { dg-message "" }
int test5_12578()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12578(va); // { dg-error "lvalue" }
sink_5_12578(cva); // { dg-error "lvalue" }
return 0;
@@ -292,9 +292,9 @@ eight sink_5_12678(const volatile A&&); // { dg-message "" }
int test5_12678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_12678(va); // { dg-error "lvalue" }
sink_5_12678(cva); // { dg-error "lvalue" }
sink_5_12678(source()); // { dg-error "ambiguous" }
@@ -310,9 +310,9 @@ six sink_5_13456(const A&&); // { dg-message "note" }
int test5_13456()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_13456(v_source()); // { dg-error "no match" }
sink_5_13456(cv_source()); // { dg-error "no match" }
return 0;
@@ -327,9 +327,9 @@ seven sink_5_13457(volatile A&&); // { dg-message "note" }
int test5_13457()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_13457(c_source()); // { dg-error "no match" }
sink_5_13457(cv_source()); // { dg-error "no match" }
return 0;
@@ -344,9 +344,9 @@ seven sink_5_13467(volatile A&&); // { dg-message "note" }
int test5_13467()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_13467(source()); // { dg-error "ambiguous" }
sink_5_13467(cv_source()); // { dg-error "no match" }
return 0;
@@ -361,9 +361,9 @@ seven sink_5_13567(volatile A&&); // { dg-message "note" }
int test5_13567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_13567(ca); // { dg-error "lvalue" }
sink_5_13567(cva); // { dg-error "no match" }
sink_5_13567(cv_source()); // { dg-error "no match" }
@@ -379,9 +379,9 @@ eight sink_5_13568(const volatile A&&); // { dg-message "" }
int test5_13568()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_13568(ca); // { dg-error "lvalue" }
sink_5_13568(cva); // { dg-error "lvalue" }
return 0;
@@ -396,9 +396,9 @@ eight sink_5_13578(const volatile A&&); // { dg-message "" }
int test5_13578()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_13578(ca); // { dg-error "lvalue" }
sink_5_13578(cva); // { dg-error "lvalue" }
return 0;
@@ -413,9 +413,9 @@ eight sink_5_13678(const volatile A&&); // { dg-message "" }
int test5_13678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_13678(ca); // { dg-error "lvalue" }
sink_5_13678(cva); // { dg-error "lvalue" }
sink_5_13678(source()); // { dg-error "ambiguous" }
@@ -431,9 +431,9 @@ seven sink_5_14567(volatile A&&); // { dg-message "note" }
int test5_14567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_14567(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -447,9 +447,9 @@ eight sink_5_14678(const volatile A&&); // { dg-message "note" }
int test5_14678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_14678(source()); // { dg-error "ambiguous" }
return 0;
}
@@ -463,9 +463,9 @@ eight sink_5_15678(const volatile A&&); // { dg-message "" }
int test5_15678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_15678(ca); // { dg-error "lvalue" }
sink_5_15678(va); // { dg-error "lvalue" }
sink_5_15678(cva); // { dg-error "lvalue" }
@@ -481,9 +481,9 @@ six sink_5_23456(const A&&); // { dg-message "note" }
int test5_23456()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_23456(a); // { dg-error "ambiguous" }
sink_5_23456(v_source()); // { dg-error "no match" }
sink_5_23456(cv_source()); // { dg-error "no match" }
@@ -499,9 +499,9 @@ seven sink_5_23457(volatile A&&); // { dg-message "note" }
int test5_23457()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_23457(a); // { dg-error "ambiguous" }
sink_5_23457(cv_source()); // { dg-error "no match" }
return 0;
@@ -516,9 +516,9 @@ eight sink_5_23458(const volatile A&&); // { dg-message "note" }
int test5_23458()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_23458(a); // { dg-error "ambiguous" }
return 0;
}
@@ -532,9 +532,9 @@ seven sink_5_23467(volatile A&&); // { dg-message "note" }
int test5_23467()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_23467(a); // { dg-error "ambiguous" }
sink_5_23467(source()); // { dg-error "ambiguous" }
sink_5_23467(cv_source()); // { dg-error "no match" }
@@ -550,9 +550,9 @@ eight sink_5_23468(const volatile A&&); // { dg-message "note" }
int test5_23468()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_23468(a); // { dg-error "ambiguous" }
return 0;
}
@@ -566,9 +566,9 @@ eight sink_5_23478(const volatile A&&); // { dg-message "note" }
int test5_23478()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_23478(a); // { dg-error "ambiguous" }
return 0;
}
@@ -582,9 +582,9 @@ seven sink_5_23567(volatile A&&); // { dg-message "note" }
int test5_23567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_23567(a); // { dg-error "ambiguous" }
sink_5_23567(cva); // { dg-error "no match" }
sink_5_23567(cv_source()); // { dg-error "no match" }
@@ -600,9 +600,9 @@ eight sink_5_23568(const volatile A&&); // { dg-message "" }
int test5_23568()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_23568(cva); // { dg-error "lvalue" }
sink_5_23568(a); // { dg-error "ambiguous" }
return 0;
@@ -617,9 +617,9 @@ eight sink_5_23578(const volatile A&&); // { dg-message "" }
int test5_23578()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_23578(cva); // { dg-error "lvalue" }
sink_5_23578(a); // { dg-error "ambiguous" }
return 0;
@@ -634,9 +634,9 @@ eight sink_5_23678(const volatile A&&); // { dg-message "" }
int test5_23678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_23678(a); // { dg-error "ambiguous" }
sink_5_23678(cva); // { dg-error "lvalue" }
sink_5_23678(source()); // { dg-error "ambiguous" }
@@ -652,9 +652,9 @@ seven sink_5_24567(volatile A&&); // { dg-message "note" }
int test5_24567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_24567(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -668,9 +668,9 @@ eight sink_5_24678(const volatile A&&); // { dg-message "note" }
int test5_24678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_24678(source()); // { dg-error "ambiguous" }
return 0;
}
@@ -684,9 +684,9 @@ eight sink_5_25678(const volatile A&&); // { dg-message "" }
int test5_25678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_25678(va); // { dg-error "lvalue" }
sink_5_25678(cva); // { dg-error "lvalue" }
return 0;
@@ -701,9 +701,9 @@ seven sink_5_34567(volatile A&&); // { dg-message "note" }
int test5_34567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_34567(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -717,9 +717,9 @@ eight sink_5_34678(const volatile A&&); // { dg-message "note" }
int test5_34678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_34678(source()); // { dg-error "ambiguous" }
return 0;
}
@@ -733,9 +733,9 @@ eight sink_5_35678(const volatile A&&); // { dg-message "" }
int test5_35678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_5_35678(ca); // { dg-error "lvalue" }
sink_5_35678(cva); // { dg-error "lvalue" }
return 0;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv5p.C b/gcc/testsuite/g++.dg/cpp0x/rv5p.C
index 7555867f709..cd12028fc93 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv5p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv5p.C
@@ -39,9 +39,9 @@ five sink_5_12345( A&&);
int test5_12345()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12345(a)) == 1> t1;
sa<sizeof(sink_5_12345(ca)) == 2> t2;
sa<sizeof(sink_5_12345(va)) == 3> t3;
@@ -60,9 +60,9 @@ six sink_5_12346(const A&&);
int test5_12346()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12346(a)) == 1> t1;
sa<sizeof(sink_5_12346(ca)) == 2> t2;
sa<sizeof(sink_5_12346(va)) == 3> t3;
@@ -81,9 +81,9 @@ seven sink_5_12347(volatile A&&);
int test5_12347()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12347(a)) == 1> t1;
sa<sizeof(sink_5_12347(ca)) == 2> t2;
sa<sizeof(sink_5_12347(va)) == 3> t3;
@@ -103,9 +103,9 @@ eight sink_5_12348(const volatile A&&);
int test5_12348()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12348(a)) == 1> t1;
sa<sizeof(sink_5_12348(ca)) == 2> t2;
sa<sizeof(sink_5_12348(va)) == 3> t3;
@@ -126,9 +126,9 @@ six sink_5_12356(const A&&);
int test5_12356()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12356(a)) == 1> t1;
sa<sizeof(sink_5_12356(ca)) == 2> t2;
sa<sizeof(sink_5_12356(va)) == 3> t3;
@@ -146,9 +146,9 @@ seven sink_5_12357(volatile A&&);
int test5_12357()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12357(a)) == 1> t1;
sa<sizeof(sink_5_12357(ca)) == 2> t2;
sa<sizeof(sink_5_12357(va)) == 3> t3;
@@ -167,9 +167,9 @@ eight sink_5_12358(const volatile A&&);
int test5_12358()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12358(a)) == 1> t1;
sa<sizeof(sink_5_12358(ca)) == 2> t2;
sa<sizeof(sink_5_12358(va)) == 3> t3;
@@ -189,9 +189,9 @@ seven sink_5_12367(volatile A&&);
int test5_12367()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12367(a)) == 1> t1;
sa<sizeof(sink_5_12367(ca)) == 2> t2;
sa<sizeof(sink_5_12367(va)) == 3> t3;
@@ -209,9 +209,9 @@ eight sink_5_12368(const volatile A&&);
int test5_12368()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12368(a)) == 1> t1;
sa<sizeof(sink_5_12368(ca)) == 2> t2;
sa<sizeof(sink_5_12368(va)) == 3> t3;
@@ -231,9 +231,9 @@ eight sink_5_12378(const volatile A&&);
int test5_12378()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12378(a)) == 1> t1;
sa<sizeof(sink_5_12378(ca)) == 2> t2;
sa<sizeof(sink_5_12378(va)) == 3> t3;
@@ -253,9 +253,9 @@ six sink_5_12456(const A&&);
int test5_12456()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12456(a)) == 1> t1;
sa<sizeof(sink_5_12456(ca)) == 2> t2;
sa<sizeof(sink_5_12456(va)) == 4> t3;
@@ -274,9 +274,9 @@ seven sink_5_12457(volatile A&&);
int test5_12457()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12457(a)) == 1> t1;
sa<sizeof(sink_5_12457(ca)) == 2> t2;
sa<sizeof(sink_5_12457(va)) == 4> t3;
@@ -296,9 +296,9 @@ eight sink_5_12458(const volatile A&&);
int test5_12458()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12458(a)) == 1> t1;
sa<sizeof(sink_5_12458(ca)) == 2> t2;
sa<sizeof(sink_5_12458(va)) == 4> t3;
@@ -319,9 +319,9 @@ seven sink_5_12467(volatile A&&);
int test5_12467()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12467(a)) == 1> t1;
sa<sizeof(sink_5_12467(ca)) == 2> t2;
sa<sizeof(sink_5_12467(va)) == 4> t3;
@@ -340,9 +340,9 @@ eight sink_5_12468(const volatile A&&);
int test5_12468()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12468(a)) == 1> t1;
sa<sizeof(sink_5_12468(ca)) == 2> t2;
sa<sizeof(sink_5_12468(va)) == 4> t3;
@@ -363,9 +363,9 @@ eight sink_5_12478(const volatile A&&);
int test5_12478()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12478(a)) == 1> t1;
sa<sizeof(sink_5_12478(ca)) == 2> t2;
sa<sizeof(sink_5_12478(va)) == 4> t3;
@@ -386,9 +386,9 @@ seven sink_5_12567(volatile A&&);
int test5_12567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12567(a)) == 1> t1;
sa<sizeof(sink_5_12567(ca)) == 2> t2;
sa<sizeof(sink_5_12567(source())) == 5> t5;
@@ -406,9 +406,9 @@ eight sink_5_12568(const volatile A&&);
int test5_12568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12568(a)) == 1> t1;
sa<sizeof(sink_5_12568(ca)) == 2> t2;
sa<sizeof(sink_5_12568(source())) == 5> t5;
@@ -427,9 +427,9 @@ eight sink_5_12578(const volatile A&&);
int test5_12578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12578(a)) == 1> t1;
sa<sizeof(sink_5_12578(ca)) == 2> t2;
sa<sizeof(sink_5_12578(source())) == 5> t5;
@@ -448,9 +448,9 @@ eight sink_5_12678(const volatile A&&);
int test5_12678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_12678(a)) == 1> t1;
sa<sizeof(sink_5_12678(ca)) == 2> t2;
sa<sizeof(sink_5_12678(c_source())) == 6> t6;
@@ -468,9 +468,9 @@ six sink_5_13456(const A&&);
int test5_13456()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_13456(a)) == 1> t1;
sa<sizeof(sink_5_13456(ca)) == 4> t2;
sa<sizeof(sink_5_13456(va)) == 3> t3;
@@ -489,9 +489,9 @@ seven sink_5_13457(volatile A&&);
int test5_13457()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_13457(a)) == 1> t1;
sa<sizeof(sink_5_13457(ca)) == 4> t2;
sa<sizeof(sink_5_13457(va)) == 3> t3;
@@ -510,9 +510,9 @@ eight sink_5_13458(const volatile A&&);
int test5_13458()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_13458(a)) == 1> t1;
sa<sizeof(sink_5_13458(ca)) == 4> t2;
sa<sizeof(sink_5_13458(va)) == 3> t3;
@@ -533,9 +533,9 @@ seven sink_5_13467(volatile A&&);
int test5_13467()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_13467(a)) == 1> t1;
sa<sizeof(sink_5_13467(ca)) == 4> t2;
sa<sizeof(sink_5_13467(va)) == 3> t3;
@@ -554,9 +554,9 @@ eight sink_5_13468(const volatile A&&);
int test5_13468()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_13468(a)) == 1> t1;
sa<sizeof(sink_5_13468(ca)) == 4> t2;
sa<sizeof(sink_5_13468(va)) == 3> t3;
@@ -577,9 +577,9 @@ eight sink_5_13478(const volatile A&&);
int test5_13478()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_13478(a)) == 1> t1;
sa<sizeof(sink_5_13478(ca)) == 4> t2;
sa<sizeof(sink_5_13478(va)) == 3> t3;
@@ -600,9 +600,9 @@ seven sink_5_13567(volatile A&&);
int test5_13567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_13567(a)) == 1> t1;
sa<sizeof(sink_5_13567(va)) == 3> t3;
sa<sizeof(sink_5_13567(source())) == 5> t5;
@@ -620,9 +620,9 @@ eight sink_5_13568(const volatile A&&);
int test5_13568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_13568(a)) == 1> t1;
sa<sizeof(sink_5_13568(va)) == 3> t3;
sa<sizeof(sink_5_13568(source())) == 5> t5;
@@ -641,9 +641,9 @@ eight sink_5_13578(const volatile A&&);
int test5_13578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_13578(a)) == 1> t1;
sa<sizeof(sink_5_13578(va)) == 3> t3;
sa<sizeof(sink_5_13578(source())) == 5> t5;
@@ -662,9 +662,9 @@ eight sink_5_13678(const volatile A&&);
int test5_13678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_13678(a)) == 1> t1;
sa<sizeof(sink_5_13678(va)) == 3> t3;
sa<sizeof(sink_5_13678(c_source())) == 6> t6;
@@ -682,9 +682,9 @@ seven sink_5_14567(volatile A&&);
int test5_14567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_14567(a)) == 1> t1;
sa<sizeof(sink_5_14567(ca)) == 4> t2;
sa<sizeof(sink_5_14567(va)) == 4> t3;
@@ -704,9 +704,9 @@ eight sink_5_14568(const volatile A&&);
int test5_14568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_14568(a)) == 1> t1;
sa<sizeof(sink_5_14568(ca)) == 4> t2;
sa<sizeof(sink_5_14568(va)) == 4> t3;
@@ -727,9 +727,9 @@ eight sink_5_14578(const volatile A&&);
int test5_14578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_14578(a)) == 1> t1;
sa<sizeof(sink_5_14578(ca)) == 4> t2;
sa<sizeof(sink_5_14578(va)) == 4> t3;
@@ -750,9 +750,9 @@ eight sink_5_14678(const volatile A&&);
int test5_14678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_14678(a)) == 1> t1;
sa<sizeof(sink_5_14678(ca)) == 4> t2;
sa<sizeof(sink_5_14678(va)) == 4> t3;
@@ -772,9 +772,9 @@ eight sink_5_15678(const volatile A&&);
int test5_15678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_15678(a)) == 1> t1;
sa<sizeof(sink_5_15678(source())) == 5> t5;
sa<sizeof(sink_5_15678(c_source())) == 6> t6;
@@ -792,9 +792,9 @@ six sink_5_23456(const A&&);
int test5_23456()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_23456(ca)) == 2> t2;
sa<sizeof(sink_5_23456(va)) == 3> t3;
sa<sizeof(sink_5_23456(cva)) == 4> t4;
@@ -812,9 +812,9 @@ seven sink_5_23457(volatile A&&);
int test5_23457()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_23457(ca)) == 2> t2;
sa<sizeof(sink_5_23457(va)) == 3> t3;
sa<sizeof(sink_5_23457(cva)) == 4> t4;
@@ -833,9 +833,9 @@ eight sink_5_23458(const volatile A&&);
int test5_23458()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_23458(ca)) == 2> t2;
sa<sizeof(sink_5_23458(va)) == 3> t3;
sa<sizeof(sink_5_23458(cva)) == 4> t4;
@@ -855,9 +855,9 @@ seven sink_5_23467(volatile A&&);
int test5_23467()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_23467(ca)) == 2> t2;
sa<sizeof(sink_5_23467(va)) == 3> t3;
sa<sizeof(sink_5_23467(cva)) == 4> t4;
@@ -875,9 +875,9 @@ eight sink_5_23468(const volatile A&&);
int test5_23468()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_23468(ca)) == 2> t2;
sa<sizeof(sink_5_23468(va)) == 3> t3;
sa<sizeof(sink_5_23468(cva)) == 4> t4;
@@ -897,9 +897,9 @@ eight sink_5_23478(const volatile A&&);
int test5_23478()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_23478(ca)) == 2> t2;
sa<sizeof(sink_5_23478(va)) == 3> t3;
sa<sizeof(sink_5_23478(cva)) == 4> t4;
@@ -919,9 +919,9 @@ seven sink_5_23567(volatile A&&);
int test5_23567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_23567(ca)) == 2> t2;
sa<sizeof(sink_5_23567(va)) == 3> t3;
sa<sizeof(sink_5_23567(source())) == 5> t5;
@@ -939,9 +939,9 @@ eight sink_5_23568(const volatile A&&);
int test5_23568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_23568(ca)) == 2> t2;
sa<sizeof(sink_5_23568(va)) == 3> t3;
sa<sizeof(sink_5_23568(source())) == 5> t5;
@@ -960,9 +960,9 @@ eight sink_5_23578(const volatile A&&);
int test5_23578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_23578(ca)) == 2> t2;
sa<sizeof(sink_5_23578(va)) == 3> t3;
sa<sizeof(sink_5_23578(source())) == 5> t5;
@@ -981,9 +981,9 @@ eight sink_5_23678(const volatile A&&);
int test5_23678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_23678(ca)) == 2> t2;
sa<sizeof(sink_5_23678(va)) == 3> t3;
sa<sizeof(sink_5_23678(c_source())) == 6> t6;
@@ -1001,9 +1001,9 @@ seven sink_5_24567(volatile A&&);
int test5_24567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_24567(a)) == 2> t1;
sa<sizeof(sink_5_24567(ca)) == 2> t2;
sa<sizeof(sink_5_24567(va)) == 4> t3;
@@ -1023,9 +1023,9 @@ eight sink_5_24568(const volatile A&&);
int test5_24568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_24568(a)) == 2> t1;
sa<sizeof(sink_5_24568(ca)) == 2> t2;
sa<sizeof(sink_5_24568(va)) == 4> t3;
@@ -1046,9 +1046,9 @@ eight sink_5_24578(const volatile A&&);
int test5_24578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_24578(a)) == 2> t1;
sa<sizeof(sink_5_24578(ca)) == 2> t2;
sa<sizeof(sink_5_24578(va)) == 4> t3;
@@ -1069,9 +1069,9 @@ eight sink_5_24678(const volatile A&&);
int test5_24678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_24678(a)) == 2> t1;
sa<sizeof(sink_5_24678(ca)) == 2> t2;
sa<sizeof(sink_5_24678(va)) == 4> t3;
@@ -1091,9 +1091,9 @@ eight sink_5_25678(const volatile A&&);
int test5_25678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_25678(a)) == 2> t1;
sa<sizeof(sink_5_25678(ca)) == 2> t2;
sa<sizeof(sink_5_25678(source())) == 5> t5;
@@ -1112,9 +1112,9 @@ seven sink_5_34567(volatile A&&);
int test5_34567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_34567(a)) == 3> t1;
sa<sizeof(sink_5_34567(ca)) == 4> t2;
sa<sizeof(sink_5_34567(va)) == 3> t3;
@@ -1134,9 +1134,9 @@ eight sink_5_34568(const volatile A&&);
int test5_34568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_34568(a)) == 3> t1;
sa<sizeof(sink_5_34568(ca)) == 4> t2;
sa<sizeof(sink_5_34568(va)) == 3> t3;
@@ -1157,9 +1157,9 @@ eight sink_5_34578(const volatile A&&);
int test5_34578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_34578(a)) == 3> t1;
sa<sizeof(sink_5_34578(ca)) == 4> t2;
sa<sizeof(sink_5_34578(va)) == 3> t3;
@@ -1180,9 +1180,9 @@ eight sink_5_34678(const volatile A&&);
int test5_34678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_34678(a)) == 3> t1;
sa<sizeof(sink_5_34678(ca)) == 4> t2;
sa<sizeof(sink_5_34678(va)) == 3> t3;
@@ -1202,9 +1202,9 @@ eight sink_5_35678(const volatile A&&);
int test5_35678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_35678(a)) == 3> t1;
sa<sizeof(sink_5_35678(va)) == 3> t3;
sa<sizeof(sink_5_35678(source())) == 5> t5;
@@ -1223,9 +1223,9 @@ eight sink_5_45678(const volatile A&&);
int test5_45678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_5_45678(a)) == 4> t1;
sa<sizeof(sink_5_45678(ca)) == 4> t2;
sa<sizeof(sink_5_45678(va)) == 4> t3;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv6n.C b/gcc/testsuite/g++.dg/cpp0x/rv6n.C
index 2a2520c7599..6a81f66fa5c 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv6n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv6n.C
@@ -20,7 +20,7 @@ struct eight {char x[8];};
struct A
{
A();
- A(const volatile A&&);
+ A(const volatile A&&); // { dg-error "argument 1" }
};
A source();
@@ -40,9 +40,9 @@ six sink_6_123456(const A&&); // { dg-message "note" }
int test6_123456()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_123456(v_source()); // { dg-error "no match" }
sink_6_123456(cv_source()); // { dg-error "no match" }
return 0;
@@ -58,9 +58,9 @@ seven sink_6_123457(volatile A&&); // { dg-message "note" }
int test6_123457()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_123457(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -75,9 +75,9 @@ eight sink_6_235678(const volatile A&&); // { dg-message "" }
int test6_235678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_235678(a); // { dg-error "ambiguous" }
sink_6_235678(cva); // { dg-error "lvalue" }
return 0;
@@ -93,9 +93,9 @@ eight sink_6_234678(const volatile A&&); // { dg-message "note" }
int test6_234678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_234678(a); // { dg-error "ambiguous" }
sink_6_234678(source()); // { dg-error "ambiguous" }
return 0;
@@ -111,9 +111,9 @@ eight sink_6_234578(const volatile A&&); // { dg-message "note" }
int test6_234578()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_234578(a); // { dg-error "ambiguous" }
return 0;
}
@@ -128,9 +128,9 @@ eight sink_6_234568(const volatile A&&); // { dg-message "note" }
int test6_234568()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_234568(a); // { dg-error "ambiguous" }
return 0;
}
@@ -145,9 +145,9 @@ seven sink_6_234567(volatile A&&); // { dg-message "note" }
int test6_234567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_234567(a); // { dg-error "ambiguous" }
sink_6_234567(cv_source()); // { dg-error "no match" }
return 0;
@@ -163,9 +163,9 @@ eight sink_6_134678(const volatile A&&); // { dg-message "note" }
int test6_134678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_134678(source()); // { dg-error "ambiguous" }
return 0;
}
@@ -180,9 +180,9 @@ eight sink_6_124678(const volatile A&&); // { dg-message "note" }
int test6_124678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_124678(source()); // { dg-error "ambiguous" }
return 0;
}
@@ -197,9 +197,9 @@ eight sink_6_123678(const volatile A&&); // { dg-message "" }
int test6_123678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_123678(cva); // { dg-error "lvalue" }
sink_6_123678(source()); // { dg-error "ambiguous" }
return 0;
@@ -215,9 +215,9 @@ seven sink_6_123567(volatile A&&); // { dg-message "note" }
int test6_123567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_123567(cva); // { dg-error "no match" }
sink_6_123567(cv_source()); // { dg-error "no match" }
return 0;
@@ -233,9 +233,9 @@ eight sink_6_123568(const volatile A&&); // { dg-message "" }
int test6_123568()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_123568(cva); // { dg-error "lvalue" }
return 0;
}
@@ -250,9 +250,9 @@ eight sink_6_123578(const volatile A&&); // { dg-message "" }
int test6_123578()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_123578(cva); // { dg-error "lvalue" }
return 0;
}
@@ -267,9 +267,9 @@ seven sink_6_123467(volatile A&&); // { dg-message "note" }
int test6_123467()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_123467(source()); // { dg-error "ambiguous" }
sink_6_123467(cv_source()); // { dg-error "no match" }
return 0;
@@ -285,9 +285,9 @@ seven sink_6_124567(volatile A&&); // { dg-message "note" }
int test6_124567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_124567(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -302,9 +302,9 @@ eight sink_6_125678(const volatile A&&); // { dg-message "" }
int test6_125678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_125678(va); // { dg-error "lvalue" }
sink_6_125678(cva); // { dg-error "lvalue" }
return 0;
@@ -320,9 +320,9 @@ seven sink_6_134567(volatile A&&); // { dg-message "note" }
int test6_134567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_134567(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -337,9 +337,9 @@ eight sink_6_135678(const volatile A&&); // { dg-message "" }
int test6_135678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_6_135678(ca); // { dg-error "lvalue" }
sink_6_135678(cva); // { dg-error "lvalue" }
return 0;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv6p.C b/gcc/testsuite/g++.dg/cpp0x/rv6p.C
index 0e5352bf8b1..bb17d7929fe 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv6p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv6p.C
@@ -40,9 +40,9 @@ six sink_6_123456(const A&&);
int test6_123456()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_123456(a)) == 1> t1;
sa<sizeof(sink_6_123456(ca)) == 2> t2;
sa<sizeof(sink_6_123456(va)) == 3> t3;
@@ -62,9 +62,9 @@ seven sink_6_123457(volatile A&&);
int test6_123457()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_123457(a)) == 1> t1;
sa<sizeof(sink_6_123457(ca)) == 2> t2;
sa<sizeof(sink_6_123457(va)) == 3> t3;
@@ -85,9 +85,9 @@ eight sink_6_123458(const volatile A&&);
int test6_123458()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_123458(a)) == 1> t1;
sa<sizeof(sink_6_123458(ca)) == 2> t2;
sa<sizeof(sink_6_123458(va)) == 3> t3;
@@ -109,9 +109,9 @@ seven sink_6_123467(volatile A&&);
int test6_123467()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_123467(a)) == 1> t1;
sa<sizeof(sink_6_123467(ca)) == 2> t2;
sa<sizeof(sink_6_123467(va)) == 3> t3;
@@ -131,9 +131,9 @@ eight sink_6_123468(const volatile A&&);
int test6_123468()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_123468(a)) == 1> t1;
sa<sizeof(sink_6_123468(ca)) == 2> t2;
sa<sizeof(sink_6_123468(va)) == 3> t3;
@@ -155,9 +155,9 @@ eight sink_6_123478(const volatile A&&);
int test6_123478()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_123478(a)) == 1> t1;
sa<sizeof(sink_6_123478(ca)) == 2> t2;
sa<sizeof(sink_6_123478(va)) == 3> t3;
@@ -179,9 +179,9 @@ seven sink_6_123567(volatile A&&);
int test6_123567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_123567(a)) == 1> t1;
sa<sizeof(sink_6_123567(ca)) == 2> t2;
sa<sizeof(sink_6_123567(va)) == 3> t3;
@@ -201,9 +201,9 @@ eight sink_6_123568(const volatile A&&);
int test6_123568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_123568(a)) == 1> t1;
sa<sizeof(sink_6_123568(ca)) == 2> t2;
sa<sizeof(sink_6_123568(va)) == 3> t3;
@@ -224,9 +224,9 @@ eight sink_6_123578(const volatile A&&);
int test6_123578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_123578(a)) == 1> t1;
sa<sizeof(sink_6_123578(ca)) == 2> t2;
sa<sizeof(sink_6_123578(va)) == 3> t3;
@@ -247,9 +247,9 @@ eight sink_6_123678(const volatile A&&);
int test6_123678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_123678(a)) == 1> t1;
sa<sizeof(sink_6_123678(ca)) == 2> t2;
sa<sizeof(sink_6_123678(va)) == 3> t3;
@@ -269,9 +269,9 @@ seven sink_6_124567(volatile A&&);
int test6_124567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_124567(a)) == 1> t1;
sa<sizeof(sink_6_124567(ca)) == 2> t2;
sa<sizeof(sink_6_124567(va)) == 4> t3;
@@ -292,9 +292,9 @@ eight sink_6_124568(const volatile A&&);
int test6_124568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_124568(a)) == 1> t1;
sa<sizeof(sink_6_124568(ca)) == 2> t2;
sa<sizeof(sink_6_124568(va)) == 4> t3;
@@ -316,9 +316,9 @@ eight sink_6_124578(const volatile A&&);
int test6_124578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_124578(a)) == 1> t1;
sa<sizeof(sink_6_124578(ca)) == 2> t2;
sa<sizeof(sink_6_124578(va)) == 4> t3;
@@ -340,9 +340,9 @@ eight sink_6_124678(const volatile A&&);
int test6_124678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_124678(a)) == 1> t1;
sa<sizeof(sink_6_124678(ca)) == 2> t2;
sa<sizeof(sink_6_124678(va)) == 4> t3;
@@ -363,9 +363,9 @@ eight sink_6_125678(const volatile A&&);
int test6_125678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_125678(a)) == 1> t1;
sa<sizeof(sink_6_125678(ca)) == 2> t2;
sa<sizeof(sink_6_125678(source())) == 5> t5;
@@ -385,9 +385,9 @@ seven sink_6_134567(volatile A&&);
int test6_134567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_134567(a)) == 1> t1;
sa<sizeof(sink_6_134567(ca)) == 4> t2;
sa<sizeof(sink_6_134567(va)) == 3> t3;
@@ -408,9 +408,9 @@ eight sink_6_134568(const volatile A&&);
int test6_134568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_134568(a)) == 1> t1;
sa<sizeof(sink_6_134568(ca)) == 4> t2;
sa<sizeof(sink_6_134568(va)) == 3> t3;
@@ -432,9 +432,9 @@ eight sink_6_134578(const volatile A&&);
int test6_134578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_134578(a)) == 1> t1;
sa<sizeof(sink_6_134578(ca)) == 4> t2;
sa<sizeof(sink_6_134578(va)) == 3> t3;
@@ -456,9 +456,9 @@ eight sink_6_134678(const volatile A&&);
int test6_134678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_134678(a)) == 1> t1;
sa<sizeof(sink_6_134678(ca)) == 4> t2;
sa<sizeof(sink_6_134678(va)) == 3> t3;
@@ -479,9 +479,9 @@ eight sink_6_135678(const volatile A&&);
int test6_135678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_135678(a)) == 1> t1;
sa<sizeof(sink_6_135678(va)) == 3> t3;
sa<sizeof(sink_6_135678(source())) == 5> t5;
@@ -501,9 +501,9 @@ eight sink_6_145678(const volatile A&&);
int test6_145678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_145678(a)) == 1> t1;
sa<sizeof(sink_6_145678(ca)) == 4> t2;
sa<sizeof(sink_6_145678(va)) == 4> t3;
@@ -525,9 +525,9 @@ seven sink_6_234567(volatile A&&);
int test6_234567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_234567(ca)) == 2> t2;
sa<sizeof(sink_6_234567(va)) == 3> t3;
sa<sizeof(sink_6_234567(cva)) == 4> t4;
@@ -547,9 +547,9 @@ eight sink_6_234568(const volatile A&&);
int test6_234568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_234568(ca)) == 2> t2;
sa<sizeof(sink_6_234568(va)) == 3> t3;
sa<sizeof(sink_6_234568(cva)) == 4> t4;
@@ -570,9 +570,9 @@ eight sink_6_234578(const volatile A&&);
int test6_234578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_234578(ca)) == 2> t2;
sa<sizeof(sink_6_234578(va)) == 3> t3;
sa<sizeof(sink_6_234578(cva)) == 4> t4;
@@ -593,9 +593,9 @@ eight sink_6_234678(const volatile A&&);
int test6_234678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_234678(ca)) == 2> t2;
sa<sizeof(sink_6_234678(va)) == 3> t3;
sa<sizeof(sink_6_234678(cva)) == 4> t4;
@@ -615,9 +615,9 @@ eight sink_6_235678(const volatile A&&);
int test6_235678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_235678(ca)) == 2> t2;
sa<sizeof(sink_6_235678(va)) == 3> t3;
sa<sizeof(sink_6_235678(source())) == 5> t5;
@@ -637,9 +637,9 @@ eight sink_6_245678(const volatile A&&);
int test6_245678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_245678(a)) == 2> t1;
sa<sizeof(sink_6_245678(ca)) == 2> t2;
sa<sizeof(sink_6_245678(va)) == 4> t3;
@@ -661,9 +661,9 @@ eight sink_6_345678(const volatile A&&);
int test6_345678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_6_345678(a)) == 3> t1;
sa<sizeof(sink_6_345678(ca)) == 4> t2;
sa<sizeof(sink_6_345678(va)) == 3> t3;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv7n.C b/gcc/testsuite/g++.dg/cpp0x/rv7n.C
index 102730bc7f0..94254b5824b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv7n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv7n.C
@@ -20,7 +20,7 @@ struct eight {char x[8];};
struct A
{
A();
- A(const volatile A&&);
+ A(const volatile A&&); // { dg-error "argument 1" }
};
A source();
@@ -41,9 +41,9 @@ seven sink_7_1234567(volatile A&&); // { dg-message "note" }
int test7_1234567()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_7_1234567(cv_source()); // { dg-error "no match" }
return 0;
}
@@ -59,9 +59,9 @@ eight sink_7_1235678(const volatile A&&); // { dg-message "" }
int test7_1235678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_7_1235678(cva); // { dg-error "lvalue" }
return 0;
}
@@ -77,9 +77,9 @@ eight sink_7_2345678(const volatile A&&); // { dg-message "note" }
int test7_2345678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_7_2345678(a); // { dg-error "ambiguous" }
return 0;
}
@@ -95,9 +95,9 @@ eight sink_7_1234678(const volatile A&&); // { dg-message "note" }
int test7_1234678()
{
A a;
- const A ca = a;
+ const A ca = a; // { dg-error "lvalue" }
volatile A va;
- const volatile A cva = a;
+ const volatile A cva = a; // { dg-error "lvalue" }
sink_7_1234678(source()); // { dg-error "ambiguous" }
return 0;
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv7p.C b/gcc/testsuite/g++.dg/cpp0x/rv7p.C
index d25488f94f1..710f1cf048d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv7p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv7p.C
@@ -41,9 +41,9 @@ seven sink_7_1234567(volatile A&&);
int test7_1234567()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_7_1234567(a)) == 1> t1;
sa<sizeof(sink_7_1234567(ca)) == 2> t2;
sa<sizeof(sink_7_1234567(va)) == 3> t3;
@@ -65,9 +65,9 @@ eight sink_7_1234568(const volatile A&&);
int test7_1234568()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_7_1234568(a)) == 1> t1;
sa<sizeof(sink_7_1234568(ca)) == 2> t2;
sa<sizeof(sink_7_1234568(va)) == 3> t3;
@@ -90,9 +90,9 @@ eight sink_7_1234578(const volatile A&&);
int test7_1234578()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_7_1234578(a)) == 1> t1;
sa<sizeof(sink_7_1234578(ca)) == 2> t2;
sa<sizeof(sink_7_1234578(va)) == 3> t3;
@@ -115,9 +115,9 @@ eight sink_7_1234678(const volatile A&&);
int test7_1234678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_7_1234678(a)) == 1> t1;
sa<sizeof(sink_7_1234678(ca)) == 2> t2;
sa<sizeof(sink_7_1234678(va)) == 3> t3;
@@ -139,9 +139,9 @@ eight sink_7_1235678(const volatile A&&);
int test7_1235678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_7_1235678(a)) == 1> t1;
sa<sizeof(sink_7_1235678(ca)) == 2> t2;
sa<sizeof(sink_7_1235678(va)) == 3> t3;
@@ -163,9 +163,9 @@ eight sink_7_1245678(const volatile A&&);
int test7_1245678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_7_1245678(a)) == 1> t1;
sa<sizeof(sink_7_1245678(ca)) == 2> t2;
sa<sizeof(sink_7_1245678(va)) == 4> t3;
@@ -188,9 +188,9 @@ eight sink_7_1345678(const volatile A&&);
int test7_1345678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_7_1345678(a)) == 1> t1;
sa<sizeof(sink_7_1345678(ca)) == 4> t2;
sa<sizeof(sink_7_1345678(va)) == 3> t3;
@@ -213,9 +213,9 @@ eight sink_7_2345678(const volatile A&&);
int test7_2345678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_7_2345678(ca)) == 2> t2;
sa<sizeof(sink_7_2345678(va)) == 3> t3;
sa<sizeof(sink_7_2345678(cva)) == 4> t4;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv8p.C b/gcc/testsuite/g++.dg/cpp0x/rv8p.C
index cc7ff8a6ef3..8ee993854b8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv8p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv8p.C
@@ -42,9 +42,9 @@ eight sink_8_12345678(const volatile A&&);
int test8_12345678()
{
A a;
- const A ca = a;
+ const A ca;
volatile A va;
- const volatile A cva = a;
+ const volatile A cva;
sa<sizeof(sink_8_12345678(a)) == 1> t1;
sa<sizeof(sink_8_12345678(ca)) == 2> t2;
sa<sizeof(sink_8_12345678(va)) == 3> t3;
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/accessibility1.C b/gcc/testsuite/g++.dg/debug/dwarf2/accessibility1.C
new file mode 100644
index 00000000000..4992f41913f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/accessibility1.C
@@ -0,0 +1,24 @@
+// PR debug/44668
+// { dg-do compile }
+// { dg-options "-g -dA" }
+
+struct C
+{
+private:
+ typedef int a;
+ a b;
+ enum g { g1, g2 } h;
+ struct D { int i; } i;
+protected:
+ typedef int c;
+ c d;
+public:
+ typedef int e;
+ e f;
+} c;
+
+// 3 private DW_TAG_member dies, 1 private DW_TAG_typedef,
+// 1 private DW_TAG_enumeration_type and 1 private DW_TAG_structure_type
+// { dg-final { scan-assembler-times "3\[^\\r\\n\]* DW_AT_accessibility" 6 } }
+// 1 private DW_TAG_member die, 1 private DW_TAG_typedef
+// { dg-final { scan-assembler-times "2\[^\\r\\n\]* DW_AT_accessibility" 2 } }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C b/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
new file mode 100644
index 00000000000..c5520fa72b0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
@@ -0,0 +1,34 @@
+/* { dg-do compile } */
+/* { dg-options "-gdwarf-4" } */
+
+/* Regression test for an ICE in output_die when using -gdwarf-4. */
+
+namespace {
+
+struct A {
+ virtual ~A();
+};
+
+struct B : public A {
+ template <typename A>
+ bool foo(A x[2]) { }
+};
+
+template <typename T>
+struct C {
+ T v[2];
+};
+
+template <typename T>
+bool X(T &b) {
+ typedef C<int> D;
+ D x[2];
+ return b.foo(x);
+}
+
+void f() {
+ B b;
+ X<B>(b);
+}
+
+}
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/typedef3.C b/gcc/testsuite/g++.dg/debug/dwarf2/typedef3.C
new file mode 100644
index 00000000000..ca70d9cacfa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/typedef3.C
@@ -0,0 +1,19 @@
+// Origin: PR debug/44188
+// { dg-options "-g -dA" }
+// { dg-do compile }
+
+// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE\[^\n\r\]*DW_TAG_typedef\\)" 1 } }
+
+// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE\[^\n\r\]*DW_TAG_structure_type\\)" 1 } }
+
+typedef struct
+{
+ int i;
+} AAA;
+
+int
+main(void)
+{
+ AAA aa;
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/diagnostic/method1.C b/gcc/testsuite/g++.dg/diagnostic/method1.C
new file mode 100644
index 00000000000..8e1225d0722
--- /dev/null
+++ b/gcc/testsuite/g++.dg/diagnostic/method1.C
@@ -0,0 +1,20 @@
+// PR c++/44627
+// { dg-do compile }
+
+struct A
+{
+ A *foo ();
+};
+
+template <class T>
+void
+bar ()
+{
+ A::foo ().anything; // { dg-error "request for member" }
+}
+
+void
+baz ()
+{
+ bar <int> ();
+}
diff --git a/gcc/testsuite/g++.dg/diagnostic/parm1.C b/gcc/testsuite/g++.dg/diagnostic/parm1.C
new file mode 100644
index 00000000000..2e553e2d4c5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/diagnostic/parm1.C
@@ -0,0 +1,11 @@
+// PR c++/44366
+// While printing the operand of sizeof We were trying to print f as the
+// scope of t, causing infinite recursion.
+
+template <typename T>
+void f(T t, int(*)[sizeof(t)])
+{
+ struct A { void g() {
+ foo; // { dg-error "foo" }
+ } };
+}
diff --git a/gcc/testsuite/g++.dg/eh/new1.C b/gcc/testsuite/g++.dg/eh/new1.C
index 4c5c684b5f2..0f86fccdc93 100644
--- a/gcc/testsuite/g++.dg/eh/new1.C
+++ b/gcc/testsuite/g++.dg/eh/new1.C
@@ -9,7 +9,7 @@
int ret = 1;
void *ptr;
-void * operator new[] (size_t s) throw (std::bad_alloc)
+void * operator new[] (std::size_t s) throw (std::bad_alloc)
{
ptr = operator new (s);
return ptr;
diff --git a/gcc/testsuite/g++.dg/eh/spec8.C b/gcc/testsuite/g++.dg/eh/spec8.C
index 7a35e6e8072..72dadff2257 100644
--- a/gcc/testsuite/g++.dg/eh/spec8.C
+++ b/gcc/testsuite/g++.dg/eh/spec8.C
@@ -3,9 +3,9 @@
struct exception {};
template <typename T> void foo() throw(exception); // { dg-error "declaration" }
-template <typename T> void foo(); // { dg-error "exceptions" }
+template <typename T> void foo(); // { dg-error "exception" }
struct bar
{
- template <typename T> friend void foo(); // { dg-error "exceptions" }
+ template <typename T> friend void foo(); // { dg-error "exception" }
};
diff --git a/gcc/testsuite/g++.dg/expr/cond8.C b/gcc/testsuite/g++.dg/expr/cond8.C
index f05c81a26ce..11708ec0f6f 100644
--- a/gcc/testsuite/g++.dg/expr/cond8.C
+++ b/gcc/testsuite/g++.dg/expr/cond8.C
@@ -3,11 +3,11 @@
struct A
{
- A(void*);
+ A(void*); // { dg-error "initializing" }
~A();
};
void foo(const int i, bool b)
{
- b ? A(0) : i; // { dg-error "conversion|initializing" }
+ b ? A(0) : i; // { dg-error "conversion" }
}
diff --git a/gcc/testsuite/g++.dg/expr/string-1.C b/gcc/testsuite/g++.dg/expr/string-1.C
index 3901427f439..9a0a5ff7b45 100644
--- a/gcc/testsuite/g++.dg/expr/string-1.C
+++ b/gcc/testsuite/g++.dg/expr/string-1.C
@@ -1,9 +1,11 @@
// { dg-do compile }
// This testcase used to seg fault (PR c++/38648)
+// { dg-prune-output "initializer lists" }
+
char a[1];
-int foo( // { dg-error "extended initializer lists only available" }
+int foo(
{
a = ""; // { dg-error "" }
return 0; // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/ext/attr-alias-1.C b/gcc/testsuite/g++.dg/ext/attr-alias-1.C
new file mode 100644
index 00000000000..1427267e517
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/attr-alias-1.C
@@ -0,0 +1,37 @@
+/* { dg-do run } */
+/* { dg-require-alias "" } */
+
+#include <typeinfo>
+
+struct Klass
+{
+ int implementation () const;
+ int magic () const;
+};
+
+int Klass::implementation (void) const
+{
+ return 0;
+}
+
+int Klass::magic () const
+ __attribute__ ((alias ("_ZNK5Klass14implementationEv")));
+
+int __attribute__ ((noinline))
+ Foo (Klass const *ptr)
+{
+ if (ptr->magic () != 0)
+ return 1;
+
+ if (typeid (*ptr) != typeid (Klass))
+ return 2;
+
+ return 0;
+}
+
+int main ()
+{
+ Klass obj;
+
+ return Foo (&obj);
+}
diff --git a/gcc/testsuite/g++.dg/ext/attr-alias-2.C b/gcc/testsuite/g++.dg/ext/attr-alias-2.C
new file mode 100644
index 00000000000..61a132f77a7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/attr-alias-2.C
@@ -0,0 +1,37 @@
+/* { dg-do run } */
+/* { dg-require-alias "" } */
+
+#include <typeinfo>
+
+struct Klass
+{
+ int implementation () const;
+ virtual int magic () const;
+};
+
+int Klass::implementation (void) const
+{
+ return 0;
+}
+
+int Klass::magic () const
+ __attribute__ ((alias ("_ZNK5Klass14implementationEv")));
+
+int __attribute__ ((noinline))
+ Foo (Klass const *ptr)
+{
+ if (ptr->magic () != 0)
+ return 1;
+
+ if (typeid (*ptr) != typeid (Klass))
+ return 2;
+
+ return 0;
+}
+
+int main ()
+{
+ Klass obj;
+
+ return Foo (&obj);
+}
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index c263a94fd04..093e7f5004d 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -14,15 +14,15 @@ union U
double b;
};
-class B
+struct B
{
virtual ~B() { }
};
-class C
+struct C
: public B { };
-class D
+struct D
{
~D() { }
};
diff --git a/gcc/testsuite/g++.dg/ext/label13.C b/gcc/testsuite/g++.dg/ext/label13.C
index 7a2665c59d9..d932a9a5051 100644
--- a/gcc/testsuite/g++.dg/ext/label13.C
+++ b/gcc/testsuite/g++.dg/ext/label13.C
@@ -8,7 +8,7 @@ struct C
C();
};
-C::C() // { dg-bogus "can never be copied" "" { xfail *-apple-darwin* alpha*-dec-osf* } }
+C::C() // { dg-bogus "can never be copied" "" { xfail { { *-apple-darwin* alpha*-dec-osf* } || { hppa*-*-hpux* && { ! hppa*64*-*-* } } } } }
{
static void *labelref = &&label;
goto *labelref;
diff --git a/gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C b/gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C
index d5148bebbc6..51cc80cd2ac 100644
--- a/gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C
+++ b/gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C
@@ -5,72 +5,72 @@ struct C { };
bool nas1 = __has_nothrow_assign(I); // { dg-error "incomplete type" }
bool nas2 = __has_nothrow_assign(C[]);
-bool nas3 = __has_nothrow_assign(I[]);
+bool nas3 = __has_nothrow_assign(I[]); // { dg-error "incomplete type" }
bool nas4 = __has_nothrow_assign(void);
bool nas5 = __has_nothrow_assign(const void);
bool tas1 = __has_trivial_assign(I); // { dg-error "incomplete type" }
bool tas2 = __has_trivial_assign(C[]);
-bool tas3 = __has_trivial_assign(I[]);
+bool tas3 = __has_trivial_assign(I[]); // { dg-error "incomplete type" }
bool tas4 = __has_trivial_assign(void);
bool tas5 = __has_trivial_assign(const void);
bool nco1 = __has_nothrow_constructor(I); // { dg-error "incomplete type" }
bool nco2 = __has_nothrow_constructor(C[]);
-bool nco3 = __has_nothrow_constructor(I[]);
+bool nco3 = __has_nothrow_constructor(I[]); // { dg-error "incomplete type" }
bool nco4 = __has_nothrow_constructor(void);
bool nco5 = __has_nothrow_constructor(const void);
bool tco1 = __has_trivial_constructor(I); // { dg-error "incomplete type" }
bool tco2 = __has_trivial_constructor(C[]);
-bool tco3 = __has_trivial_constructor(I[]);
+bool tco3 = __has_trivial_constructor(I[]); // { dg-error "incomplete type" }
bool tco4 = __has_trivial_constructor(void);
bool tco5 = __has_trivial_constructor(const void);
bool ncp1 = __has_nothrow_copy(I); // { dg-error "incomplete type" }
bool ncp2 = __has_nothrow_copy(C[]);
-bool ncp3 = __has_nothrow_copy(I[]);
+bool ncp3 = __has_nothrow_copy(I[]); // { dg-error "incomplete type" }
bool ncp4 = __has_nothrow_copy(void);
bool ncp5 = __has_nothrow_copy(const void);
bool tcp1 = __has_trivial_copy(I); // { dg-error "incomplete type" }
bool tcp2 = __has_trivial_copy(C[]);
-bool tcp3 = __has_trivial_copy(I[]);
+bool tcp3 = __has_trivial_copy(I[]); // { dg-error "incomplete type" }
bool tcp4 = __has_trivial_copy(void);
bool tcp5 = __has_trivial_copy(const void);
bool vde1 = __has_virtual_destructor(I); // { dg-error "incomplete type" }
bool vde2 = __has_virtual_destructor(C[]);
-bool vde3 = __has_virtual_destructor(I[]);
+bool vde3 = __has_virtual_destructor(I[]); // { dg-error "incomplete type" }
bool vde4 = __has_virtual_destructor(void);
bool vde5 = __has_virtual_destructor(const void);
bool tde1 = __has_trivial_destructor(I); // { dg-error "incomplete type" }
bool tde2 = __has_trivial_destructor(C[]);
-bool tde3 = __has_trivial_destructor(I[]);
+bool tde3 = __has_trivial_destructor(I[]); // { dg-error "incomplete type" }
bool tde4 = __has_trivial_destructor(void);
bool tde5 = __has_trivial_destructor(const void);
bool abs1 = __is_abstract(I); // { dg-error "incomplete type" }
bool abs2 = __is_abstract(C[]);
-bool abs3 = __is_abstract(I[]);
+bool abs3 = __is_abstract(I[]); // { dg-error "incomplete type" }
bool abs4 = __is_abstract(void);
bool abs5 = __is_abstract(const void);
bool pod1 = __is_pod(I); // { dg-error "incomplete type" }
bool pod2 = __is_pod(C[]);
-bool pod3 = __is_pod(I[]);
+bool pod3 = __is_pod(I[]); // { dg-error "incomplete type" }
bool pod4 = __is_pod(void);
bool pod5 = __is_pod(const void);
bool emp1 = __is_empty(I); // { dg-error "incomplete type" }
bool emp2 = __is_empty(C[]);
-bool emp3 = __is_empty(I[]);
+bool emp3 = __is_empty(I[]); // { dg-error "incomplete type" }
bool emp4 = __is_empty(void);
bool emp5 = __is_empty(const void);
bool pol1 = __is_polymorphic(I); // { dg-error "incomplete type" }
bool pol2 = __is_polymorphic(C[]);
-bool pol3 = __is_polymorphic(I[]);
+bool pol3 = __is_polymorphic(I[]); // { dg-error "incomplete type" }
bool pol4 = __is_polymorphic(void);
bool pol5 = __is_polymorphic(const void);
diff --git a/gcc/testsuite/g++.dg/gomp/pr26690-1.C b/gcc/testsuite/g++.dg/gomp/pr26690-1.C
index c49c8b72180..71f1eb311ee 100644
--- a/gcc/testsuite/g++.dg/gomp/pr26690-1.C
+++ b/gcc/testsuite/g++.dg/gomp/pr26690-1.C
@@ -1,7 +1,7 @@
// PR c++/26690
// { dg-do compile }
-struct A // { dg-message "A::A\\(const A&\\)" }
+struct A // { dg-message "A::A" }
{
A (int); // { dg-message "candidates" }
};
diff --git a/gcc/testsuite/g++.dg/inherit/virtual5.C b/gcc/testsuite/g++.dg/inherit/virtual5.C
new file mode 100644
index 00000000000..bed0ef3a07b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/virtual5.C
@@ -0,0 +1,29 @@
+// Test that a synthesized op= can override one from a base.
+// { dg-do run }
+
+struct B;
+
+struct A
+{
+ virtual B& operator=(const B&);
+};
+
+struct B: A
+{
+ B(int i): i(i) { }
+ int i;
+ // implicitly-declared op=
+};
+
+B& A::operator=(const B& b) { return static_cast<B&>(*this); }
+
+int main()
+{
+ B b1 (123);
+ B b2 (0);
+
+ A& ar = b1;
+ ar = b2;
+
+ return b1.i;
+}
diff --git a/gcc/testsuite/g++.dg/init/ctor4.C b/gcc/testsuite/g++.dg/init/ctor4.C
index 0671dd8537d..1c92bb973d3 100644
--- a/gcc/testsuite/g++.dg/init/ctor4.C
+++ b/gcc/testsuite/g++.dg/init/ctor4.C
@@ -6,7 +6,7 @@ public:
foo();
};
-class bar: public foo {// { dg-error "uninitialized" }
+class bar: public foo { // { dg-error "reference|bar::bar" }
private:
int &a;
};
@@ -16,5 +16,5 @@ foo::foo() {
int main(int argc, char **argv)
{
- bar x; // { dg-message "synthesized" }
+ bar x; // { dg-message "synthesized|deleted" }
}
diff --git a/gcc/testsuite/g++.dg/init/new5.C b/gcc/testsuite/g++.dg/init/new5.C
index 3a5981e075c..0d99f93c634 100644
--- a/gcc/testsuite/g++.dg/init/new5.C
+++ b/gcc/testsuite/g++.dg/init/new5.C
@@ -2,8 +2,8 @@
#include <new>
-void * operator new[](size_t, std::nothrow_t const &) throw()
-{ return NULL; }
+void * operator new[](std::size_t, std::nothrow_t const &) throw()
+{ return 0; }
struct X {
struct Inner { ~Inner() {} };
diff --git a/gcc/testsuite/g++.dg/init/pr44086.C b/gcc/testsuite/g++.dg/init/pr44086.C
new file mode 100644
index 00000000000..e3304f4a27b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/pr44086.C
@@ -0,0 +1,15 @@
+// PR c++/44086
+// { dg-do compile }
+
+struct A
+{
+ int const i : 2; // { dg-message "should be initialized" }
+};
+
+void f()
+{
+ A a; // { dg-error "uninitialized const" }
+ new A; // { dg-error "uninitialized const" }
+ A();
+ new A();
+}
diff --git a/gcc/testsuite/g++.dg/init/synth2.C b/gcc/testsuite/g++.dg/init/synth2.C
index 624f10b2a4d..9e8a08a6ea3 100644
--- a/gcc/testsuite/g++.dg/init/synth2.C
+++ b/gcc/testsuite/g++.dg/init/synth2.C
@@ -5,7 +5,7 @@ struct G {
G(G&); // { dg-message "" "candidate" }
};
-class A // { dg-error "no match" }
+class A // { dg-error "" }
{
const G g;
};
@@ -13,5 +13,5 @@ class A // { dg-error "no match" }
int main()
{
A a;
- A b = a; // { dg-message "required here" }
+ A b = a; // { dg-message "required here|deleted" }
}
diff --git a/gcc/testsuite/g++.dg/ipa/iinline-2.C b/gcc/testsuite/g++.dg/ipa/iinline-2.C
new file mode 100644
index 00000000000..670a5dd9522
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/iinline-2.C
@@ -0,0 +1,61 @@
+/* Verify that simple indirect calls are inlined even without early
+ inlining.. */
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining" } */
+/* { dg-add-options bind_pic_locally } */
+
+extern void non_existent (const char *, int);
+
+class String
+{
+private:
+ const char *data;
+
+public:
+ String (const char *d) : data(d)
+ {}
+
+ int funcOne (int delim) const;
+ int printStuffTwice (int delim) const;
+};
+
+
+int String::funcOne (int delim) const
+{
+ int i;
+ for (i = 0; i < delim; i++)
+ non_existent(data, i);
+
+ return 1;
+}
+
+extern int global;
+
+int docalling (int c, int (String::* f)(int delim) const)
+{
+ String S ("muhehehe");
+
+ if (c > 2)
+ global = 3;
+ else
+ global = 5;
+
+ return (S.*f)(4);
+}
+
+int __attribute__ ((noinline,noclone)) get_input (void)
+{
+ return 1;
+}
+
+int main (int argc, char *argv[])
+{
+ int i = 0;
+ while (i < 1000)
+ i += docalling (get_input (), &String::funcOne);
+ non_existent ("done", i);
+ return 0;
+}
+
+/* { dg-final { scan-ipa-dump "String::funcOne\[^\\n\]*inline copy in int main" "inline" } } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/g++.dg/ipa/iinline-3.C b/gcc/testsuite/g++.dg/ipa/iinline-3.C
new file mode 100644
index 00000000000..3daee9a8681
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/iinline-3.C
@@ -0,0 +1,64 @@
+/* Verify that we do not indirect-inline using member pointer
+ parameters which have been modified. */
+/* { dg-do run } */
+/* { dg-options "-O3 -fno-early-inlining" } */
+/* { dg-add-options bind_pic_locally } */
+
+extern "C" void abort (void);
+
+class String
+{
+private:
+ const char *data;
+
+public:
+ String (const char *d) : data(d)
+ {}
+
+ int funcOne (int stuff) const;
+ int funcTwo (int stuff) const;
+};
+
+
+int String::funcOne (int stuff) const
+{
+ return stuff + 1;
+}
+
+int String::funcTwo (int stuff) const
+{
+ return stuff + 100;
+}
+
+int (String::* gmp)(int stuff) const = &String::funcTwo;
+
+int docalling_1 (int (String::* f)(int stuff) const)
+{
+ String S ("muhehehe");
+
+ return (S.*f)(4);
+}
+
+int docalling (int a, int (String::* f)(int stuff) const)
+{
+ if (a < 200)
+ f = gmp;
+
+ return docalling_1 (f);
+}
+
+int __attribute__ ((noinline,noclone)) get_input (void)
+{
+ return 1;
+}
+
+int main (int argc, char *argv[])
+{
+ int i = 0;
+ while (i < 10)
+ i += docalling (get_input (), &String::funcOne);
+
+ if (i != 104)
+ abort();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/lto/20081118_1.C b/gcc/testsuite/g++.dg/lto/20081118_1.C
index b9e56a48b9b..a1bf08186df 100644
--- a/gcc/testsuite/g++.dg/lto/20081118_1.C
+++ b/gcc/testsuite/g++.dg/lto/20081118_1.C
@@ -1,4 +1,5 @@
class object {
+public:
virtual ~object() {}
};
diff --git a/gcc/testsuite/g++.dg/lto/20100603-1_0.C b/gcc/testsuite/g++.dg/lto/20100603-1_0.C
new file mode 100644
index 00000000000..8fe11a2f17c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/20100603-1_0.C
@@ -0,0 +1,14 @@
+/* { dg-lto-do link } */
+
+extern "C" {
+ typedef struct {} CvImage;
+ extern CvImage* Cv_ImageNew(void);
+}
+void __attribute__((noinline,noclone))
+_Raytrace(CvImage* LImage) { __asm volatile (""); }
+int main(int LArgC, char** LArgV)
+{
+ CvImage* LImage = Cv_ImageNew();
+ _Raytrace(LImage);
+}
+
diff --git a/gcc/testsuite/g++.dg/lto/20100603-1_1.c b/gcc/testsuite/g++.dg/lto/20100603-1_1.c
new file mode 100644
index 00000000000..fddce5d4b1e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/20100603-1_1.c
@@ -0,0 +1,2 @@
+typedef struct {} CvImage;
+CvImage* Cv_ImageNew(void) { }
diff --git a/gcc/testsuite/g++.dg/other/arm-neon-1.C b/gcc/testsuite/g++.dg/other/arm-neon-1.C
new file mode 100644
index 00000000000..33cc04b69dc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/arm-neon-1.C
@@ -0,0 +1,18 @@
+/* Basic smoke test for arm_neon.h */
+
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-add-options arm_neon } */
+
+#include "arm_neon.h"
+
+float a[4];
+
+void test(void)
+{
+ float32x2x2_t v;
+ float32x2_t res;
+ v = vld2_f32(a);
+ res = vadd_f32(v.val[0], v.val[1]);
+ vst1_f32(a, res);
+}
diff --git a/gcc/testsuite/g++.dg/other/error13.C b/gcc/testsuite/g++.dg/other/error13.C
index 89e88478679..784550180ff 100644
--- a/gcc/testsuite/g++.dg/other/error13.C
+++ b/gcc/testsuite/g++.dg/other/error13.C
@@ -5,6 +5,6 @@ struct A // { dg-message "note" }
A(void x); // { dg-error "invalid use|incomplete type|candidates" }
};
-struct B : A {}; // { dg-error "no matching function for call" }
+struct B : A {}; // { dg-error "no matching function for call|deleted" }
-B b; // { dg-message "synthesized method" }
+B b; // { dg-message "synthesized method|deleted" }
diff --git a/gcc/testsuite/g++.dg/other/error20.C b/gcc/testsuite/g++.dg/other/error20.C
index 6f3f778ab84..e546b3726e3 100644
--- a/gcc/testsuite/g++.dg/other/error20.C
+++ b/gcc/testsuite/g++.dg/other/error20.C
@@ -1,7 +1,7 @@
// PR c++/34275
// { dg-do compile }
-struct A // { dg-message "candidate is" }
+struct A // { dg-message "operator=" }
{
virtual A foo ();
};
diff --git a/gcc/testsuite/g++.dg/other/error31.C b/gcc/testsuite/g++.dg/other/error31.C
index c4095504d6d..d3e3e09a37c 100644
--- a/gcc/testsuite/g++.dg/other/error31.C
+++ b/gcc/testsuite/g++.dg/other/error31.C
@@ -3,7 +3,7 @@
// { dg-options "" }
// { dg-bogus "not supported by" "" { target *-*-* } 0 }
-struct A {}; // { dg-message "note: candidate is" }
+struct A {}; // { dg-message "operator=" }
void
foo ()
diff --git a/gcc/testsuite/g++.dg/other/pr25632.C b/gcc/testsuite/g++.dg/other/pr25632.C
index fe0ad7a2497..e66ae3b51ec 100644
--- a/gcc/testsuite/g++.dg/other/pr25632.C
+++ b/gcc/testsuite/g++.dg/other/pr25632.C
@@ -2,14 +2,12 @@
/* { dg-do compile } */
-#define unsigned
-__extension__ typedef __SIZE_TYPE__ ssize_t;
-#undef unsigned
+__extension__ typedef __INTPTR_TYPE__ intptr_t;
struct sockaddr_un {
char sun_path[1];
};
-const unsigned SI_SUN_HEAD_LEN = (ssize_t)(((struct sockaddr_un *)0)->sun_path);
+const unsigned SI_SUN_HEAD_LEN = (intptr_t)(((struct sockaddr_un *)0)->sun_path);
int SiGetPeerName ()
{
return SI_SUN_HEAD_LEN;
diff --git a/gcc/testsuite/g++.dg/other/typedef4.C b/gcc/testsuite/g++.dg/other/typedef4.C
new file mode 100644
index 00000000000..b752f2cae7a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/typedef4.C
@@ -0,0 +1,7 @@
+// { dg-options "-g" }
+// { dg-do compile }
+
+// On some platforms like MIPS, __builtin_va_list is a
+// RECORD_TYPE. Make sure we don't wrongly try to generate debug info
+// for its TYPE_DECL and crash.
+typedef __builtin_va_list foo;
diff --git a/gcc/testsuite/g++.dg/other/unused1.C b/gcc/testsuite/g++.dg/other/unused1.C
index d652f41a1de..2a3ca1be749 100644
--- a/gcc/testsuite/g++.dg/other/unused1.C
+++ b/gcc/testsuite/g++.dg/other/unused1.C
@@ -32,7 +32,7 @@ int bar4 (void)
return const_cast<printer *>(dotmatrix)->i;
}
-class class1 { virtual ~class1(); } *c1;
+class class1 { public: virtual ~class1(); } *c1;
class class2 : class1 { char j; };
int bar5 (void)
{
diff --git a/gcc/testsuite/g++.dg/overload/arg3.C b/gcc/testsuite/g++.dg/overload/arg3.C
index 8ece6a6f3ca..eb65271752e 100644
--- a/gcc/testsuite/g++.dg/overload/arg3.C
+++ b/gcc/testsuite/g++.dg/overload/arg3.C
@@ -14,10 +14,9 @@ struct B : A
B(B&); // { dg-message "candidates" "" }
};
-void foo(B);
+void foo(B); // { dg-error "initializing" }
void bar()
{
foo(0); // { dg-error "no matching function" "no matching" }
- // { dg-error "initializing" "initializing" { target *-*-* } 21 }
}
diff --git a/gcc/testsuite/g++.dg/overload/copy1.C b/gcc/testsuite/g++.dg/overload/copy1.C
index 6a774c6770b..2bd8e539dd1 100644
--- a/gcc/testsuite/g++.dg/overload/copy1.C
+++ b/gcc/testsuite/g++.dg/overload/copy1.C
@@ -10,12 +10,11 @@ struct B
struct A
{
- A (B);
+ A (B); // { dg-error "initializing" }
};
B
f (B const& b)
{
return b; // { dg-error "matching" "matching" }
- // { dg-error "initializing" "initializing" { target *-*-* } 19 }
}
diff --git a/gcc/testsuite/g++.dg/parse/error19.C b/gcc/testsuite/g++.dg/parse/error19.C
index 0955e6a9076..3b7e7175b17 100644
--- a/gcc/testsuite/g++.dg/parse/error19.C
+++ b/gcc/testsuite/g++.dg/parse/error19.C
@@ -1,7 +1,7 @@
// { dg-options "-fshow-column -fmessage-length=0 -ansi -pedantic-errors -Wno-long-long " }
// PR C++/17867
-struct A // { dg-message "8:candidate is:" }
+struct A // { dg-message "8:operator=" }
{
A(int);
};
diff --git a/gcc/testsuite/g++.dg/plugin/attribute_plugin.c b/gcc/testsuite/g++.dg/plugin/attribute_plugin.c
index d62ab90542c..6327095f7cd 100644
--- a/gcc/testsuite/g++.dg/plugin/attribute_plugin.c
+++ b/gcc/testsuite/g++.dg/plugin/attribute_plugin.c
@@ -8,6 +8,8 @@
#include "tree.h"
#include "tree-pass.h"
#include "intl.h"
+#include "toplev.h"
+#include "plugin.h"
int plugin_is_GPL_compatible;
diff --git a/gcc/testsuite/g++.dg/plugin/dumb_plugin.c b/gcc/testsuite/g++.dg/plugin/dumb_plugin.c
index 3aee8db840c..f12a6a0d35b 100644
--- a/gcc/testsuite/g++.dg/plugin/dumb_plugin.c
+++ b/gcc/testsuite/g++.dg/plugin/dumb_plugin.c
@@ -9,6 +9,7 @@
#include "tree.h"
#include "tree-pass.h"
#include "intl.h"
+#include "toplev.h"
int plugin_is_GPL_compatible;
@@ -65,7 +66,7 @@ static struct gimple_opt_pass pass_dumb_plugin_example =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/testsuite/g++.dg/plugin/header_plugin.c b/gcc/testsuite/g++.dg/plugin/header_plugin.c
index 71a0c3bf2f4..a464827dee9 100644
--- a/gcc/testsuite/g++.dg/plugin/header_plugin.c
+++ b/gcc/testsuite/g++.dg/plugin/header_plugin.c
@@ -13,8 +13,8 @@
/* gcc/ headers. */
#include "cp/cp-tree.h"
#include "diagnostic.h"
-#include "c-common.h"
-#include "c-pretty-print.h"
+#include "c-family/c-common.h"
+#include "c-family/c-pretty-print.h"
#include "tree-iterator.h"
#include "plugin.h"
#include "tree-flow.h"
diff --git a/gcc/testsuite/g++.dg/plugin/pragma_plugin.c b/gcc/testsuite/g++.dg/plugin/pragma_plugin.c
index 237fcdddfa9..4a9ea47195d 100644
--- a/gcc/testsuite/g++.dg/plugin/pragma_plugin.c
+++ b/gcc/testsuite/g++.dg/plugin/pragma_plugin.c
@@ -9,10 +9,11 @@
#include "rtl.h"
#include "tree.h"
#include "function.h"
-#include "c-pragma.h"
+#include "c-family/c-pragma.h"
#include "cpplib.h"
#include "tree-pass.h"
#include "intl.h"
+#include "toplev.h"
int plugin_is_GPL_compatible;
diff --git a/gcc/testsuite/g++.dg/plugin/selfassign.c b/gcc/testsuite/g++.dg/plugin/selfassign.c
index 8d76301d815..eb8f24a45a8 100644
--- a/gcc/testsuite/g++.dg/plugin/selfassign.c
+++ b/gcc/testsuite/g++.dg/plugin/selfassign.c
@@ -52,9 +52,7 @@ get_real_ref_rhs (tree expr)
/* We are only interested in an assignment with a single
rhs operand because if it is not, the original assignment
will not possibly be a self-assignment. */
- if (is_gimple_assign (def_stmt)
- && (get_gimple_rhs_class (gimple_assign_rhs_code (def_stmt))
- == GIMPLE_SINGLE_RHS))
+ if (gimple_assign_single_p (def_stmt))
return get_real_ref_rhs (gimple_assign_rhs1 (def_stmt));
else
return NULL_TREE;
@@ -66,7 +64,7 @@ get_real_ref_rhs (tree expr)
case PARM_DECL:
case FIELD_DECL:
case COMPONENT_REF:
- case INDIRECT_REF:
+ case MEM_REF:
case ARRAY_REF:
return expr;
default:
@@ -116,17 +114,18 @@ get_non_ssa_expr (tree expr)
else
return expr;
}
- case INDIRECT_REF:
+ case MEM_REF:
{
tree orig_base = TREE_OPERAND (expr, 0);
- tree base = get_non_ssa_expr (orig_base);
- if (!base)
- return NULL_TREE;
- /* If BASE is converted, build a new indirect reference tree. */
- if (base != orig_base)
- return build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (base)), base);
- else
- return expr;
+ if (TREE_CODE (orig_base) == SSA_NAME)
+ {
+ tree base = get_non_ssa_expr (orig_base);
+ if (!base)
+ return NULL_TREE;
+ return fold_build2 (MEM_REF, TREE_TYPE (expr),
+ base, TREE_OPERAND (expr, 1));
+ }
+ return expr;
}
case ARRAY_REF:
{
@@ -153,9 +152,7 @@ get_non_ssa_expr (tree expr)
&& !gimple_nop_p (SSA_NAME_DEF_STMT (expr)))
{
gimple def_stmt = SSA_NAME_DEF_STMT (expr);
- if (is_gimple_assign (def_stmt)
- && (get_gimple_rhs_class (gimple_assign_rhs_code (def_stmt))
- == GIMPLE_SINGLE_RHS))
+ if (gimple_assign_single_p (def_stmt))
vdecl = gimple_assign_rhs1 (def_stmt);
}
return get_non_ssa_expr (vdecl);
@@ -201,9 +198,7 @@ warn_self_assign (gimple stmt)
tree rhs, lhs;
/* Check assigment statement. */
- if (is_gimple_assign (stmt)
- && (get_gimple_rhs_class (gimple_assign_rhs_code (stmt))
- == GIMPLE_SINGLE_RHS))
+ if (gimple_assign_single_p (stmt))
{
rhs = get_real_ref_rhs (gimple_assign_rhs1 (stmt));
if (!rhs)
@@ -275,7 +270,7 @@ static struct gimple_opt_pass pass_warn_self_assign =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/testsuite/g++.dg/pr44486.C b/gcc/testsuite/g++.dg/pr44486.C
new file mode 100644
index 00000000000..01e84289f0b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr44486.C
@@ -0,0 +1,10 @@
+// PR c++/44486 missing space in __PRETTY_FUNCTION__ expansion in anonymous namespace
+// { dg-do compile }
+// { dg-options "" }
+
+struct S { };
+namespace { S f() { const char * s = __PRETTY_FUNCTION__; return S(); } }
+
+int main() { f(); }
+
+// { dg-final { scan-assembler "S \{anonymous\}::f" } }
diff --git a/gcc/testsuite/g++.dg/tc1/dr147.C b/gcc/testsuite/g++.dg/tc1/dr147.C
index a29986b5559..6799b7dccad 100644
--- a/gcc/testsuite/g++.dg/tc1/dr147.C
+++ b/gcc/testsuite/g++.dg/tc1/dr147.C
@@ -54,3 +54,13 @@ struct D: C::C
{
D(): C::C() { }
};
+
+// And if lookup doesn't find the injected-class-name, we aren't naming the
+// constructor (c++/44401).
+
+struct E
+{
+ int E;
+};
+
+int E::*p = &E::E;
diff --git a/gcc/testsuite/g++.dg/tc1/dr152.C b/gcc/testsuite/g++.dg/tc1/dr152.C
index cac7aacc0eb..fdf4f124bb1 100644
--- a/gcc/testsuite/g++.dg/tc1/dr152.C
+++ b/gcc/testsuite/g++.dg/tc1/dr152.C
@@ -7,12 +7,11 @@ namespace N1 {
X(); // { dg-message "candidate" }
explicit X(const X&);
};
- void f(X);
+ void f(X); // { dg-error "initializing" }
int foo()
{
X x;
f(x); // { dg-error "matching" "matching" }
- // { dg-error "initializing" "initializing" { target *-*-* } 14 }
}
}
@@ -24,14 +23,13 @@ namespace N2 {
};
template <class T>
- void f(T ) {}
+ void f(T ) {} // { dg-error "initializing" }
template <class T>
int foo()
{
X<T> x;
N2::f(x); // { dg-error "matching" "matching" }
- // { dg-error "initializing " initializing" { target *-*-* } 33 }
}
template int foo<float>(); // { dg-message "instantiated from here" }
diff --git a/gcc/testsuite/g++.dg/template/crash100.C b/gcc/testsuite/g++.dg/template/crash100.C
new file mode 100644
index 00000000000..c67ae2eca38
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/crash100.C
@@ -0,0 +1,24 @@
+// PR c++/44628
+
+template <typename T>
+class Temp
+{
+ int Val;
+ public:
+ operator T&(void) { return Val; }
+
+ virtual T& operator=(T a ) // { dg-error "overriding" }
+ {
+ Val = a;
+ return Val;
+ }
+};
+
+class Int : public Temp<int>
+{
+ public:
+ Int& operator=(int a) // { dg-error "conflicting return type" }
+ {
+ return (*this);
+ }
+};
diff --git a/gcc/testsuite/g++.dg/template/error23.C b/gcc/testsuite/g++.dg/template/error23.C
index 8e5dee76dda..f21d8d9d07c 100644
--- a/gcc/testsuite/g++.dg/template/error23.C
+++ b/gcc/testsuite/g++.dg/template/error23.C
@@ -8,10 +8,10 @@ struct nullptr_type {
operator T* ( void ) const {
return ( 0 );
}
-} const nullptr;
+} const nullptr_ob;
int main ( void ) {
- 0 == nullptr; // { dg-error "match" }
+ 0 == nullptr_ob; // { dg-error "match" }
}
diff --git a/gcc/testsuite/g++.dg/template/incomplete4.C b/gcc/testsuite/g++.dg/template/incomplete4.C
index 6129e0d6fd0..f2832a73c4c 100644
--- a/gcc/testsuite/g++.dg/template/incomplete4.C
+++ b/gcc/testsuite/g++.dg/template/incomplete4.C
@@ -5,12 +5,12 @@ class A; // { dg-error "forward declaration" }
template <typename T> struct X
{
- static int f (T);
+ static int f (T); // { dg-error "initializing" }
static const T &make ();
};
int
main ()
{
- return X<A>::f (X<A>::make ()); // { dg-error "invalid use of incomplete type|initializing argument" }
+ return X<A>::f (X<A>::make ()); // { dg-error "invalid use of incomplete type" }
}
diff --git a/gcc/testsuite/g++.dg/template/incomplete5.C b/gcc/testsuite/g++.dg/template/incomplete5.C
index 9641003ddda..f7802825fde 100644
--- a/gcc/testsuite/g++.dg/template/incomplete5.C
+++ b/gcc/testsuite/g++.dg/template/incomplete5.C
@@ -5,9 +5,9 @@ class A; // { dg-error "forward declaration" }
template <typename T> struct X
{
- static int f (T);
+ static int f (T); // { dg-error "initializing" }
static const T &make ();
- static const bool value = sizeof (f (make ())) == sizeof (int); // { dg-error "invalid use of incomplete type|initializing argument" }
+ static const bool value = sizeof (f (make ())) == sizeof (int); // { dg-error "invalid use of incomplete type" }
};
int
diff --git a/gcc/testsuite/g++.dg/template/qualified-id2.C b/gcc/testsuite/g++.dg/template/qualified-id2.C
new file mode 100644
index 00000000000..e88e8547457
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/qualified-id2.C
@@ -0,0 +1,27 @@
+// PR c++/44587
+// { dg-do run }
+
+template <const char *N> struct A { static const char *p; };
+template <const char *N> const char *A<N>::p = N;
+template <class T> struct B { static const char c[1]; typedef A<B<T>::c> C; };
+template <class T> const char B<T>::c[1] = "";
+template <class T> struct D { static const char c[1]; typedef A<c> C; };
+template <class T> const char D<T>::c[1] = "";
+
+template <int& I> struct E { static int *ip; };
+template <int& I> int* E<I>::ip = &I;
+template <class T> struct F { static int i; typedef E<F<T>::i> C; };
+template <class T> int F<T>::i;
+template <class T> struct G { static int i; typedef E<i> C; };
+template <class T> int G<T>::i;
+
+#define AS(X) if (!(X)) return 1;
+int main()
+{
+ AS(B<int>::C::p == B<int>::c);
+ AS(B<float>::C::p == B<float>::c);
+ AS(B<float>::C::p != B<int>::c);
+ AS(D<int>::C::p == D<int>::c);
+ AS(D<float>::C::p == D<float>::c);
+ AS(D<float>::C::p != D<int>::c);
+}
diff --git a/gcc/testsuite/g++.dg/template/qualified-id3.C b/gcc/testsuite/g++.dg/template/qualified-id3.C
new file mode 100644
index 00000000000..d97ef5c592b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/qualified-id3.C
@@ -0,0 +1,14 @@
+// PR c++/44587
+
+template <const int N> struct A { };
+template <class T> struct B {
+ static const int c;
+ typedef A<B<T>::c> C; // { dg-error "non-constant" }
+};
+template <class T> const int B<T>::c = sizeof (T);
+
+template <const int N> struct D { };
+template <class T> struct E {
+ static const int c = sizeof (T);
+ typedef D<E<T>::c> F; // OK
+};
diff --git a/gcc/testsuite/g++.dg/template/qualttp5.C b/gcc/testsuite/g++.dg/template/qualttp5.C
index fc93f462835..c3ebd8c82f6 100644
--- a/gcc/testsuite/g++.dg/template/qualttp5.C
+++ b/gcc/testsuite/g++.dg/template/qualttp5.C
@@ -4,7 +4,7 @@
template <class U> struct A
{
- template <class T> class B {}; // { dg-message "candidate is" }
+ template <class T> class B {}; // { dg-message "operator=" }
};
template <template <class> class TT> void f()
diff --git a/gcc/testsuite/g++.dg/torture/pr43801.C b/gcc/testsuite/g++.dg/torture/pr43801.C
new file mode 100644
index 00000000000..3b52d4abcc6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr43801.C
@@ -0,0 +1,22 @@
+// PR tree-optimization/43801
+// { dg-do compile }
+// { dg-options "-fipa-cp -fipa-cp-clone" }
+
+struct A
+{
+ virtual void f (int);
+};
+struct B : virtual A
+{
+ virtual void f (int i) { if (i) A::f(0); }
+};
+struct C : virtual B
+{
+ virtual void f (int) { B::f(0); }
+};
+
+void
+foo ()
+{
+ C ();
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr43905.C b/gcc/testsuite/g++.dg/torture/pr43905.C
new file mode 100644
index 00000000000..0e49a32a1dd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr43905.C
@@ -0,0 +1,13 @@
+extern void sf ( __const char *);
+struct Matrix{
+ int operator[](int n){
+ sf ( __PRETTY_FUNCTION__);
+ }
+ int operator[](int n)const{
+ sf ( __PRETTY_FUNCTION__);
+ }
+};
+void calcmy(Matrix const &b, Matrix &c, int k){
+ b[k];
+ c[k];
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr44357.C b/gcc/testsuite/g++.dg/torture/pr44357.C
new file mode 100644
index 00000000000..3380350e81b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr44357.C
@@ -0,0 +1,228 @@
+/* { dg-do compile } */
+extern "C"
+{
+ typedef long unsigned int size_t;
+}
+namespace llvm
+{
+ namespace dont_use
+ {
+ template < typename T > double is_class_helper (...);
+ }
+ template < typename T > struct is_class
+ {
+ public:enum
+ { value = sizeof (char) == sizeof (dont_use::is_class_helper < T > (0)) };
+ };
+ template < typename T > struct isPodLike
+ {
+ static const bool value = !is_class < T >::value;
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default")))
+{
+ template < typename _Iterator > struct iterator_traits
+ {
+ };
+ template < typename _Tp > struct iterator_traits <_Tp * >
+ {
+ typedef _Tp value_type;
+ };
+}
+
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
+{
+ template < typename _Tp > class new_allocator
+ {
+ public:typedef size_t size_type;
+ typedef const _Tp & const_reference;
+ };
+}
+
+namespace std __attribute__ ((__visibility__ ("default")))
+{
+template < typename _Tp > class allocator:public __gnu_cxx::new_allocator <
+ _Tp >
+ {
+ public:typedef size_t size_type;
+ template < typename _Tp1 > struct rebind
+ {
+ typedef allocator < _Tp1 > other;
+ };
+ };
+ template < typename _Tp, typename _Alloc > struct _Vector_base
+ {
+ typedef typename _Alloc::template rebind < _Tp >::other _Tp_alloc_type;
+ };
+template < typename _Tp, typename _Alloc = std::allocator < _Tp > >class vector:protected _Vector_base < _Tp,
+ _Alloc
+ >
+ {
+ typedef _Vector_base < _Tp, _Alloc > _Base;
+ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
+ public:typedef _Tp value_type;
+ typedef typename _Tp_alloc_type::const_reference const_reference;
+ typedef size_t size_type;
+ size_type size () const
+ {
+ } const_reference operator[] (size_type __n) const
+ {
+ }};
+}
+
+namespace llvm
+{
+ struct LandingPadInfo;
+ class DwarfException
+ {
+ static bool PadLT (const LandingPadInfo * L, const LandingPadInfo * R);
+ struct CallSiteEntry
+ {
+ };
+ void EmitExceptionTable ();
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default")))
+{
+ template < typename _RandomAccessIterator,
+ typename _Compare >
+ void __unguarded_linear_insert (_RandomAccessIterator __last,
+ _Compare __comp)
+ {
+ typename iterator_traits < _RandomAccessIterator >::value_type __val =
+ (*__last);
+ _RandomAccessIterator __next = __last;
+ while (__comp (__val, *__next))
+ {
+ }
+ }
+ template < typename _RandomAccessIterator,
+ typename _Compare > void __insertion_sort (_RandomAccessIterator __first,
+ _RandomAccessIterator __last,
+ _Compare __comp)
+ {
+ for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
+ {
+ if (__comp (*__i, *__first))
+ {
+ }
+ else
+ std::__unguarded_linear_insert (__i, __comp);
+ }
+ }
+ enum
+ { _S_threshold = 16 };
+ template < typename _RandomAccessIterator,
+ typename _Compare >
+ void __final_insertion_sort (_RandomAccessIterator __first,
+ _RandomAccessIterator __last,
+ _Compare __comp)
+ {
+ if (__last - __first > int (_S_threshold))
+ {
+ std::__insertion_sort (__first, __first + int (_S_threshold), __comp);
+ }
+ }
+ template < typename _RandomAccessIterator,
+ typename _Compare > inline void sort (_RandomAccessIterator __first,
+ _RandomAccessIterator __last,
+ _Compare __comp)
+ {
+ if (__first != __last)
+ {
+ std::__final_insertion_sort (__first, __last, __comp);
+ }
+ }
+}
+
+namespace llvm
+{
+ class SmallVectorBase
+ {
+ protected:void *BeginX, *EndX, *CapacityX;
+ struct U
+ {
+ } FirstEl;
+ protected: SmallVectorBase (size_t Size):BeginX (&FirstEl), EndX (&FirstEl),
+ CapacityX ((char *) &FirstEl + Size)
+ {
+ }};
+template < typename T > class SmallVectorTemplateCommon:public
+ SmallVectorBase
+ {
+ public: SmallVectorTemplateCommon (size_t Size):SmallVectorBase (Size)
+ {
+ } typedef size_t size_type;
+ typedef T *iterator;
+ iterator begin ()
+ {
+ } iterator end ()
+ {
+ } size_type size () const
+ {
+ }};
+template < typename T, bool isPodLike > class SmallVectorTemplateBase:public SmallVectorTemplateCommon <
+ T >
+ {
+ public: SmallVectorTemplateBase (size_t Size):SmallVectorTemplateCommon < T >
+ (Size)
+ {
+ }};
+template < typename T > class SmallVectorImpl:public SmallVectorTemplateBase < T,
+ isPodLike < T >::value >
+ {
+ typedef SmallVectorTemplateBase < T, isPodLike < T >::value > SuperClass;
+ public:typedef typename SuperClass::iterator iterator;
+ explicit SmallVectorImpl (unsigned N):SmallVectorTemplateBase < T,
+ isPodLike < T >::value > (N * sizeof (T))
+ {
+ }
+ };
+ template < typename T,
+ unsigned N > class SmallVector:public SmallVectorImpl < T >
+ {
+ typedef typename SmallVectorImpl < T >::U U;
+ enum
+ { MinUs =
+ (static_cast < unsigned int >(sizeof (T)) * N + static_cast <
+ unsigned int >(sizeof (U)) - 1) /static_cast <
+ unsigned int >(sizeof (U)), NumInlineEltsElts =
+ MinUs > 1 ? (MinUs - 1) : 1, NumTsAvailable =
+ (NumInlineEltsElts + 1) * static_cast <
+ unsigned int >(sizeof (U)) / static_cast <
+ unsigned int >(sizeof (T)) };
+ public: SmallVector ():SmallVectorImpl < T > (NumTsAvailable)
+ {
+ }
+ };
+ struct LandingPadInfo
+ {
+ std::vector < int >TypeIds;
+ union
+ {
+ } Contents;
+ };
+}
+
+using namespace llvm;
+bool
+DwarfException::PadLT (const LandingPadInfo * L, const LandingPadInfo * R)
+{
+ const std::vector < int >&LIds = L->TypeIds, &RIds = R->TypeIds;
+ unsigned LSize = LIds.size (), RSize = RIds.size ();
+ unsigned MinSize = LSize < RSize ? LSize : RSize;
+ for (unsigned i = 0; i != MinSize; ++i)
+ if (LIds[i] != RIds[i])
+ return LIds[i] < RIds[i];
+}
+
+void
+DwarfException::EmitExceptionTable ()
+{
+ SmallVector < const LandingPadInfo *, 64 > LandingPads;
+ std::sort (LandingPads.begin (), LandingPads.end (), PadLT);
+ SmallVector < CallSiteEntry, 64 > CallSites;
+ for (unsigned i = 0, e = CallSites.size (); i < e; ++i)
+ {
+ }
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr44492.C b/gcc/testsuite/g++.dg/torture/pr44492.C
new file mode 100644
index 00000000000..41669241e7e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr44492.C
@@ -0,0 +1,31 @@
+// PR middle-end/44492
+// { dg-do run }
+
+struct T { unsigned long p; };
+struct S { T a, b, c; unsigned d; };
+
+__attribute__((noinline))
+void
+bar (const T &x, const T &y)
+{
+ if (x.p != 0x2348 || y.p != 0x2346)
+ __builtin_abort ();
+}
+
+__attribute__((noinline))
+void
+foo (S &s, T e)
+{
+ unsigned long a = e.p;
+ unsigned long b = s.b.p;
+ __asm__ volatile ("" : : "rm" (a), "rm" (b));
+ bar (e, s.b);
+}
+
+int
+main ()
+{
+ S s = { { 0x2345 }, { 0x2346 }, { 0x2347 }, 6 };
+ T t = { 0x2348 };
+ foo (s, t);
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr44535.C b/gcc/testsuite/g++.dg/torture/pr44535.C
new file mode 100644
index 00000000000..9126f3997fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr44535.C
@@ -0,0 +1,34 @@
+/* { dg-do run } */
+
+namespace FOO {
+
+template <typename T>
+class A
+{
+public:
+ void Enum();
+ virtual void OnProv() = 0;
+ virtual ~A() { }
+};
+typedef A<char> B;
+
+template<typename T>
+void A<T>::Enum ()
+{
+ OnProv ();
+}
+} // namespace FOO
+
+class C {};
+
+class D: public C, public FOO::B {
+public:
+ void OnProv() {}
+};
+
+int main(int argc, char *argv[])
+{
+ D x;
+ x.Enum();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C b/gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C
index 2be04691537..03f6b1207c7 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C
@@ -25,5 +25,7 @@ int foo(Object&o)
return o[0];
}
-/* { dg-final { scan-tree-dump-not ".* = \[^>;\]*;" "dce2" } } */
+/* Remaining should be two loads. */
+
+/* { dg-final { scan-tree-dump-times " = \[^\n\]*;" 2 "dce2" } } */
/* { dg-final { cleanup-tree-dump "dce2" } } */
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr31146.C b/gcc/testsuite/g++.dg/tree-ssa/pr31146.C
index 96790239693..478a488e3c2 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr31146.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr31146.C
@@ -12,5 +12,5 @@ void foo (int j)
*q = 1;
}
-/* { dg-final { scan-tree-dump "i\\\[j.*\\\] =.* 1;" "forwprop1" } } */
+/* { dg-final { scan-tree-dump "MEM\\\[.*&i\\\]\\\[j.*\\\] =.* 1;" "forwprop1" } } */
/* { dg-final { cleanup-tree-dump "forwprop?" } } */
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr33604.C b/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
index d78006220ed..7e820d3ef16 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O -fdump-tree-forwprop1" } */
+/* { dg-options "-O -fdump-tree-optimized-vops" } */
struct Value
{
@@ -35,12 +35,14 @@ int main(int argc, char *argv[])
return 0;
}
-/* Check that we forward propagated
+/* Check that we propagate
D.2182_13 = (struct Ref *) &D.2137.lhs;
to
D.2182_13->lhs.m ={v} &I;
yielding
- D.2137.lhs.m ={v} &I; */
+ D.2137.lhs.m ={v} &I;
+ so that SRA can promote all locals to registers and we end up
+ referencing a single virtual operand at abort () after optimization. */
-/* { dg-final { scan-tree-dump-times "D\\\.....\\\..hs\\\.m =" 2 "forwprop1" } } */
-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+/* { dg-final { scan-tree-dump-times ".MEM_\[0-9\]*\\\(D\\\)" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-10.C b/gcc/testsuite/g++.dg/warn/Wunused-var-10.C
new file mode 100644
index 00000000000..ffdb8932790
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-var-10.C
@@ -0,0 +1,42 @@
+// PR c++/44412
+// { dg-do compile }
+// { dg-options "-Wunused" }
+
+struct S
+{
+ static const int a = 3;
+ static int b;
+ int c;
+};
+
+const int S::a;
+int S::b = 4;
+
+int
+f1 ()
+{
+ S s;
+ return s.a;
+}
+
+int
+f2 ()
+{
+ S s;
+ return s.b;
+}
+
+void
+f3 ()
+{
+ S s; // { dg-warning "set but not used" }
+ s.c = 6;
+}
+
+int
+f4 ()
+{
+ S s;
+ s.c = 6;
+ return s.c;
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-11.C b/gcc/testsuite/g++.dg/warn/Wunused-var-11.C
new file mode 100644
index 00000000000..c7c1bf35ff7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-var-11.C
@@ -0,0 +1,33 @@
+// PR c++/44412
+// { dg-do compile }
+// { dg-options "-Wunused" }
+
+struct S
+{
+ int foo ();
+ static int bar ();
+};
+
+int S::foo ()
+{
+ return 5;
+}
+
+int S::bar ()
+{
+ return 6;
+}
+
+int
+f1 ()
+{
+ S s;
+ return s.foo ();
+}
+
+int
+f2 ()
+{
+ S s;
+ return s.bar ();
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-12.C b/gcc/testsuite/g++.dg/warn/Wunused-var-12.C
new file mode 100644
index 00000000000..3300cbe3d8a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-var-12.C
@@ -0,0 +1,36 @@
+// PR c++/44444
+// { dg-do compile }
+// { dg-options "-Wunused" }
+
+struct S
+{
+ const int &u;
+ const int &v;
+ S (const int &a, const int &b) : u(a), v(b) { }
+};
+
+bool
+f1 ()
+{
+ bool t = false;
+ S z = S (1, 2);
+ t |= z.u == 1;
+ t |= z.v == 2;
+ return t;
+}
+
+void
+f2 ()
+{
+ S z = S (1, 2);
+ z.u; // { dg-warning "no effect" }
+}
+
+int i;
+
+void
+f3 ()
+{
+ S z = S (1, 2);
+ i++, z.u; // { dg-warning "no effect" }
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-13.C b/gcc/testsuite/g++.dg/warn/Wunused-var-13.C
new file mode 100644
index 00000000000..43df81d888c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-var-13.C
@@ -0,0 +1,22 @@
+// PR c++/44619
+// { dg-do compile }
+// { dg-options "-Wunused -W" }
+
+struct S { int x, y; };
+
+int
+f1 ()
+{
+ struct S p;
+ int S::*q = &S::x;
+ p.*q = 5;
+ return p.*q;
+}
+
+int
+f2 (struct S *p, int S::*q)
+{
+ struct S *r = p;
+ int S::*s = q;
+ return r->*s;
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-14.C b/gcc/testsuite/g++.dg/warn/Wunused-var-14.C
new file mode 100644
index 00000000000..a552b56dad1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-var-14.C
@@ -0,0 +1,17 @@
+// PR c++/44682
+// { dg-do compile }
+// { dg-options "-Wunused" }
+
+struct S { virtual ~S () {} };
+struct T { virtual ~T () {} };
+struct U : S, T {};
+
+void f (U &);
+
+void
+g (void *v)
+{
+ T *t = static_cast <T *> (v);
+ U *u = static_cast <U *> (t);
+ f (*u);
+}
diff --git a/gcc/testsuite/g++.dg/warn/incomplete2.C b/gcc/testsuite/g++.dg/warn/incomplete2.C
index 9fdfcba9479..30be26749c9 100644
--- a/gcc/testsuite/g++.dg/warn/incomplete2.C
+++ b/gcc/testsuite/g++.dg/warn/incomplete2.C
@@ -3,11 +3,11 @@
class A; // { dg-error "forward declaration" }
-int f (A);
+int f (A); // { dg-error "initializing" }
const A &make ();
int
main ()
{
- return f (make ()); // { dg-error "invalid use of incomplete type|initializing argument" }
+ return f (make ()); // { dg-error "invalid use of incomplete type" }
}
diff --git a/gcc/testsuite/g++.old-deja/g++.bob/inherit2.C b/gcc/testsuite/g++.old-deja/g++.bob/inherit2.C
index 14bc32b6a78..6e26ecfa639 100644
--- a/gcc/testsuite/g++.old-deja/g++.bob/inherit2.C
+++ b/gcc/testsuite/g++.old-deja/g++.bob/inherit2.C
@@ -10,16 +10,15 @@ private:
const A& operator =(const A &) { abort(); }
};
-class B : public A { // { dg-error "within" }
+class B : public A { // { dg-error "" }
public:
B(void) {}
};
-void f(B b) {
+void f(B b) { // { dg-error "initializing" }
}
void g() {
B h;
- f(h); // { dg-error "argument" "arg" }
- // { dg-message "synthesized" "synth" { target *-*-* } 23 }
+ f(h); // { dg-message "synthesized|deleted" "synth" }
}
diff --git a/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C b/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C
index 8d91db67ae8..4290144f89f 100644
--- a/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C
+++ b/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C
@@ -23,9 +23,9 @@ struct0::struct0 (int, void *) // { dg-message "note" }
{
}
-struct struct0_derived_struct_0 : public struct0 { // { dg-error "no matching" }
+struct struct0_derived_struct_0 : public struct0 { // { dg-error "no matching|deleted" }
};
-struct0_derived_struct_0 object; // { dg-message "synthesized" }
+struct0_derived_struct_0 object; // { dg-message "synthesized|deleted" }
int main () { return 0; }
diff --git a/gcc/testsuite/g++.old-deja/g++.bugs/900514_03.C b/gcc/testsuite/g++.old-deja/g++.bugs/900514_03.C
index 3826e08e009..c06cef18380 100644
--- a/gcc/testsuite/g++.old-deja/g++.bugs/900514_03.C
+++ b/gcc/testsuite/g++.old-deja/g++.bugs/900514_03.C
@@ -16,7 +16,7 @@
struct t_0_st_0;
-struct t_0_st_1 {
+struct t_0_st_1 { // { dg-error "initializing" }
int member;
t_0_st_1 (t_0_st_0&);// { dg-message "note" }
@@ -83,7 +83,7 @@ void t_1_local_init ()
struct t_2_st_0;
-struct t_2_st_1 {
+struct t_2_st_1 { // { dg-error "initializing" }
int member;
t_2_st_1 (t_2_st_0); // { dg-message "note" }
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/new.C b/gcc/testsuite/g++.old-deja/g++.jason/new.C
index d5260ce8eca..905739b1ba3 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/new.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/new.C
@@ -3,10 +3,10 @@
#include <new>
extern "C" int printf (const char *, ...);
-extern "C" void *malloc (size_t);
-size_t s;
+extern "C" void *malloc (std::size_t);
+std::size_t s;
-void * operator new (size_t siz) throw (std::bad_alloc) {
+void * operator new (std::size_t siz) throw (std::bad_alloc) {
if (s == 0)
s = siz;
else
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/opeq3.C b/gcc/testsuite/g++.old-deja/g++.jason/opeq3.C
index 7a50abb2567..b4e6e2550c0 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/opeq3.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/opeq3.C
@@ -1,7 +1,7 @@
// { dg-do assemble }
// Bug: g++ generates code for assignment in invalid situations.
-class X { // { dg-error "assignment" }
+class X { // { dg-error "reference|operator=" }
int& a;
public:
X(int& i): a(i) { }
@@ -11,5 +11,5 @@ void foo ()
{
int one=1, two=2;
X a(one), b(two);
- a = b; // { dg-message "synthesized" }
+ a = b; // { dg-message "synthesized|deleted" }
}
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 3d63d01c0a9..0d61c49abd7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -6,10 +6,12 @@
// Subject: gcc 2.4.3.1: illegal constructor call not rejected
// Date: Tue, 15 Jun 1993 18:34:14 +0200 (MET DST)
+// C++0x mode doesn't print the deleted copy constructor as a candidate.
+// { dg-prune-output ":14:" }
#include <fstream>
-class X : public std::ifstream { // { dg-message "note" } candidate
+class X : public std::ifstream {
public:
X(int a, const char *b) {} // { dg-message "note" } candidate
};
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors5.C b/gcc/testsuite/g++.old-deja/g++.law/ctors5.C
index 7c376229b69..7b2c782b30b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors5.C
@@ -5,7 +5,7 @@
// Subject: bug in handling static const object of the enclosing class
// Date: Tue, 1 Sep 92 10:38:44 EDT
-class X // { dg-message "7:X::X\\(const X&\\)" } implicit constructor
+class X // { dg-message "7:X::X" } implicit constructor
{
private:
int x;
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators27.C b/gcc/testsuite/g++.old-deja/g++.law/operators27.C
index c284a2a3cde..5fb3a74cbfa 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators27.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators27.C
@@ -12,7 +12,7 @@ int FLAG=0;
extern "C" int printf( const char *, ...);
-void * operator new(size_t, const std::nothrow_t&) throw() { FLAG=1; return 0; }
+void * operator new(std::size_t, const std::nothrow_t&) throw() { FLAG=1; return 0; }
class K {
private:
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p755.C b/gcc/testsuite/g++.old-deja/g++.mike/p755.C
index bf4302b797e..28eeefad43d 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p755.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p755.C
@@ -6,7 +6,7 @@
extern "C" void _exit(int);
-void* operator new(size_t sz) throw (std::bad_alloc) {
+void* operator new(std::size_t sz) throw (std::bad_alloc) {
void* p = 0;
_exit(0);
return p;
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/delete1.C b/gcc/testsuite/g++.old-deja/g++.oliva/delete1.C
index 3912dbad5ed..368a87a2a9a 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/delete1.C
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/delete1.C
@@ -28,5 +28,4 @@ struct baz : foo {
virtual ~baz() {} // { dg-error "" } delete is private in vdtor
} baz_;
-struct bad : baz {} bad_; // { dg-error "" } delete is private in vdtor
-// { dg-message "synthesized" "note" { target *-*-* } 31 }
+struct bad : baz {} bad_; // { dg-message "" } delete is private in vdtor
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/dwarf2.C b/gcc/testsuite/g++.old-deja/g++.oliva/dwarf2.C
index 4c1db253bbc..c50b1b7d6be 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/dwarf2.C
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/dwarf2.C
@@ -1,5 +1,4 @@
// { dg-do assemble }
-// { dg-xfail-if "" { i386-pc-solaris* } { "*" } { "" } }
// Copyright (C) 1999 Free Software Foundation
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/dwarf3.C b/gcc/testsuite/g++.old-deja/g++.oliva/dwarf3.C
index 3c01238a38e..bbe5b0c9c57 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/dwarf3.C
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/dwarf3.C
@@ -1,5 +1,4 @@
// { dg-do assemble }
-// { dg-xfail-if "" { i386-pc-solaris* } { "*" } { "" } }
// Copyright (C) 1999 Free Software Foundation
diff --git a/gcc/testsuite/g++.old-deja/g++.other/delete3.C b/gcc/testsuite/g++.old-deja/g++.other/delete3.C
index 469d6382eae..9c6c58e966e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/delete3.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/delete3.C
@@ -16,7 +16,7 @@ map<T, U>::~map ()
struct SomeClass { };
-void* operator new(size_t numBytes, SomeClass&, const std::nothrow_t&) throw()
+void* operator new(std::size_t numBytes, SomeClass&, const std::nothrow_t&) throw()
{
return operator new(numBytes, std::nothrow);
}
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init19.C b/gcc/testsuite/g++.old-deja/g++.other/init19.C
index 6d9c8290ed3..1c686841243 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init19.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init19.C
@@ -1,4 +1,4 @@
-// { dg-do run { xfail { ! cxa_atexit } } }
+// { dg-do run { xfail { { ! cxa_atexit } && { ! *-*-solaris2* } } } }
#include <stdlib.h>
#define assert(x) do { if (! (x)) abort(); } while (0)
diff --git a/gcc/testsuite/g++.old-deja/g++.other/new.C b/gcc/testsuite/g++.old-deja/g++.other/new.C
index c3d77c6ca63..3c3494ef759 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/new.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/new.C
@@ -3,12 +3,12 @@
#include <new>
inline void *
-operator new(size_t alloc_sz, const char *fname, unsigned lineno)
+operator new(std::size_t alloc_sz, const char *fname, unsigned lineno)
{
return ::operator new (alloc_sz);
}
inline void *
-operator new[](size_t alloc_sz, const char *fname, unsigned lineno)
+operator new[](std::size_t alloc_sz, const char *fname, unsigned lineno)
{
return ::operator new[] (alloc_sz);
}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/assign1.C b/gcc/testsuite/g++.old-deja/g++.pt/assign1.C
index 464b7c692d0..854d8ee27a9 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/assign1.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/assign1.C
@@ -2,7 +2,7 @@
// Origin: Mark Mitchell <mark@codesourcery.com>
template <class T>
-struct S { // { dg-error "assignment" }
+struct S { // { dg-error "const|operator=" }
S();
T t;
};
@@ -10,5 +10,5 @@ struct S { // { dg-error "assignment" }
void f()
{
S<const int> s;
- s = s; // { dg-message "synthesized" }
+ s = s; // { dg-message "synthesized|deleted" }
}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C b/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C
index 37af9ca434e..3a587d8738e 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C
@@ -44,7 +44,7 @@ struct Derived : Base { Derived() {} };
auto_ptr<Derived> f() { auto_ptr<Derived> null(0); return null; }
void g(auto_ptr<Derived>) { }
-void h(auto_ptr<Base>) { }
+void h(auto_ptr<Base>) { } // { dg-error "initializing" }
int main() {
auto_ptr<Base> x(f());
@@ -52,5 +52,4 @@ int main() {
x = y;
g(f());
h(f()); // { dg-error "match" "match" } no usable copy ctor
-// { dg-error "initializing" "init" { target *-*-* } 54 }
}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash20.C b/gcc/testsuite/g++.old-deja/g++.pt/crash20.C
index 0a3220921ce..a5175b9909b 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash20.C
@@ -1,8 +1,7 @@
// { dg-do compile }
template <class T = int>
-struct A { // { dg-error "assignment" "assignment" }
-// { dg-message "instantiated" "inst" { target *-*-* } 4 }
+struct A { // { dg-message "const|operator=" "assignment" }
const T x;
A() : x(0) { } A(T x) : x(x) { }
};
@@ -11,7 +10,7 @@ template <class B>
void func ()
{
B y;
- y = B(); // { dg-message "synthesized" }
+ y = B(); // { dg-message "synthesized|deleted" }
}
int main (void) { func< A<> >(); }
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash9.C b/gcc/testsuite/g++.old-deja/g++.pt/crash9.C
index 20bd7584fdd..f2d811dda1a 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash9.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash9.C
@@ -1,11 +1,11 @@
// { dg-do assemble }
template <class T>
-void f(T) {}
+void f(T) {} // { dg-error "initializing" }
class C; // { dg-error "forward declaration" }
void g(const C& c)
{
- f(c); // { dg-error "invalid use of incomplete type|initializing argument" }
+ f(c); // { dg-error "invalid use of incomplete type" }
}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20100609-1.c b/gcc/testsuite/gcc.c-torture/compile/20100609-1.c
new file mode 100644
index 00000000000..8e1175faa32
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20100609-1.c
@@ -0,0 +1,8 @@
+extern unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base);
+int find_reloads (int i, char *p)
+{
+ int c;
+ while ((c = *p++))
+ return strtoul (p - 1, &p, 10);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pc44485.c b/gcc/testsuite/gcc.c-torture/compile/pc44485.c
new file mode 100644
index 00000000000..fc959257dd3
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pc44485.c
@@ -0,0 +1,46 @@
+static int
+foo (int si1, int si2)
+{
+ return si1 > 0 && si2 > 0 && si1 > -si2 || si1 < 0 && si2 < 0
+ && si1 < -si2 ? : si1 + si2;
+}
+
+struct S0
+{
+ unsigned short f1;
+};
+int g_4;
+struct S0 g_54 = {
+ 3428
+};
+
+int
+func_21 (int * p_22, int * const int32p_24, unsigned p_25,
+ const int * p_26);
+
+void int324 (unsigned p_15, int * p_16, int * p_17, int * p_18)
+{
+ if (foo (g_4, func_21 (p_18, &g_4, 0, 0)))
+ {
+ for (g_54.f1; g_54.f1; g_54.f1 += 1)
+ {
+ }
+ }
+}
+
+int
+func_21 (int * p_22, int * const int32p_24, unsigned p_25,
+ const int * p_26)
+{
+ for (0; 1; p_25 += 1)
+ lbl_29:if (p_25)
+ goto lbl_28;
+lbl_28:for (p_25 = 0; p_25 < 9; p_25 += 1)
+ if (p_25)
+ goto lbl_29;
+ unsigned short l_53;
+ for (0; l_53; l_53 = foo)
+ {
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr44686.c b/gcc/testsuite/gcc.c-torture/compile/pr44686.c
new file mode 100644
index 00000000000..eacd83d3130
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr44686.c
@@ -0,0 +1,7 @@
+/* { dg-options "-O2 -fipa-pta -fprofile-generate" } */
+void *
+memcpy (void *a, const void *b, __SIZE_TYPE__ len)
+{
+ if (a == b)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr44687.c b/gcc/testsuite/gcc.c-torture/compile/pr44687.c
new file mode 100644
index 00000000000..f59c2efd0f5
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr44687.c
@@ -0,0 +1,32 @@
+typedef int int32_t;
+typedef unsigned char uint8_t;
+struct S0
+{
+ uint8_t f0;
+};
+struct S0 *g_18[7][5][1][1] = {
+};
+
+struct S0 **g_17 = &g_18[0][3][0][0];
+int32_t g_86;
+struct S0 func_72 (uint8_t p_73, struct S0 p_74);
+
+void int326 (struct S0 **p_67, int32_t p_68, int32_t * *const p_69,
+ struct S0 *p_70)
+{
+ struct S0 l_95 = {
+ -1L
+ };
+ func_72 (1L, func_72 (0, l_95));
+}
+
+struct S0
+func_72 (uint8_t p_73, struct S0 p_74)
+{
+ int32_t *l_85 = &g_86;
+ if (*l_85)
+ lbl_94:*l_85 ^= 0;
+ if (g_86)
+ goto lbl_94;
+ return **g_17;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20100316-1.c b/gcc/testsuite/gcc.c-torture/execute/20100316-1.c
new file mode 100644
index 00000000000..8367d7273d2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20100316-1.c
@@ -0,0 +1,24 @@
+struct Foo {
+ int i;
+ unsigned precision : 10;
+ unsigned blah : 3;
+} f;
+
+int __attribute__((noinline,noclone))
+foo (struct Foo *p)
+{
+ struct Foo *q = p;
+ return (*q).precision;
+}
+
+extern void abort (void);
+
+int main()
+{
+ f.i = -1;
+ f.precision = 0;
+ f.blah = -1;
+ if (foo (&f) != 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/960321-1.x b/gcc/testsuite/gcc.c-torture/execute/960321-1.x
new file mode 100644
index 00000000000..44cc702686d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/960321-1.x
@@ -0,0 +1,15 @@
+# This test fails to link on 64-bit Solaris 2/x86 due to a Sun as bug.
+if { [istarget "i?86-*-solaris2*"]
+ && ! [check_effective_target_ilp32]
+ && ! [check_effective_target_gas] } {
+ set torture_eval_before_compile {
+ global compiler_conditional_xfail_data
+ set compiler_conditional_xfail_data {
+ "64-bit Sun as bug" \
+ { "i?86-*-solaris2*" } \
+ { "-O[1-3s]" } \
+ { "" }
+ }
+ }
+}
+return 0
diff --git a/gcc/testsuite/gcc.c-torture/execute/frame-address.c b/gcc/testsuite/gcc.c-torture/execute/frame-address.c
index 942f5c5d653..109c2b229c8 100644
--- a/gcc/testsuite/gcc.c-torture/execute/frame-address.c
+++ b/gcc/testsuite/gcc.c-torture/execute/frame-address.c
@@ -25,7 +25,8 @@ int check_fa (char *unused)
{
const char c = 0;
- return check_fa_mid (&c);
+ /* Prevent a tail call to check_fa_mid, eliding the current stack frame. */
+ return check_fa_mid (&c) != 0;
}
int how_much (void)
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr44468.c b/gcc/testsuite/gcc.c-torture/execute/pr44468.c
new file mode 100644
index 00000000000..c4bd492656d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr44468.c
@@ -0,0 +1,60 @@
+#include <stddef.h>
+
+struct S {
+ int i;
+ int j;
+};
+struct R {
+ int k;
+ struct S a;
+};
+struct Q {
+ float k;
+ struct S a;
+};
+struct Q s;
+int __attribute__((noinline,noclone))
+test1 (void *q)
+{
+ struct S *b = (struct S *)((char *)q + sizeof (int));
+ s.a.i = 0;
+ b->i = 3;
+ return s.a.i;
+}
+int __attribute__((noinline,noclone))
+test2 (void *q)
+{
+ struct S *b = &((struct R *)q)->a;
+ s.a.i = 0;
+ b->i = 3;
+ return s.a.i;
+}
+int __attribute__((noinline,noclone))
+test3 (void *q)
+{
+ s.a.i = 0;
+ ((struct S *)((char *)q + sizeof (int)))->i = 3;
+ return s.a.i;
+}
+extern void abort (void);
+int
+main()
+{
+ if (sizeof (float) != sizeof (int)
+ || offsetof (struct R, a) != sizeof (int)
+ || offsetof (struct Q, a) != sizeof (int))
+ return 0;
+ s.a.i = 1;
+ s.a.j = 2;
+ if (test1 ((void *)&s) != 3)
+ abort ();
+ s.a.i = 1;
+ s.a.j = 2;
+ if (test2 ((void *)&s) != 3)
+ abort ();
+ s.a.i = 1;
+ s.a.j = 2;
+ if (test3 ((void *)&s) != 3)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr44555.c b/gcc/testsuite/gcc.c-torture/execute/pr44555.c
new file mode 100644
index 00000000000..6ba8e491971
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr44555.c
@@ -0,0 +1,16 @@
+struct a {
+ char b[100];
+};
+int foo(struct a *a)
+{
+ if (&a->b)
+ return 1;
+ return 0;
+}
+extern void abort (void);
+int main()
+{
+ if (foo((struct a *)0) != 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr44575.c b/gcc/testsuite/gcc.c-torture/execute/pr44575.c
new file mode 100644
index 00000000000..62a7d7800b0
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr44575.c
@@ -0,0 +1,49 @@
+/* PR target/44575 */
+
+#include <stdarg.h>
+
+int fails = 0;
+struct S { float a[3]; };
+struct S a[5];
+
+void
+check (int z, ...)
+{
+ struct S arg, *p;
+ va_list ap;
+ int j = 0, k = 0;
+ int i;
+ va_start (ap, z);
+ for (i = 2; i < 4; ++i)
+ {
+ p = 0;
+ j++;
+ k += 2;
+ switch ((z << 4) | i)
+ {
+ case 0x12:
+ case 0x13:
+ p = &a[2];
+ arg = va_arg (ap, struct S);
+ break;
+ default:
+ ++fails;
+ break;
+ }
+ if (p && p->a[2] != arg.a[2])
+ ++fails;
+ if (fails)
+ break;
+ }
+ va_end (ap);
+}
+
+int
+main ()
+{
+ a[2].a[2] = -49026;
+ check (1, a[2], a[2]);
+ if (fails)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr44683.c b/gcc/testsuite/gcc.c-torture/execute/pr44683.c
new file mode 100644
index 00000000000..d0fd446f004
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr44683.c
@@ -0,0 +1,18 @@
+int __attribute__((noinline,noclone))
+copysign_bug (double x)
+{
+ if (x != 0.0 && (x * 0.5 == x))
+ return 1;
+ if (__builtin_copysign(1.0, x) < 0.0)
+ return 2;
+ else
+ return 3;
+}
+int main(void)
+{
+ double x = -0.0;
+ if (copysign_bug (x) != 2)
+ __builtin_abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.dg/assign-warn-1.c b/gcc/testsuite/gcc.dg/assign-warn-1.c
index a0cfd890f10..ae70242edd4 100644
--- a/gcc/testsuite/gcc.dg/assign-warn-1.c
+++ b/gcc/testsuite/gcc.dg/assign-warn-1.c
@@ -12,11 +12,11 @@
typedef void (*fp)(void);
typedef void (*nrfp)(void) __attribute__((noreturn));
-TESTARG(fqa, nrfp, fp); /* { dg-warning "passing argument 1 of 'fqaF' makes qualified function pointer from unqualified" } */
-TESTARP(fqb, nrfp, fp); /* { dg-warning "passing argument 1 of 'fqbFp.x' makes qualified function pointer from unqualified" } */
-TESTASS(fqc, nrfp, fp); /* { dg-warning "assignment makes qualified function pointer from unqualified" } */
-TESTINI(fqd, nrfp, fp); /* { dg-warning "initialization makes qualified function pointer from unqualified" } */
-TESTRET(fqe, nrfp, fp); /* { dg-warning "return makes qualified function pointer from unqualified" } */
+TESTARG(fqa, nrfp, fp); /* { dg-warning "passing argument 1 of 'fqaF' makes '__attribute__..noreturn..' qualified function pointer from unqualified" } */
+TESTARP(fqb, nrfp, fp); /* { dg-warning "passing argument 1 of 'fqbFp.x' makes '__attribute__..noreturn..' qualified function pointer from unqualified" } */
+TESTASS(fqc, nrfp, fp); /* { dg-warning "assignment makes '__attribute__..noreturn..' qualified function pointer from unqualified" } */
+TESTINI(fqd, nrfp, fp); /* { dg-warning "initialization makes '__attribute__..noreturn..' qualified function pointer from unqualified" } */
+TESTRET(fqe, nrfp, fp); /* { dg-warning "return makes '__attribute__..noreturn..' qualified function pointer from unqualified" } */
TESTARG(ofqa, fp, nrfp);
TESTARP(ofqb, fp, nrfp);
@@ -24,11 +24,11 @@ TESTASS(ofqc, fp, nrfp);
TESTINI(ofqd, fp, nrfp);
TESTRET(ofqe, fp, nrfp);
-TESTARG(qa, char *, const char *); /* { dg-warning "passing argument 1 of 'qaF' discards qualifiers from pointer target type" } */
-TESTARP(qb, char *, const char *); /* { dg-warning "passing argument 1 of 'qbFp.x' discards qualifiers from pointer target type" } */
-TESTASS(qc, char *, const char *); /* { dg-warning "assignment discards qualifiers from pointer target type" } */
-TESTINI(qd, char *, const char *); /* { dg-warning "initialization discards qualifiers from pointer target type" } */
-TESTRET(qe, char *, const char *); /* { dg-warning "return discards qualifiers from pointer target type" } */
+TESTARG(qa, char *, const char *); /* { dg-warning "passing argument 1 of 'qaF' discards 'const' qualifier from pointer target type" } */
+TESTARP(qb, char *, const char *); /* { dg-warning "passing argument 1 of 'qbFp.x' discards 'const' qualifier from pointer target type" } */
+TESTASS(qc, char *, const char *); /* { dg-warning "assignment discards 'const' qualifier from pointer target type" } */
+TESTINI(qd, char *, const char *); /* { dg-warning "initialization discards 'const' qualifier from pointer target type" } */
+TESTRET(qe, char *, const char *); /* { dg-warning "return discards 'const' qualifier from pointer target type" } */
TESTARG(oqa, const char *, char *);
TESTARP(oqb, const char *, char *);
diff --git a/gcc/testsuite/gcc.dg/assign-warn-2.c b/gcc/testsuite/gcc.dg/assign-warn-2.c
index f3d861d7405..7813b72869d 100644
--- a/gcc/testsuite/gcc.dg/assign-warn-2.c
+++ b/gcc/testsuite/gcc.dg/assign-warn-2.c
@@ -13,11 +13,11 @@
typedef void (*fp)(void);
typedef void (*nrfp)(void) __attribute__((noreturn));
-TESTARG(fqa, nrfp, fp); /* { dg-error "passing argument 1 of 'fqaF' makes qualified function pointer from unqualified" } */
-TESTARP(fqb, nrfp, fp); /* { dg-error "passing argument 1 of 'fqbFp.x' makes qualified function pointer from unqualified" } */
-TESTASS(fqc, nrfp, fp); /* { dg-error "assignment makes qualified function pointer from unqualified" } */
-TESTINI(fqd, nrfp, fp); /* { dg-error "initialization makes qualified function pointer from unqualified" } */
-TESTRET(fqe, nrfp, fp); /* { dg-error "return makes qualified function pointer from unqualified" } */
+TESTARG(fqa, nrfp, fp); /* { dg-error "passing argument 1 of 'fqaF' makes '__attribute__..noreturn..' qualified function pointer from unqualified" } */
+TESTARP(fqb, nrfp, fp); /* { dg-error "passing argument 1 of 'fqbFp.x' makes '__attribute__..noreturn..' qualified function pointer from unqualified" } */
+TESTASS(fqc, nrfp, fp); /* { dg-error "assignment makes '__attribute__..noreturn..' qualified function pointer from unqualified" } */
+TESTINI(fqd, nrfp, fp); /* { dg-error "initialization makes '__attribute__..noreturn..' qualified function pointer from unqualified" } */
+TESTRET(fqe, nrfp, fp); /* { dg-error "return makes '__attribute__..noreturn..' qualified function pointer from unqualified" } */
TESTARG(ofqa, fp, nrfp);
TESTARP(ofqb, fp, nrfp);
@@ -25,11 +25,11 @@ TESTASS(ofqc, fp, nrfp);
TESTINI(ofqd, fp, nrfp);
TESTRET(ofqe, fp, nrfp);
-TESTARG(qa, char *, const char *); /* { dg-error "passing argument 1 of 'qaF' discards qualifiers from pointer target type" } */
-TESTARP(qb, char *, const char *); /* { dg-error "passing argument 1 of 'qbFp.x' discards qualifiers from pointer target type" } */
-TESTASS(qc, char *, const char *); /* { dg-error "assignment discards qualifiers from pointer target type" } */
-TESTINI(qd, char *, const char *); /* { dg-error "initialization discards qualifiers from pointer target type" } */
-TESTRET(qe, char *, const char *); /* { dg-error "return discards qualifiers from pointer target type" } */
+TESTARG(qa, char *, const char *); /* { dg-error "passing argument 1 of 'qaF' discards 'const' qualifier from pointer target type" } */
+TESTARP(qb, char *, const char *); /* { dg-error "passing argument 1 of 'qbFp.x' discards 'const' qualifier from pointer target type" } */
+TESTASS(qc, char *, const char *); /* { dg-error "assignment discards 'const' qualifier from pointer target type" } */
+TESTINI(qd, char *, const char *); /* { dg-error "initialization discards 'const' qualifier from pointer target type" } */
+TESTRET(qe, char *, const char *); /* { dg-error "return discards 'const' qualifier from pointer target type" } */
TESTARG(oqa, const char *, char *);
TESTARP(oqb, const char *, char *);
diff --git a/gcc/testsuite/gcc.dg/c90-const-expr-10.c b/gcc/testsuite/gcc.dg/c90-const-expr-10.c
index bad388c90b1..30c60e31f90 100644
--- a/gcc/testsuite/gcc.dg/c90-const-expr-10.c
+++ b/gcc/testsuite/gcc.dg/c90-const-expr-10.c
@@ -8,7 +8,7 @@
__extension__ typedef __SIZE_TYPE__ size_t;
void *p = (size_t)(void *)0; /* { dg-error "without a cast" } */
-struct s { void *a; } q = { (size_t)(void *)0 }; /* { dg-error "without a cast" } */
+struct s { void *a; } q = { (size_t)(void *)0 }; /* { dg-error "without a cast|near initialization" } */
void *
f (void)
{
diff --git a/gcc/testsuite/gcc.dg/c99-array-lval-8.c b/gcc/testsuite/gcc.dg/c99-array-lval-8.c
index b5048b66a77..c4e202ef301 100644
--- a/gcc/testsuite/gcc.dg/c99-array-lval-8.c
+++ b/gcc/testsuite/gcc.dg/c99-array-lval-8.c
@@ -12,15 +12,15 @@ f (void)
const struct {
int a[1];
} s;
- int *p1 = s.a; /* { dg-error "qualifiers" } */
+ int *p1 = s.a; /* { dg-error "qualifier" } */
int *p2 = (a ? s : s).a;
/* In this case, the qualifier is properly on the array element type
not on the rvalue structure and so is not discarded. */
struct {
const int a[1];
} t;
- int *p3 = t.a; /* { dg-error "qualifiers" } */
- int *p4 = (a ? t : t).a; /* { dg-error "qualifiers" } */
+ int *p3 = t.a; /* { dg-error "qualifier" } */
+ int *p4 = (a ? t : t).a; /* { dg-error "qualifier" } */
/* The issue could also lead to code being wrongly accepted. */
const struct {
int a[1][1];
diff --git a/gcc/testsuite/gcc.dg/c99-arraydecl-3.c b/gcc/testsuite/gcc.dg/c99-arraydecl-3.c
index 2ab927d6ab2..9f383b9c3bb 100644
--- a/gcc/testsuite/gcc.dg/c99-arraydecl-3.c
+++ b/gcc/testsuite/gcc.dg/c99-arraydecl-3.c
@@ -7,7 +7,7 @@
void
f0 (int a[restrict])
{
- int **b = &a; /* { dg-error "discards qualifiers" } */
+ int **b = &a; /* { dg-error "discards 'restrict' qualifier" } */
int *restrict *c = &a;
}
@@ -15,6 +15,6 @@ void
f1 (a)
int a[restrict];
{
- int **b = &a; /* { dg-error "discards qualifiers" } */
+ int **b = &a; /* { dg-error "discards 'restrict' qualifier" } */
int *restrict *c = &a;
}
diff --git a/gcc/testsuite/gcc.dg/c99-const-expr-10.c b/gcc/testsuite/gcc.dg/c99-const-expr-10.c
index 8e5a1043d29..2aca6106a47 100644
--- a/gcc/testsuite/gcc.dg/c99-const-expr-10.c
+++ b/gcc/testsuite/gcc.dg/c99-const-expr-10.c
@@ -6,7 +6,7 @@
/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
void *p = (__SIZE_TYPE__)(void *)0; /* { dg-error "without a cast" } */
-struct s { void *a; } q = { (__SIZE_TYPE__)(void *)0 }; /* { dg-error "without a cast" } */
+struct s { void *a; } q = { (__SIZE_TYPE__)(void *)0 }; /* { dg-error "without a cast|near initialization" } */
void *
f (void)
{
diff --git a/gcc/testsuite/gcc.dg/c99-restrict-4.c b/gcc/testsuite/gcc.dg/c99-restrict-4.c
new file mode 100644
index 00000000000..5852d0a1127
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/c99-restrict-4.c
@@ -0,0 +1,17 @@
+/* Qualifiers lost when taking the address of a const restrict object.
+ PR 44322. */
+/* { dg-do compile } */
+/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
+void * restrict const a[2];
+void * restrict const (*p2)[2];
+
+void foo(void) {
+ p2 = &a;
+}
+
+void * restrict volatile b[2];
+void * restrict volatile (*q2)[2];
+
+void bar(void) {
+ q2 = &b;
+}
diff --git a/gcc/testsuite/gcc.dg/cast-qual-2.c b/gcc/testsuite/gcc.dg/cast-qual-2.c
index 0be1d617176..5fd2b854d61 100644
--- a/gcc/testsuite/gcc.dg/cast-qual-2.c
+++ b/gcc/testsuite/gcc.dg/cast-qual-2.c
@@ -18,8 +18,8 @@ intfn_t *i2 = (intfn_t *) intfn;
intfn_t *i3 = constfn;
intfn_t *i4 = (intfn_t *) constfn; /* { dg-bogus "discards qualifier" } */
-constfn_t p1 = intfn; /* { dg-warning "makes qualified function" } */
-constfn_t p2 = (constfn_t) intfn; /* { dg-warning "new qualifier" } */
+constfn_t p1 = intfn; /* { dg-warning "makes '__attribute__..const..' qualified function" } */
+constfn_t p2 = (constfn_t) intfn; /* { dg-warning "adds '__attribute__..const..' qualifier" } */
constfn_t p3 = constfn;
constfn_t p4 = (constfn_t) constfn;
@@ -28,7 +28,7 @@ voidfn_t *v2 = (voidfn_t *) voidfn;
voidfn_t *v3 = noreturnfn;
voidfn_t *v4 = (voidfn_t *) noreturnfn; /* { dg-bogus "discards qualifier" } */
-noreturnfn_t n1 = voidfn; /* { dg-warning "makes qualified function" } */
-noreturnfn_t n2 = (noreturnfn_t) voidfn; /* { dg-warning "new qualifier" } */
+noreturnfn_t n1 = voidfn; /* { dg-warning "makes '__attribute__..noreturn..' qualified function" } */
+noreturnfn_t n2 = (noreturnfn_t) voidfn; /* { dg-warning "adds '__attribute__..noreturn..' qualifier" } */
noreturnfn_t n3 = noreturnfn;
noreturnfn_t n4 = (noreturnfn_t) noreturnfn;
diff --git a/gcc/testsuite/gcc.dg/compound-literal-1.c b/gcc/testsuite/gcc.dg/compound-literal-1.c
index 6c644d46ea3..9b3b24e254e 100644
--- a/gcc/testsuite/gcc.dg/compound-literal-1.c
+++ b/gcc/testsuite/gcc.dg/compound-literal-1.c
@@ -2,7 +2,7 @@
/* PR c/43248 */
-int foo(__SIZE_TYPE__ i)
+__extension__ int foo(__SIZE_TYPE__ i)
{
i ? : (void *){}; /* { dg-error "" } */
}
diff --git a/gcc/testsuite/gcc.dg/cpp/line3.c b/gcc/testsuite/gcc.dg/cpp/line3.c
index 7a1061478d4..4b40e4a6a95 100644
--- a/gcc/testsuite/gcc.dg/cpp/line3.c
+++ b/gcc/testsuite/gcc.dg/cpp/line3.c
@@ -13,14 +13,14 @@ main(void)
{
char *A;
- A = "text"; /* { dg-warning "discards qualifiers" "case zero" } */
- A = one("text" /* { dg-warning "discards qualifiers" "case one" } */
+ A = "text"; /* { dg-warning "discards 'const' qualifier" "case zero" } */
+ A = one("text" /* { dg-warning "discards 'const' qualifier" "case one" } */
"text")
;
- A = two("text" /* { dg-warning "discards qualifiers" "case two" } */
+ A = two("text" /* { dg-warning "discards 'const' qualifier" "case two" } */
"text")
;
- A = four("text" /* { dg-warning "discards qualifiers" "case four" } */
+ A = four("text" /* { dg-warning "discards 'const' qualifier" "case four" } */
"text")
;
diff --git a/gcc/testsuite/gcc.dg/format/gcc_diag-1.c b/gcc/testsuite/gcc.dg/format/gcc_diag-1.c
index 46013c8699e..f88965fe659 100644
--- a/gcc/testsuite/gcc.dg/format/gcc_diag-1.c
+++ b/gcc/testsuite/gcc.dg/format/gcc_diag-1.c
@@ -70,13 +70,13 @@ foo (int i, int i1, int i2, unsigned int u, double d, char *s, void *p,
cdiag ("%m");
cxxdiag ("%m");
- tdiag ("%D%F%T", t1, t1, t1);
- tdiag ("%+D%+F%+T", t1, t1, t1);
- tdiag ("%q+D%q+F%q+T", t1, t1, t1);
+ tdiag ("%D%F%T%V", t1, t1, t1, t1);
+ tdiag ("%+D%+F%+T%+V", t1, t1, t1, t1);
+ tdiag ("%q+D%q+F%q+T%q+V", t1, t1, t1, t1);
tdiag ("%D%D%D%D", t1, t2, *t3, t4[5]);
- cdiag ("%D%F%T", t1, t1, t1);
- cdiag ("%+D%+F%+T", t1, t1, t1);
- cdiag ("%q+D%q+F%q+T", t1, t1, t1);
+ cdiag ("%D%F%T%V", t1, t1, t1, t1);
+ cdiag ("%+D%+F%+T%+V", t1, t1, t1, t1);
+ cdiag ("%q+D%q+F%q+T%q+V", t1, t1, t1, t1);
cdiag ("%D%D%D%D", t1, t2, *t3, t4[5]);
cdiag ("%E", t1);
cxxdiag ("%A%D%E%F%T%V", t1, t1, t1, t1, t1, t1);
@@ -86,6 +86,10 @@ foo (int i, int i1, int i2, unsigned int u, double d, char *s, void *p,
cxxdiag ("%+#A%+#D%+#E%+#F%+#T%+#V", t1, t1, t1, t1, t1, t1);
cxxdiag ("%C%L%O%P%Q", i, i, i, i, i);
+ tdiag ("%v%qv%#v", i, i, i);
+ cdiag ("%v%qv%#v", i, i, i);
+ cxxdiag ("%v%qv%#v", i, i, i);
+
/* Bad stuff with extensions. */
diag ("%m", i); /* { dg-warning "format" "extra arg" } */
tdiag ("%m", i); /* { dg-warning "format" "extra arg" } */
@@ -121,6 +125,14 @@ foo (int i, int i1, int i2, unsigned int u, double d, char *s, void *p,
cdiag ("%D", t1, t1); /* { dg-warning "format" "extra arg" } */
cxxdiag ("%D", t1, t1); /* { dg-warning "format" "extra arg" } */
+ tdiag ("%V", i); /* { dg-warning "format" "wrong arg" } */
+ cdiag ("%V", i); /* { dg-warning "format" "wrong arg" } */
+ cxxdiag ("%V", i); /* { dg-warning "format" "wrong arg" } */
+
+ tdiag ("%v", t1); /* { dg-warning "format" "wrong arg" } */
+ cdiag ("%v", t1); /* { dg-warning "format" "wrong arg" } */
+ cxxdiag ("%v", t1); /* { dg-warning "format" "wrong arg" } */
+
/* Standard specifiers not accepted in the diagnostic framework. */
diag ("%X\n", u); /* { dg-warning "format" "HEX" } */
diag ("%f\n", d); /* { dg-warning "format" "float" } */
diff --git a/gcc/testsuite/gcc.dg/funroll-loops-all.c b/gcc/testsuite/gcc.dg/funroll-loops-all.c
index c6276759e6c..9cdc9017255 100644
--- a/gcc/testsuite/gcc.dg/funroll-loops-all.c
+++ b/gcc/testsuite/gcc.dg/funroll-loops-all.c
@@ -1,4 +1,4 @@
/* PR 17594 */
/* { dg-do compile } */
/* { dg-options "-funroll-loops-all" } */
-/* { dg-error "unrecognized command line option \"-funroll-loops-all\"" "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command line option '-funroll-loops-all'" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.dg/graphite/pr44391.c b/gcc/testsuite/gcc.dg/graphite/pr44391.c
new file mode 100644
index 00000000000..91b3afa175a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr44391.c
@@ -0,0 +1,7 @@
+/* { dg-options "-Os -m32 -fgraphite-identity -ffast-math" } */
+
+void byte_insert_op1 (unsigned char *loc, unsigned char *end, unsigned *pto)
+{
+ while (end != loc)
+ *pto = *--end;
+}
diff --git a/gcc/testsuite/gcc.dg/init-bad-7.c b/gcc/testsuite/gcc.dg/init-bad-7.c
new file mode 100644
index 00000000000..738ed605060
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/init-bad-7.c
@@ -0,0 +1,11 @@
+/* PR c/37724 */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -pedantic" } */
+
+struct f
+{
+ int *a;
+};
+
+char b[10];
+struct f g = {b}; /* { dg-warning "initialization from incompatible pointer type|near initialization for" } */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c b/gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c
new file mode 100644
index 00000000000..c9a766d9e8f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-slim" } */
+
+struct bovid
+{
+ float a;
+ int b;
+ struct bovid *next;
+};
+
+static int
+__attribute__((noinline))
+foo (struct bovid *cow, int i)
+{
+ i++;
+ if (cow->next)
+ foo (cow->next, i);
+ return i;
+}
+
+int main (int argc, char *argv[])
+{
+ struct bovid cow;
+
+ cow.a = 7.4;
+ cow.b = 6;
+ cow.next = (struct bovid *) 0;
+
+ return foo (&cow, 0);
+}
+
+/* { dg-final { scan-tree-dump-times "foo " 1 "eipa_sra" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/modif-1.c b/gcc/testsuite/gcc.dg/ipa/modif-1.c
deleted file mode 100644
index db6915a9d9e..00000000000
--- a/gcc/testsuite/gcc.dg/ipa/modif-1.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Verify that modification analysis detects modfications. */
-/* { dg-do compile } */
-/* { dg-options "-O3 -c -fdump-ipa-inline-details -fno-early-inlining" } */
-
-struct whatever
-{
- int first;
- unsigned second;
-};
-
-void func1 (struct whatever w);
-void func2 (struct whatever *pw);
-void func3 (int i);
-void func4 (int *pi);
-
-void the_test (struct whatever u, struct whatever v,
- struct whatever w, struct whatever x,
- int i, int k, int l)
-{
- struct whatever *pw = &w;
- int *pk = &k;
-
- v.first = 9;
-
- func1 (u);
- func1 (v);
- func2 (pw);
- func2 (&x);
- func3 (i);
- func4 (pk);
- func4 (&l);
-}
-
-/* { dg-final { scan-ipa-dump-not "param 0\[^\\n\]*modified" "inline" } } */
-/* { dg-final { scan-ipa-dump "param 1\[^\\n\]*modified" "inline" } } */
-/* { dg-final { scan-ipa-dump "param 2\[^\\n\]*modified" "inline" } } */
-/* { dg-final { scan-ipa-dump "param 3\[^\\n\]*modified" "inline" } } */
-/* { dg-final { scan-ipa-dump-not "param 4\[^\\n\]*modified" "inline" } } */
-/* { dg-final { scan-ipa-dump "param 5\[^\\n\]*modified" "inline" } } */
-/* { dg-final { scan-ipa-dump "param 6\[^\\n\]*modified" "inline" } } */
-/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/pure-const-1.c b/gcc/testsuite/gcc.dg/ipa/pure-const-1.c
new file mode 100644
index 00000000000..51837ea9bad
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pure-const-1.c
@@ -0,0 +1,80 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-local-pure-const1 -fdump-ipa-pure-const -fdump-tree-optimized -fno-early-inlining" } */
+void abort (void);
+int error_code;
+static int val;
+__attribute__ ((noinline, noclone))
+static int
+i_am_pure1 (int a)
+{
+ if (a > 50)
+ abort ();
+ return a;
+}
+
+__attribute__ ((noinline, noclone))
+static int
+i_am_const2 (int a)
+{
+ return a+val;
+}
+
+__attribute__ ((noinline, noclone))
+int
+call_me(int a)
+{
+ return a;
+}
+
+inline int
+call_callback(int (*fn)(int), int a)
+{
+ return fn(a);
+}
+
+__attribute__ ((noinline, noclone))
+i_am_const3(int a)
+{
+ return call_callback (call_me, a);
+}
+
+__attribute__ ((noinline))
+explode_badly()
+{
+ error_code = 0xbad;
+ abort ();
+}
+
+__attribute__ ((noinline, noclone))
+i_am_pure4(int a)
+{
+ if (a > 50)
+ explode_badly ();
+ return a;
+}
+
+test()
+{
+ int s;
+ s = i_am_pure1(5);
+ s += i_am_pure1(5);
+ s += i_am_const2(5);
+ s += i_am_const2(5);
+ s += i_am_const3(5);
+ s += i_am_const3(5);
+ s += i_am_pure4(5);
+ s += i_am_pure4(5);
+ return s;
+}
+/* { dg-final { scan-tree-dump-times "i_am_pure1 .5" 1 "optimized"} } */
+/* { dg-final { scan-tree-dump-times "i_am_const2 .5" 1 "optimized"} } */
+/* { dg-final { scan-tree-dump-times "i_am_const3 .5" 1 "optimized"} } */
+/* { dg-final { scan-tree-dump-times "i_am_pure4 .5" 1 "optimized"} } */
+/* { dg-final { scan-tree-dump "found to be looping pure: i_am_pure1" "local-pure-const1"} } */
+/* { dg-final { scan-tree-dump "found to be looping pure: i_am_pure4" "local-pure-const1"} } */
+/* { dg-final { scan-ipa-dump "found to be const: i_am_const2" "pure-const"} } */
+/* { dg-final { scan-ipa-dump "found to be const: i_am_const3" "pure-const"} } */
+/* { dg-final { cleanup-tree-dump "local-pure-const1" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
+/* { dg-final { cleanup-ipa-dump "pure-const" } } */
+
diff --git a/gcc/testsuite/gcc.dg/ipa/pure-const-2.c b/gcc/testsuite/gcc.dg/ipa/pure-const-2.c
new file mode 100644
index 00000000000..51d779776bc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pure-const-2.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-local-pure-const1 -fdump-tree-optimized" } */
+static __attribute__ ((noinline, noclone))
+int i_am_pure(char *c, int n)
+{
+ char *d=__builtin_alloca (n);
+ int i;
+ int sum;
+ for (i=0;i<n;i++)
+ d[i] = c[i];
+ for (i=0;i<n;i++)
+ d[i] *= c[n-i];
+ for (i=0;i<n;i++)
+ sum+=d[i];
+ if (sum)
+ __builtin_unreachable ();
+ return sum;
+}
+char array[11];
+int
+main(void)
+{
+ i_am_pure (array,5);
+ i_am_pure (array,11);
+ return 0;
+}
+/* { dg-final { scan-tree-dump "found to be pure: i_am_pure" "local-pure-const1"} } */
+/* { dg-final { scan-tree-dump-not "i_am_pure" "optimized"} } */
diff --git a/gcc/testsuite/gcc.dg/lto/20091216-1_0.c b/gcc/testsuite/gcc.dg/lto/20091216-1_0.c
index ee3b6c73c6b..054330bbe23 100644
--- a/gcc/testsuite/gcc.dg/lto/20091216-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20091216-1_0.c
@@ -1,6 +1,10 @@
/* { dg-lto-do run } */
-asm (".globl start_; start_: nop");
+#ifdef __ia64
+asm (".globl start_\nstart_: nop 0");
+#else
+asm (".globl start_\nstart_: nop");
+#endif
int
main ()
diff --git a/gcc/testsuite/gcc.dg/lto/20100603-1_0.c b/gcc/testsuite/gcc.dg/lto/20100603-1_0.c
new file mode 100644
index 00000000000..cc35c78cfae
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20100603-1_0.c
@@ -0,0 +1,4 @@
+/* { dg-lto-do link } */
+/* { dg-extra-ld-options {-r -nostdlib} } */
+
+/* This file intentionally left empty. */
diff --git a/gcc/testsuite/gcc.dg/lto/20100603-2_0.c b/gcc/testsuite/gcc.dg/lto/20100603-2_0.c
new file mode 100644
index 00000000000..11bee496d9c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20100603-2_0.c
@@ -0,0 +1,5 @@
+/* { dg-lto-do link } */
+/* { dg-extra-ld-options {-r -nostdlib} } */
+
+int foo;
+int *i = &foo;
diff --git a/gcc/testsuite/gcc.dg/lto/20100603-3_0.c b/gcc/testsuite/gcc.dg/lto/20100603-3_0.c
new file mode 100644
index 00000000000..3fc08fdbf6b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20100603-3_0.c
@@ -0,0 +1,4 @@
+/* { dg-lto-do link } */
+/* { dg-extra-ld-options {-r -nostdlib} } */
+
+int i = 42;
diff --git a/gcc/testsuite/gcc.dg/noncompile/990416-1.c b/gcc/testsuite/gcc.dg/noncompile/990416-1.c
index 49f5569394e..91801910bc3 100644
--- a/gcc/testsuite/gcc.dg/noncompile/990416-1.c
+++ b/gcc/testsuite/gcc.dg/noncompile/990416-1.c
@@ -2,11 +2,11 @@ extern void *memcpy (void *, const void *, __SIZE_TYPE__);
typedef int word_type;
static void
-copy_reg (unsigned int reg, frame_state *udata, /* { dg-error "parse|syntax|expected" } */
- frame_state *target_udata) /* { dg-error "expected" } */
+copy_reg (unsigned int reg, frame_state *udata, /* { dg-error "unknown type name" } */
+ frame_state *target_udata) /* { dg-error "unknown type name" } */
{
- word_type *preg = get_reg_addr (reg, udata, 0); /* { dg-error "undeclared|function|without a cast" } */
- word_type *ptreg = get_reg_addr (reg, target_udata, 0); /* { dg-error "undeclared|without a cast" } */
+ word_type *preg = ge_reg_addr (reg, udata, 0);
+ word_type *ptreg = ge_reg_addr (reg, target_udata, 0);
memcpy (ptreg, preg, __builtin_dwarf_reg_size (reg));
}
diff --git a/gcc/testsuite/gcc.dg/noncompile/pr44517.c b/gcc/testsuite/gcc.dg/noncompile/pr44517.c
new file mode 100644
index 00000000000..5977d68fef8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/noncompile/pr44517.c
@@ -0,0 +1,18 @@
+/* PR c/44517: Improve diagnostic for misspelled typename in function declaration. */
+int f1(int x, pid_t y, long z, in t) {
+/* { dg-error "unknown type name 'pid_t'" "" { target *-*-* } 2 } */
+/* { dg-error "unknown type name 'in'" "" { target *-*-* } 2 } */
+ return x + y + z + t;
+}
+
+int f2(int x, lon y, long z, ...){ /* { dg-error "unknown type name 'lon'" } */
+ return;
+}
+
+void f3(int n, int a[n], pid_t x); /* { dg-error "unknown type name 'pid_t'" } */
+void f4() {}
+void f5(int a, *b); /* { dg-error "expected declaration specifiers or" } */
+void f6(int a, b); /* { dg-error "expected declaration specifiers or" } */
+void f7(int a, goto b); /* { dg-error "expected declaration specifiers or" } */
+void f8(int a, in goto); /* { dg-error "unknown type name 'in'" } */
+void f9(int a, in 1); /* { dg-error "unknown type name 'in'" } */
diff --git a/gcc/testsuite/gcc.dg/noreturn-4.c b/gcc/testsuite/gcc.dg/noreturn-4.c
index bcc29dac69a..6fe144754d0 100644
--- a/gcc/testsuite/gcc.dg/noreturn-4.c
+++ b/gcc/testsuite/gcc.dg/noreturn-4.c
@@ -4,7 +4,7 @@
extern void exit (int) __attribute__ ((__noreturn__));
int
-main (void) /* { dg-warning "function might be possible candidate for attribute 'noreturn'" "warn for main" } */
+main (void) /* { dg-warning "function might be candidate for attribute 'noreturn'" "warn for main" } */
{
exit (0);
}
diff --git a/gcc/testsuite/gcc.dg/noreturn-7.c b/gcc/testsuite/gcc.dg/noreturn-7.c
index 1913be1fe1d..fd2be2d56c0 100644
--- a/gcc/testsuite/gcc.dg/noreturn-7.c
+++ b/gcc/testsuite/gcc.dg/noreturn-7.c
@@ -13,7 +13,7 @@ void _exit(int status) __attribute__ ((__noreturn__));
int z = 0;
-void g() /* { dg-warning "possible candidate" } */
+void g() /* { dg-warning "might be candidate" } */
{
if (++z > 10)
_exit(0);
@@ -27,14 +27,14 @@ void f()
f();
} /* { dg-bogus "does return" } */
-int h() /* { dg-warning "possible candidate" } */
+int h() /* { dg-warning "might be candidate" } */
{
if (++z > 10)
_exit(0);
return h();
} /* { dg-bogus "end of non-void function" } */
-int k() /* { dg-warning "possible candidate" } */
+int k() /* { dg-warning "might be candidate" } */
{
if (++z > 10)
_exit(0);
diff --git a/gcc/testsuite/gcc.dg/opts-1.c b/gcc/testsuite/gcc.dg/opts-1.c
new file mode 100644
index 00000000000..0d16c3ded6e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/opts-1.c
@@ -0,0 +1,9 @@
+/* Test negative forms of various options are rejected. */
+/* { dg-do compile } */
+/* { dg-options "-Wno-strict-aliasing=1 -Wno-strict-overflow=1 -fno-abi-version=1 -fno-lto-compression-level=1 -fno-tree-parallelize-loops=1" } */
+
+/* { dg-error "-fno-abi-version" "-fno-abi-version" { target *-*-* } 0 } */
+/* { dg-error "-fno-lto-compression-level" "-fno-lto-compression-level" { target *-*-* } 0 } */
+/* { dg-error "-fno-tree-parallelize-loops" "-fno-tree-parallelize-loops" { target *-*-* } 0 } */
+/* { dg-warning "-Wno-strict-overflow" "-Wno-strict-overflow" { target *-*-* } 0 } */
+/* { dg-warning "-Wno-strict-aliasing" "-Wno-strict-aliasing" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.dg/opts-2.c b/gcc/testsuite/gcc.dg/opts-2.c
new file mode 100644
index 00000000000..f7683635a0e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/opts-2.c
@@ -0,0 +1,8 @@
+/* -O as an operand to another option should not take effect as an
+ optimization option. */
+/* { dg-do compile } */
+/* { dg-options "-I -O" } */
+
+#ifdef __OPTIMIZE__
+#error "__OPTIMIZE__ defined"
+#endif
diff --git a/gcc/testsuite/gcc.dg/opts-3.c b/gcc/testsuite/gcc.dg/opts-3.c
new file mode 100644
index 00000000000..50cd1db52d4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/opts-3.c
@@ -0,0 +1,7 @@
+/* Parameters of -Xassembler should not be interpreted as driver
+ options (and so cause the driver to exit prematurely, as in this
+ testcase, or have other unintended effects). */
+/* { dg-do compile } */
+/* { dg-options "-Xassembler -dumpmachine" } */
+
+int int x; /* { dg-error "two or more data types" } */
diff --git a/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c b/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c
index 634daeeda13..26496a2e695 100644
--- a/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c
+++ b/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c
@@ -12,6 +12,7 @@
#include "tree.h"
#include "tree-pass.h"
#include "intl.h"
+#include "cgraph.h"
int plugin_is_GPL_compatible;
diff --git a/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c b/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
index 4a6a8a61969..2c4cd497192 100644
--- a/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
+++ b/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
@@ -37,7 +37,7 @@ struct gimple_opt_pass one_pass =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_gimple_any, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/testsuite/gcc.dg/plugin/selfassign.c b/gcc/testsuite/gcc.dg/plugin/selfassign.c
index 8d76301d815..eb8f24a45a8 100644
--- a/gcc/testsuite/gcc.dg/plugin/selfassign.c
+++ b/gcc/testsuite/gcc.dg/plugin/selfassign.c
@@ -52,9 +52,7 @@ get_real_ref_rhs (tree expr)
/* We are only interested in an assignment with a single
rhs operand because if it is not, the original assignment
will not possibly be a self-assignment. */
- if (is_gimple_assign (def_stmt)
- && (get_gimple_rhs_class (gimple_assign_rhs_code (def_stmt))
- == GIMPLE_SINGLE_RHS))
+ if (gimple_assign_single_p (def_stmt))
return get_real_ref_rhs (gimple_assign_rhs1 (def_stmt));
else
return NULL_TREE;
@@ -66,7 +64,7 @@ get_real_ref_rhs (tree expr)
case PARM_DECL:
case FIELD_DECL:
case COMPONENT_REF:
- case INDIRECT_REF:
+ case MEM_REF:
case ARRAY_REF:
return expr;
default:
@@ -116,17 +114,18 @@ get_non_ssa_expr (tree expr)
else
return expr;
}
- case INDIRECT_REF:
+ case MEM_REF:
{
tree orig_base = TREE_OPERAND (expr, 0);
- tree base = get_non_ssa_expr (orig_base);
- if (!base)
- return NULL_TREE;
- /* If BASE is converted, build a new indirect reference tree. */
- if (base != orig_base)
- return build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (base)), base);
- else
- return expr;
+ if (TREE_CODE (orig_base) == SSA_NAME)
+ {
+ tree base = get_non_ssa_expr (orig_base);
+ if (!base)
+ return NULL_TREE;
+ return fold_build2 (MEM_REF, TREE_TYPE (expr),
+ base, TREE_OPERAND (expr, 1));
+ }
+ return expr;
}
case ARRAY_REF:
{
@@ -153,9 +152,7 @@ get_non_ssa_expr (tree expr)
&& !gimple_nop_p (SSA_NAME_DEF_STMT (expr)))
{
gimple def_stmt = SSA_NAME_DEF_STMT (expr);
- if (is_gimple_assign (def_stmt)
- && (get_gimple_rhs_class (gimple_assign_rhs_code (def_stmt))
- == GIMPLE_SINGLE_RHS))
+ if (gimple_assign_single_p (def_stmt))
vdecl = gimple_assign_rhs1 (def_stmt);
}
return get_non_ssa_expr (vdecl);
@@ -201,9 +198,7 @@ warn_self_assign (gimple stmt)
tree rhs, lhs;
/* Check assigment statement. */
- if (is_gimple_assign (stmt)
- && (get_gimple_rhs_class (gimple_assign_rhs_code (stmt))
- == GIMPLE_SINGLE_RHS))
+ if (gimple_assign_single_p (stmt))
{
rhs = get_real_ref_rhs (gimple_assign_rhs1 (stmt));
if (!rhs)
@@ -275,7 +270,7 @@ static struct gimple_opt_pass pass_warn_self_assign =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/testsuite/gcc.dg/pr32370.c b/gcc/testsuite/gcc.dg/pr32370.c
index 80a7c545d47..f039bdf98e7 100644
--- a/gcc/testsuite/gcc.dg/pr32370.c
+++ b/gcc/testsuite/gcc.dg/pr32370.c
@@ -2,15 +2,19 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* ia64-*-* } } */
/* { dg-options "" { target ia64-*-* } } */
/* { dg-options "-ffixed-esi" { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-mabi=sysv -ffixed-esi" { target x86_64-*-mingw* } } */
-#if defined __i386__ || defined __x86_64__
+#if (defined __i386__ || defined __x86_64__) && ! defined _WIN64
# define C "=S"
# define TYPE unsigned long
-#elif defined __ia64__
+#elif defined __ia64__ || defined _WIN64
# define C "=a"
# define TYPE unsigned long long
#endif
+#ifdef _WIN64
+__extension__
+#endif
unsigned int
foo (TYPE port)
{
diff --git a/gcc/testsuite/gcc.dg/pr36902.c b/gcc/testsuite/gcc.dg/pr36902.c
index 8b4ba6fcdb2..43a2d14f981 100644
--- a/gcc/testsuite/gcc.dg/pr36902.c
+++ b/gcc/testsuite/gcc.dg/pr36902.c
@@ -44,7 +44,7 @@ foo2(unsigned char * to, const unsigned char * from, int n)
*to = *from;
break;
case 5:
- to[4] = from [4]; /* { dg-warning "20:array subscript is above array bounds" } */
+ to[4] = from [4]; /* { dg-warning "array subscript is above array bounds" } */
break;
}
return to;
diff --git a/gcc/testsuite/gcc.dg/pr37561.c b/gcc/testsuite/gcc.dg/pr37561.c
index 82eca964008..ec712a7841d 100644
--- a/gcc/testsuite/gcc.dg/pr37561.c
+++ b/gcc/testsuite/gcc.dg/pr37561.c
@@ -1,7 +1,7 @@
/* PR c++/37561 */
/* { dg-do compile } */
-__PTRDIFF_TYPE__ p;
+__extension__ __PTRDIFF_TYPE__ p;
char q;
void
diff --git a/gcc/testsuite/gcc.dg/pr39874.c b/gcc/testsuite/gcc.dg/pr39874.c
new file mode 100644
index 00000000000..ca452831016
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr39874.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+extern void func();
+
+void test1(char *signature)
+{
+ char ch = signature[0];
+ if (ch == 15 || ch == 3)
+ {
+ if (ch == 15) func();
+ }
+}
+
+
+void test2(char *signature)
+{
+ char ch = signature[0];
+ if (ch == 15 || ch == 3)
+ {
+ if (ch > 14) func();
+ }
+}
+
+/* { dg-final { scan-tree-dump-times " == 15" 2 "optimized" } } */
+/* { dg-final { scan-tree-dump-not " == 3" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
+
+
diff --git a/gcc/testsuite/gcc.dg/pr41340.c b/gcc/testsuite/gcc.dg/pr41340.c
index 72ad9296894..b86f40bf467 100644
--- a/gcc/testsuite/gcc.dg/pr41340.c
+++ b/gcc/testsuite/gcc.dg/pr41340.c
@@ -10,6 +10,8 @@ struct S2 { struct S1 s2; };
struct S3 { unsigned s3; struct S2 **s4; };
struct S5 { struct S2 *s5; };
+__extension__ typedef __INTPTR_TYPE__ ssize_t;
+
extern void fn0 (void) __attribute__ ((__noreturn__));
T fn6 (struct S3);
void fn7 (void);
@@ -45,7 +47,7 @@ fn5 (struct S3 x, T *y)
{
if (!fn3 (x))
{
- *y = (T) (long) fn4 (x);
+ *y = (T) (ssize_t) fn4 (x);
return 1;
}
return 0;
diff --git a/gcc/testsuite/gcc.dg/pr41551.c b/gcc/testsuite/gcc.dg/pr41551.c
index 25a8e717fb8..e24fbc33db4 100644
--- a/gcc/testsuite/gcc.dg/pr41551.c
+++ b/gcc/testsuite/gcc.dg/pr41551.c
@@ -3,8 +3,10 @@
/* Make sure we do not ICE. */
+__extension__ typedef __SIZE_TYPE__ size_t;
+
int main(void)
{
int var, *p = &var;
- return (double)(unsigned long)(p);
+ return (double)(size_t)(p);
}
diff --git a/gcc/testsuite/gcc.dg/pr42461.c b/gcc/testsuite/gcc.dg/pr42461.c
new file mode 100644
index 00000000000..0518bfd9736
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr42461.c
@@ -0,0 +1,14 @@
+/* PR rtl-optimization/42461 */
+/* Reported by Patrick Pelissier <patrick.pelissier@gmail.com> */
+
+/* { dg-do link } */
+/* { dg-options "-O2" } */
+
+extern int link_failure (int) __attribute__ ((pure));
+
+int main (void)
+{
+ if (link_failure (0) < 1)
+ __builtin_unreachable ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr44393.c b/gcc/testsuite/gcc.dg/pr44393.c
new file mode 100644
index 00000000000..906d5932a0f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr44393.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -ftree-loop-distribution" } */
+
+int i;
+void foo ()
+{
+ int **pp = 0, *p = 0;
+ while (--i)
+ {
+ *p++ = 0;
+ *pp++ = p;
+ }
+ i = *p;
+}
+
diff --git a/gcc/testsuite/gcc.dg/pr44404.c b/gcc/testsuite/gcc.dg/pr44404.c
new file mode 100644
index 00000000000..a0b4ceb98ca
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr44404.c
@@ -0,0 +1,35 @@
+/* PR rtl-optimization/44404
+ foo() used to be miscompiled on ARM due to a bug in auto-inc-dec.c,
+ which resulted in "strb r1, [r1], #-36". */
+
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-unroll-loops" } */
+
+extern char *strcpy (char *, const char *);
+extern int strcmp (const char*, const char*);
+extern void abort (void);
+
+char buf[128];
+
+void __attribute__((noinline))
+bar (int a, const char *p)
+{
+ if (strcmp (p, "0123456789abcdefghijklmnopqrstuvwxyz") != 0)
+ abort ();
+}
+
+void __attribute__((noinline))
+foo (int a)
+{
+ if (a)
+ bar (0, buf);
+ strcpy (buf, "0123456789abcdefghijklmnopqrstuvwxyz");
+ bar (0, buf);
+}
+
+int
+main (void)
+{
+ foo (0);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr44509.c b/gcc/testsuite/gcc.dg/pr44509.c
new file mode 100644
index 00000000000..7c50bd0fc28
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr44509.c
@@ -0,0 +1,9 @@
+/* PR bootstrap/44509 */
+/* { dg-do compile } */
+/* { dg-options "--param ggc-min-expand=0 --param ggc-min-heapsize=0" } */
+
+double
+foo (void)
+{
+ return __DBL_MAX__ - __FLT_MAX__;
+}
diff --git a/gcc/testsuite/gcc.dg/pr44539.c b/gcc/testsuite/gcc.dg/pr44539.c
new file mode 100644
index 00000000000..9cfff7a3ae5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr44539.c
@@ -0,0 +1,29 @@
+/* PR tree-optimization/44539 */
+/* { dg-do compile } */
+/* { dg-options "-ftracer -freorder-blocks -O2" } */
+
+void bar (int file);
+extern int baz (void);
+
+void noret1 ()
+{
+ bar (0);
+ __builtin_exit (0);
+}
+
+void noret2 ()
+{
+ __builtin_exit (0);
+}
+
+void bar (int i)
+{
+ if (baz ())
+ noret1 (i);
+}
+
+void foo (int i)
+{
+ if (~i) bar (i);
+ i ? noret1 () : noret2 ();
+}
diff --git a/gcc/testsuite/gcc.dg/pr44674.c b/gcc/testsuite/gcc.dg/pr44674.c
new file mode 100644
index 00000000000..c3f16ff20ee
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr44674.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fprofile-generate" } */
+
+void
+jumpfunc (void *p)
+{
+ void *l = &&jumplabel;
+jumplabel:
+ __builtin_memcpy (p, l, 1);
+}
diff --git a/gcc/testsuite/gcc.dg/pr44699.c b/gcc/testsuite/gcc.dg/pr44699.c
new file mode 100644
index 00000000000..601cc78f572
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr44699.c
@@ -0,0 +1,157 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+typedef long unsigned int size_t;
+typedef long int intmax_t;
+typedef long unsigned int uintmax_t;
+extern void *xmalloc (size_t) __attribute__ ((__malloc__));
+extern const char *trim_filename (const char *);
+
+static __inline void *
+__inline_memcpy_chk (void *__dest, const void *__src, size_t __len)
+{
+ return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+
+typedef unsigned int hashval_t;
+typedef hashval_t (*htab_hash) (const void *);
+typedef int (*htab_eq) (const void *, const void *);
+typedef void (*htab_del) (void *);
+typedef int (*htab_trav) (void **, void *);
+typedef void *(*htab_alloc) (size_t, size_t);
+typedef void (*htab_free) (void *);
+
+typedef void *(*htab_alloc_with_arg) (void *, size_t, size_t);
+typedef void (*htab_free_with_arg) (void *, void *);
+struct htab {
+ htab_hash hash_f;
+ htab_eq eq_f;
+ htab_del del_f;
+ void ** entries;
+ size_t size;
+ size_t n_elements;
+ size_t n_deleted;
+ unsigned int searches;
+ unsigned int collisions;
+ htab_alloc alloc_f;
+ htab_free free_f;
+ void * alloc_arg;
+ htab_alloc_with_arg alloc_with_arg_f;
+ htab_free_with_arg free_with_arg_f;
+ unsigned int size_prime_index;
+};
+
+typedef struct htab *htab_t;
+enum insert_option {NO_INSERT, INSERT};
+extern void * htab_find (htab_t, const void *);
+extern void ** htab_find_slot (htab_t, const void *, enum insert_option);
+
+enum mode_class { MODE_RANDOM, MODE_CC, MODE_INT, MODE_PARTIAL_INT, MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM, MODE_FLOAT, MODE_DECIMAL_FLOAT, MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT, MODE_VECTOR_INT, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM, MODE_VECTOR_FLOAT, MAX_MODE_CLASS };
+
+static const char *const mode_class_names[MAX_MODE_CLASS] =
+{
+ "MODE_RANDOM", "MODE_CC", "MODE_INT", "MODE_PARTIAL_INT", "MODE_FRACT", "MODE_UFRACT", "MODE_ACCUM", "MODE_UACCUM", "MODE_FLOAT", "MODE_DECIMAL_FLOAT", "MODE_COMPLEX_INT", "MODE_COMPLEX_FLOAT", "MODE_VECTOR_INT", "MODE_VECTOR_FRACT", "MODE_VECTOR_UFRACT", "MODE_VECTOR_ACCUM", "MODE_VECTOR_UACCUM", "MODE_VECTOR_FLOAT"
+};
+struct mode_data
+{
+ struct mode_data *next;
+
+ const char *name;
+ enum mode_class cl;
+ unsigned int precision;
+ unsigned int bytesize;
+ unsigned int ncomponents;
+ unsigned int alignment;
+ const char *format;
+
+ struct mode_data *component;
+ struct mode_data *wider;
+ struct mode_data *wider_2x;
+
+ struct mode_data *contained;
+
+ struct mode_data *next_cont;
+
+ const char *file;
+ unsigned int line;
+ unsigned int counter;
+ unsigned int ibit;
+ unsigned int fbit;
+};
+
+static struct mode_data *modes[MAX_MODE_CLASS];
+static unsigned int n_modes[MAX_MODE_CLASS];
+static struct mode_data *void_mode;
+
+static const struct mode_data blank_mode = {
+ 0, "<unknown>", MAX_MODE_CLASS,
+ -1U, -1U, -1U, -1U,
+ 0, 0, 0, 0, 0, 0,
+ "<unknown>", 0, 0, 0, 0
+};
+
+static htab_t modes_by_name;
+
+static __inline__ struct mode_data *
+find_mode (const char *name)
+{
+ struct mode_data key;
+
+ key.name = name;
+ return (struct mode_data *) htab_find (modes_by_name, &key);
+}
+
+static struct mode_data *
+new_mode (enum mode_class cl, const char *name,
+ const char *file, unsigned int line)
+{
+ struct mode_data *m;
+ static unsigned int count = 0;
+
+ m = find_mode (name);
+ if (m)
+ {
+ error ("%s:%d: duplicate definition of mode \"%s\"",
+ trim_filename (file), line, name);
+ error ("%s:%d: previous definition here", m->file, m->line);
+ return m;
+ }
+
+ m = ((struct mode_data *) xmalloc (sizeof (struct mode_data)));
+ ((__builtin_object_size (m, 0) != (size_t) -1) ? __builtin___memcpy_chk (m, &blank_mode, sizeof (struct mode_data), __builtin_object_size (m, 0)) : __inline_memcpy_chk (m, &blank_mode, sizeof (struct mode_data)));
+ m->cl = cl;
+ m->name = name;
+ if (file)
+ m->file = trim_filename (file);
+ m->line = line;
+ m->counter = count++;
+
+ m->next = modes[cl];
+ modes[cl] = m;
+ n_modes[cl]++;
+
+ *htab_find_slot (modes_by_name, m, INSERT) = m;
+
+ return m;
+}
+
+static void
+make_int_mode (const char *name,
+ unsigned int precision, unsigned int bytesize,
+ const char *file, unsigned int line)
+{
+ struct mode_data *m = new_mode (MODE_INT, name, file, line);
+ m->bytesize = bytesize;
+ m->precision = precision;
+}
+
+static void
+create_modes (void)
+{
+make_int_mode ("HI", -1U, 2, "../../work/gcc/machmode.def", 182);
+}
+
+int
+main (int argc, char **argv)
+{
+ create_modes ();
+}
diff --git a/gcc/testsuite/gcc.dg/pragma-diag-1.c b/gcc/testsuite/gcc.dg/pragma-diag-1.c
new file mode 100644
index 00000000000..b6d294d9ab5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pragma-diag-1.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-Wuninitialized -O2" } */
+/* { dg-message "warnings being treated as errors" "" {target "*-*-*"} 0 } */
+
+main()
+{
+ int a;
+ int b;
+ int c;
+ int d;
+
+#pragma GCC diagnostic error "-Wuninitialized"
+ foo(a); /* { dg-error "uninitialized" } */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wuninitialized"
+ foo(b);
+#pragma GCC diagnostic pop
+ foo(c); /* { dg-error "uninitialized" } */
+#pragma GCC diagnostic pop
+ foo(d); /* { dg-warning "uninitialized" } */
+}
diff --git a/gcc/testsuite/gcc.dg/struct/w_prof_global_array.c b/gcc/testsuite/gcc.dg/struct/w_prof_global_array.c
index cbfd0bc72bb..ca3643e43de 100644
--- a/gcc/testsuite/gcc.dg/struct/w_prof_global_array.c
+++ b/gcc/testsuite/gcc.dg/struct/w_prof_global_array.c
@@ -26,5 +26,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" } } */
+/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final-use { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/w_prof_global_var.c b/gcc/testsuite/gcc.dg/struct/w_prof_global_var.c
index c51648c4ef0..baff45d917d 100644
--- a/gcc/testsuite/gcc.dg/struct/w_prof_global_var.c
+++ b/gcc/testsuite/gcc.dg/struct/w_prof_global_var.c
@@ -39,5 +39,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final-use { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/w_prof_local_array.c b/gcc/testsuite/gcc.dg/struct/w_prof_local_array.c
index 1a798e399d3..8953264fea1 100644
--- a/gcc/testsuite/gcc.dg/struct/w_prof_local_array.c
+++ b/gcc/testsuite/gcc.dg/struct/w_prof_local_array.c
@@ -34,5 +34,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final-use { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/w_prof_local_var.c b/gcc/testsuite/gcc.dg/struct/w_prof_local_var.c
index 82f24a1a4b1..9a23f8d53a8 100644
--- a/gcc/testsuite/gcc.dg/struct/w_prof_local_var.c
+++ b/gcc/testsuite/gcc.dg/struct/w_prof_local_var.c
@@ -37,5 +37,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" } } */
+/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final-use { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c b/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c
index b2223c88b8b..b0202399104 100644
--- a/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c
+++ b/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c
@@ -28,6 +28,6 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final-use { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/w_prof_two_strs.c b/gcc/testsuite/gcc.dg/struct/w_prof_two_strs.c
index 308c30e4fd7..e9de98c3b8a 100644
--- a/gcc/testsuite/gcc.dg/struct/w_prof_two_strs.c
+++ b/gcc/testsuite/gcc.dg/struct/w_prof_two_strs.c
@@ -61,6 +61,6 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 2" "ipa_struct_reorg" } } */
+/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 2" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final-use { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/w_ratio_cold_str.c b/gcc/testsuite/gcc.dg/struct/w_ratio_cold_str.c
index 19de595e8ed..3c26e3be7b6 100644
--- a/gcc/testsuite/gcc.dg/struct/w_ratio_cold_str.c
+++ b/gcc/testsuite/gcc.dg/struct/w_ratio_cold_str.c
@@ -39,5 +39,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" } } */
+/* { dg-final-use { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final-use { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_array_field.c b/gcc/testsuite/gcc.dg/struct/wo_prof_array_field.c
index 12c217aad97..5d5e37b4f0e 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_array_field.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_array_field.c
@@ -23,5 +23,5 @@ int main()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_array_through_pointer.c b/gcc/testsuite/gcc.dg/struct/wo_prof_array_through_pointer.c
index abf50a54fec..efb68be8bdd 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_array_through_pointer.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_array_through_pointer.c
@@ -35,5 +35,5 @@ main ()
return 0;
}
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c b/gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c
index b1508eec5c7..77226b449c5 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c
@@ -26,5 +26,5 @@ int main()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_empty_str.c b/gcc/testsuite/gcc.dg/struct/wo_prof_empty_str.c
index db7f6b09cb5..58411202767 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_empty_str.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_empty_str.c
@@ -43,5 +43,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "No structures to transform" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "No structures to transform" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_arg_to_local.c b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_arg_to_local.c
index e6638b73a60..781a847f9f7 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_arg_to_local.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_arg_to_local.c
@@ -42,5 +42,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "is passed to local function...Excluded." "ipa_struct_reorg" } } */
+/* { dg-final { scan-ipa-dump "is passed to local function...Excluded." "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_return.c b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_return.c
index 8830c55601d..8892fa99098 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_return.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_return.c
@@ -29,5 +29,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "is return type of function...Excluded" "ipa_struct_reorg" } } */
+/* { dg-final { scan-ipa-dump "is return type of function...Excluded" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_str_init.c b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_str_init.c
index 5f634fc119c..6da3420f6e8 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_str_init.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_str_init.c
@@ -28,6 +28,6 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "is initialized...Excluded" "ipa_struct_reorg" } } */
+/* { dg-final { scan-ipa-dump "is initialized...Excluded" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_array.c b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_array.c
index 55a644e1971..bd03ec42f05 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_array.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_array.c
@@ -30,5 +30,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "is a field in the structure" "ipa_struct_reorg" } } */
+/* { dg-final { scan-ipa-dump "is a field in the structure" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_pointer.c b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_pointer.c
index 4cb94afc5df..59e0e48321a 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_pointer.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_pointer.c
@@ -45,5 +45,5 @@ main (void)
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "is a field in the structure" "ipa_struct_reorg" } } */
+/* { dg-final { scan-ipa-dump "is a field in the structure" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_value.c b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_value.c
index bade3153909..a6b32ddd688 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_value.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_value.c
@@ -42,5 +42,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "is a field in the structure" "ipa_struct_reorg" } } */
+/* { dg-final { scan-ipa-dump "is a field in the structure" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_global_array.c b/gcc/testsuite/gcc.dg/struct/wo_prof_global_array.c
index 4ffd4b5a265..b61e26b1248 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_global_array.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_global_array.c
@@ -29,5 +29,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_global_var.c b/gcc/testsuite/gcc.dg/struct/wo_prof_global_var.c
index 4c00d02434a..39351e072e2 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_global_var.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_global_var.c
@@ -42,5 +42,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_local_array.c b/gcc/testsuite/gcc.dg/struct/wo_prof_local_array.c
index 3d92da40517..18d5a734740 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_local_array.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_local_array.c
@@ -37,5 +37,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_local_var.c b/gcc/testsuite/gcc.dg/struct/wo_prof_local_var.c
index a6fd7be4371..26a9dbd7314 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_local_var.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_local_var.c
@@ -40,5 +40,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_malloc_size_var.c b/gcc/testsuite/gcc.dg/struct/wo_prof_malloc_size_var.c
index 04b8b6621fb..6caadcf1230 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_malloc_size_var.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_malloc_size_var.c
@@ -44,5 +44,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c b/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c
index 22193f2ae57..812763d53ff 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c
@@ -31,5 +31,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c b/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c
index e17ca56ee8b..313af1080c1 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c
@@ -31,5 +31,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "No structures to transform" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "No structures to transform" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_two_strs.c b/gcc/testsuite/gcc.dg/struct/wo_prof_two_strs.c
index 24dae559829..92da94d2923 100644
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_two_strs.c
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_two_strs.c
@@ -64,5 +64,5 @@ main ()
}
/*--------------------------------------------------------------------------*/
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 2" "ipa_struct_reorg" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 2" "ipa_struct_reorg" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "*" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/pr43781.c b/gcc/testsuite/gcc.dg/torture/pr43781.c
new file mode 100644
index 00000000000..37fe5a36769
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr43781.c
@@ -0,0 +1,45 @@
+/* { dg-do compile } */
+
+typedef int int32_t;
+typedef unsigned char uint8_t;
+
+struct S0
+{
+ uint8_t f3;
+};
+
+struct S2
+{
+ uint8_t f5;
+};
+
+struct S0 g_22 = {
+ 0
+};
+
+int32_t g_91;
+const struct S2 *g_314;
+const struct S2 **g_313 = &g_314;
+struct S2 g_320[2] = {
+ 0
+};
+
+void
+int32func (uint64p_34)
+{
+ for (g_22.f3 = 0; g_22.f3 <= 0; g_22.f3)
+ {
+ lbl_491:{
+ if (1)
+ {
+ int32_t *l_453[2][7][7][1][1];
+ int i, j, k, l, m;
+ for (m; m; m++)
+ l_453[i][j][k][l][m];
+ }
+ *g_313 = 0;
+ if (g_91)
+ goto lbl_491;
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/tree-prof/stringop-1.c b/gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
index d32a6cedc7a..0f477b2376c 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
@@ -16,7 +16,7 @@ main()
/* { dg-final-use { scan-tree-dump "Single value 4 stringop" "tree_profile"} } */
/* Really this ought to simplify into assignment, but we are not there yet. */
/* a[0] = b[0] is what we fold the resulting memcpy into. */
-/* { dg-final-use { scan-tree-dump "a.0. = " "optimized"} } */
-/* { dg-final-use { scan-tree-dump "= b.0." "optimized"} } */
+/* { dg-final-use { scan-tree-dump " = MEM.*&b" "optimized"} } */
+/* { dg-final-use { scan-tree-dump "MEM.*&a\\\] = " "optimized"} } */
/* { dg-final-use { cleanup-tree-dump "optimized" } } */
/* { dg-final-use { cleanup-tree-dump "tree_profile" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c b/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c
index f9f5fb798ef..ed6f7c0d5d5 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c
@@ -33,5 +33,5 @@ simplify_condition (cond_p)
}
/* There should be exactly one IF conditional. */
-/* { dg-final { scan-tree-dump-times "if " 1 "vrp1" } } */
+/* { dg-final { scan-tree-dump-times "if " 1 "vrp1" { xfail *-*-* } } } */
/* { dg-final { cleanup-tree-dump "vrp1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-2.c b/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-2.c
deleted file mode 100644
index dc764c3d79e..00000000000
--- a/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-2.c
+++ /dev/null
@@ -1,13 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-optimized" } */
-struct a{
- int a;
- int b;
-} a;
-int *
-t()
-{
- return (int *)&a;
-}
-/* { dg-final { scan-tree-dump "a.a" "optimized"} } */
-/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-3.c b/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-3.c
deleted file mode 100644
index b764187a029..00000000000
--- a/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-3.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-optimized" } */
-union a
-{
- struct s1
- {
- long long a;
- long long b;
- } s1;
- struct s2
- {
- int c;
- int d;
- } s2;
- struct s3
- {
- unsigned long long e;
- unsigned long long f;
- } s3;
-} a;
-int *
-t ()
-{
- return (int *) &a;
-}
-
-/* { dg-final { scan-tree-dump "a.s2.c" "optimized"} } */
-/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c
index ee3cb0ebfe5..7b07d7f488f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c
@@ -15,5 +15,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 "t\\\[i.*\\\].* = 1;" 1 "forwprop1" } } */
/* { dg-final { cleanup-tree-dump "forwprop1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c
index 0b865245a96..b46b8ece816 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-forwprop1" } */
+/* { dg-options "-O -fdump-tree-fre-details" } */
int b;
unsigned a;
@@ -15,9 +15,8 @@ void test2(void)
}
/* The indirect load should be replaced by a load from a and a
- conversion to int. */
+ conversion to int. FRE should then be able to replace
+ the rhs of the store to b by 1. */
-/* { dg-final { scan-tree-dump "= a;" "forwprop1" } } */
-/* { dg-final { scan-tree-dump "= \\\(int\\\) " "forwprop1" } } */
-/* { dg-final { scan-tree-dump-not "= \\\*" "forwprop1" } } */
-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+/* { dg-final { scan-tree-dump "Replaced\[^\\n\]*with 1" "fre" } } */
+/* { dg-final { cleanup-tree-dump "fre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c
index fe04e66fa1a..2aefb9ace63 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c
@@ -17,5 +17,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 "t\\\[i.*\\\].* = 1;" 1 "forwprop1" } } */
/* { dg-final { cleanup-tree-dump "forwprop?" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
index 710bc5dd114..1b68d5a35f0 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-forwprop1 -w" } */
+/* { dg-options "-O1 -fdump-tree-esra -w" } */
#define vector __attribute__((vector_size(16) ))
struct VecClass
@@ -15,7 +15,8 @@ vector float foo( vector float v )
return y.v;
}
-/* We should be able to convert the cast to a VCE in forwprop1. */
-/* { dg-final { scan-tree-dump-times "VIEW_CONVERT_EXPR" 1 "forwprop1"} } */
-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
-
+/* We should be able to remove the intermediate struct and directly
+ return x. As we do not fold VIEW_CONVERT_EXPR<struct VecClass>(x).v
+ that doesn't happen right now. */
+/* { dg-final { scan-tree-dump-times "VIEW_CONVERT_EXPR" 1 "esra"} } */
+/* { dg-final { cleanup-tree-dump "esra" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c
index 4e0751f8119..fc74297242c 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c
@@ -12,5 +12,5 @@ int foo(struct X *q)
/* We should have propragated &q->a into (*pointer). */
/* { dg-final { scan-tree-dump-times "pointer" 0 "forwprop1"} } */
-/* { dg-final { scan-tree-dump "->a\\\[0\\\]" "forwprop1" } } */
+/* { dg-final { scan-tree-dump "\\\[0\\\]" "forwprop1" } } */
/* { dg-final { cleanup-tree-dump "forwprop1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c
new file mode 100644
index 00000000000..a31e8ea7a47
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-fnsplit" } */
+int test2(a)
+{
+ if (a<100)
+ return 1;
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ do_something_big ();
+ return 0;
+}
+
+test()
+{
+ test2(10);
+ test2(20);
+}
+/* { dg-final { scan-tree-dump-times "Splitting function" 1 "fnsplit"} } */
+/* { dg-final { cleanup-tree-dump "fnsplit" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c
new file mode 100644
index 00000000000..bbde73d6c7c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c
@@ -0,0 +1,41 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-fnsplit" } */
+int b;
+int c;
+int d;
+split_me(int a)
+{
+ int t = 0;
+ if (d>4)
+ return;
+ do
+ {
+ long_function (t);
+ long_function (t);
+ long_function (t);
+ long_function (t);
+ long_function (t);
+ long_function (t);
+ make_me_irregular:
+ long_function (t);
+ long_function (t);
+ long_function (t);
+ long_function (t);
+ long_function (t);
+ t=b;
+ }
+ while (t);
+ if (c)
+ goto make_me_irregular;
+}
+
+main()
+{
+ split_me (1);
+ split_me (2);
+ split_me (3);
+ split_me (4);
+ split_me (5);
+}
+/* { dg-final { scan-tree-dump-times "Splitting function" 1 "fnsplit"} } */
+/* { dg-final { cleanup-tree-dump "fnsplit" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-3.c
new file mode 100644
index 00000000000..05a37f81027
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-3.c
@@ -0,0 +1,21 @@
+int baz (void);
+static int
+foo (int x)
+{
+ if (__builtin_expect (x <= 0, 0))
+ {
+ __builtin_printf ("foo\n");
+ __builtin_printf ("foo\n");
+ __builtin_printf ("foo\n");
+ __builtin_abort ();
+ }
+ return 6;
+}
+
+int a,b,c;
+
+int
+bar (int x)
+{
+ return foo (a) + foo (b) + foo (c);
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-4.c
new file mode 100644
index 00000000000..9d5864bad3c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-4.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-fnsplit" } */
+int make_me_big (void);
+void abort (void);
+
+int
+split_me (int a)
+{
+ if (__builtin_expect(a<10, 1))
+ {
+ abort ();
+ }
+ else
+ {
+ make_me_big ();
+ make_me_big ();
+ make_me_big ();
+ make_me_big ();
+ return a+1;
+ }
+}
+
+int
+test(void)
+{
+ return split_me (0)+split_me(1)+split_me(2);
+}
+/* { dg-final { scan-tree-dump-times "Splitting function" 1 "fnsplit"} } */
+/* { dg-final { cleanup-tree-dump "fnsplit" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
index 9733d8f99d8..4b8239e4531 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -fdump-tree-fre" } */
#include <stddef.h>
union tree_node;
@@ -72,7 +72,9 @@ main (void)
remove_useless_vars (&unexpanded_var_list, 0);
return 0;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
+
+/* See PR44656. The last elimination is only done by PRE. */
+/* { dg-final { scan-tree-dump-not "= unexpanded_var_list;" "fre" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 2 "pre" } } */
/* { dg-final { scan-tree-dump-times "Insertions: 2" 1 "pre" } } */
/* { dg-final { cleanup-tree-dump "pre" } } */
-
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c
index 736a4d95577..bff58f6a41d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */
+/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all -march=i486" { target { i?86-*-* && ilp32} } } */
/* { dg-require-effective-target size32plus } */
double u[1782225];
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c
index 51508f98a61..d7dd211e9bc 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */
+/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all -march=i486" { target { i?86-*-* && ilp32} } } */
/* { dg-require-effective-target size32plus } */
double u[1782225];
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c
index e2d6abced60..6682538a2ed 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */
+/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all -march=i486" { target { i?86-*-* && ilp32} } } */
/* { dg-require-effective-target size32plus } */
double u[1782225];
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-5.c b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-5.c
index 2f64925e901..3540723dc56 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-5.c
@@ -1,5 +1,6 @@
/* { dg-do compile { target { size32plus } } } */
/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */
+/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all -march=i486" { target { i?86-*-* && ilp32} } } */
int foo ()
{
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-6.c b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-6.c
index edf30a3d573..e6a290a6a13 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-6.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-6.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */
+/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all -march=i486" { target { i?86-*-* && ilp32} } } */
/* { dg-require-effective-target size32plus } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c
index 21f8ffafce6..67569d8a316 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */
+/* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all -march=i486" { target { i?86-*-* && ilp32} } } */
double foo(double *a)
{
int i,j;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c
index af867515002..853fe70c623 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-forwprop1" } */
+/* { dg-options "-O -fdump-tree-forwprop1" } */
struct A { int i; };
int
@@ -11,5 +11,7 @@ foo(struct A *locp, int str)
return locp->i;
}
-/* { dg-final { scan-tree-dump "locp.*->i =" "forwprop1" } } */
+/* We should have propagated &locp->i into its dereference. */
+
+/* { dg-final { scan-tree-dump "locp_\[^\\n\]* =" "forwprop1" } } */
/* { dg-final { cleanup-tree-dump "forwprop1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c b/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
index 2409608d9da..f924d26cca2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-vrp1" } */
+/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-dce1" } */
int
foo (int *p)
@@ -16,8 +16,9 @@ foo (int *p)
}
/* Target with fno-delete-null-pointer-checks should not fold checks */
-/* { dg-final { scan-tree-dump-times "Folding predicate " 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump "Folding predicate " "vrp1" { target { ! keeps_null_pointer_checks } } } } */
/* { dg-final { scan-tree-dump-times "Folding predicate " 0 "vrp1" { target { keeps_null_pointer_checks } } } } */
-/* { dg-final { scan-tree-dump-not "b_. =" "vrp1" { target { ! avr-*-* } } } } */
-/* { dg-final { scan-tree-dump "b_. =" "vrp1" { target { avr-*-* } } } } */
+/* { dg-final { scan-tree-dump-not "b_. =" "dce1" { target { ! avr-*-* } } } } */
+/* { dg-final { scan-tree-dump "b_. =" "dce1" { target { avr-*-* } } } } */
/* { dg-final { cleanup-tree-dump "vrp1" } } */
+/* { dg-final { cleanup-tree-dump "dce1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr44258.c b/gcc/testsuite/gcc.dg/tree-ssa/pr44258.c
new file mode 100644
index 00000000000..a98d3ceccbf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr44258.c
@@ -0,0 +1,43 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-esra-details" } */
+
+struct blah
+{
+ char a[4];
+};
+
+struct str
+{
+ struct blah b1;
+ char x;
+};
+
+struct val
+{
+ char y;
+ struct blah b2;
+};
+
+union U
+{
+ struct str str;
+ struct val val;
+};
+
+
+extern struct blah e_b1, e_b2;
+extern union U *e_u;
+
+int foo (int b)
+{
+ union U u;
+
+ u.str.b1 = e_b1;
+ u.val.b2 = e_b2;
+ u.str.b1.a[3] = 0;
+
+ *e_u = u;
+}
+
+/* { dg-final { scan-tree-dump-times "Created a replacement" 0 "esra"} } */
+/* { dg-final { cleanup-tree-dump "esra" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr44423.c b/gcc/testsuite/gcc.dg/tree-ssa/pr44423.c
new file mode 100644
index 00000000000..6232d64963a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr44423.c
@@ -0,0 +1,47 @@
+/* { dg-do compile { target x86_64-*-* } } */
+/* { dg-options "-O2 -fdump-tree-esra-details" } */
+
+#include "xmmintrin.h"
+
+typedef __m128 v4sf; // vector of 4 floats (SSE1)
+
+#define ARRSZ 1024
+
+typedef union {
+ float f[4];
+ v4sf v;
+} V4SF;
+
+struct COLOUR {
+ float r,g,b;
+};
+
+void func (float *pre1, float pre2, struct COLOUR *a, V4SF *lpic)
+ {
+ V4SF va;
+ int y;
+ va.f[0]=a->r;va.f[1]=a->g;va.f[2]=a->b;va.f[3]=0.f;
+ for (y=0; y<20; ++y)
+ {
+ float att = pre1[y]*pre2;
+ v4sf tmpatt=_mm_load1_ps(&att);
+ tmpatt=_mm_mul_ps(tmpatt,va.v);
+ lpic[y].v=_mm_add_ps(tmpatt,lpic[y].v);
+ }
+ }
+
+int main()
+ {
+ V4SF lpic[ARRSZ];
+ float pre1[ARRSZ];
+ int i;
+ struct COLOUR col={0.,2.,4.};
+ for (i=0; i<20; ++i)
+ pre1[i]=0.4;
+ for (i=0;i<10000000;++i)
+ func(&pre1[0],0.3,&col,&lpic[0]);
+ return 0;
+ }
+
+/* { dg-final { scan-tree-dump-times "Created a replacement" 0 "esra"} } */
+/* { dg-final { cleanup-tree-dump "esra" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr44483.c b/gcc/testsuite/gcc.dg/tree-ssa/pr44483.c
new file mode 100644
index 00000000000..cdae91a9098
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr44483.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-c -O3" { target *-*-* } } */
+
+int ffesum (void) {
+ int ch[4], ii, jj, kk;
+ char asc[32];
+
+ for (ii = 0; ii < 4; ii++)
+ {
+ for (jj = 0; jj < 4; jj++)
+ ch[jj] = ii;
+ for (kk = 0; kk < 13; kk++)
+ for (jj = 0; jj < 4; jj += 2)
+ if ((unsigned char) ch[jj] || (unsigned char) ch[jj + 1])
+ ch[jj]++;
+ for (jj = 0; jj < 4; jj++)
+ asc[4 * jj + ii] = ch[jj];
+ }
+ return asc[0];
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
index 3b9e19fe5e5..9e453a7c08a 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
@@ -5,20 +5,12 @@
/* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
#define K 1000000
-int a[K], b[K];
+int a[K];
void test(int *p)
{
unsigned i;
- /* Nontemporal store should be used for a. */
- for (i = 0; i < K; i++)
- a[i] = 0;
-
- /* Nontemporal store should be used for a, nontemporal prefetch for b. */
- for (i = 0; i < K; i++)
- a[i] = b[i];
-
/* Nontemporal store should not be used here (only write and read temporal
prefetches). */
for (i = 0; i < K - 10000; i++)
@@ -44,18 +36,14 @@ void test(int *p)
}
/* { dg-final { scan-tree-dump-times "Issued prefetch" 5 "aprefetch" } } */
-/* { dg-final { scan-tree-dump-times "Issued nontemporal prefetch" 3 "aprefetch" } } */
-/* { dg-final { scan-tree-dump-times "a nontemporal store" 2 "aprefetch" } } */
+/* { dg-final { scan-tree-dump-times "Issued nontemporal prefetch" 2 "aprefetch" } } */
+/* { dg-final { scan-tree-dump-times "a nontemporal store" 0 "aprefetch" } } */
-/* { dg-final { scan-tree-dump-times "builtin_prefetch" 8 "optimized" } } */
-/* { dg-final { scan-tree-dump-times "=\\{nt\\}" 18 "optimized" } } */
-/* { dg-final { scan-tree-dump-times "__builtin_ia32_mfence" 2 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "builtin_prefetch" 7 "optimized" } } */
/* { dg-final { scan-assembler-times "prefetchw" 5 } } */
/* { dg-final { scan-assembler-times "prefetcht" 1 } } */
-/* { dg-final { scan-assembler-times "prefetchnta" 2 } } */
-/* { dg-final { scan-assembler-times "movnti" 18 } } */
-/* { dg-final { scan-assembler-times "mfence" 2 } } */
+/* { dg-final { scan-assembler-times "prefetchnta" 1 } } */
/* { dg-final { cleanup-tree-dump "aprefetch" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c
new file mode 100644
index 00000000000..a05d552ace1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c
@@ -0,0 +1,28 @@
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=athlon" } } */
+/* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
+
+#define K 1000000
+int a[K];
+
+void test()
+{
+ unsigned i;
+
+ /* Nontemporal store should be used for a. */
+ for (i = 0; i < K; i++)
+ a[i] = 0;
+}
+
+/* { dg-final { scan-tree-dump-times "a nontemporal store" 1 "aprefetch" } } */
+
+/* { dg-final { scan-tree-dump "=\\{nt\\}" "optimized" } } */
+/* { dg-final { scan-tree-dump-times "__builtin_ia32_mfence" 1 "optimized" } } */
+
+/* { dg-final { scan-assembler "movnti" } } */
+/* { dg-final { scan-assembler-times "mfence" 1 } } */
+
+/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c
new file mode 100644
index 00000000000..eb22a660e43
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c
@@ -0,0 +1,32 @@
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=athlon" } } */
+/* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
+
+#define K 1000000
+int a[K], b[K];
+
+void test()
+{
+ unsigned i;
+
+ /* Nontemporal store should be used for a, nontemporal prefetch for b. */
+ for (i = 0; i < K; i++)
+ a[i] = b[i];
+
+}
+
+/* { dg-final { scan-tree-dump-times "Issued nontemporal prefetch" 1 "aprefetch" } } */
+/* { dg-final { scan-tree-dump-times "a nontemporal store" 1 "aprefetch" } } */
+
+/* { dg-final { scan-tree-dump-times "builtin_prefetch" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump "=\\{nt\\}" "optimized" } } */
+/* { dg-final { scan-tree-dump-times "__builtin_ia32_mfence" 1 "optimized" } } */
+
+/* { dg-final { scan-assembler-times "prefetchnta" 1 } } */
+/* { dg-final { scan-assembler "movnti" } } */
+/* { dg-final { scan-assembler-times "mfence" 1 } } */
+
+/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
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 b61674dff3a..6db9ba0d871 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-ccp -fdump-tree-alias" } */
+/* { dg-options "-O2 -fno-tree-ccp -fdump-tree-ealias" } */
extern void abort (void);
struct X {
@@ -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 }" "alias" } } */
-/* { dg-final { cleanup-tree-dump "alias" } } */
+/* { dg-final { scan-tree-dump "q_., points-to vars: { 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 adb01b23165..85b96b190e2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-ccp -fdump-tree-alias" } */
+/* { dg-options "-O2 -fno-tree-ccp -fdump-tree-ealias" } */
extern void abort (void);
struct X {
@@ -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 }" "alias" } } */
-/* { dg-final { cleanup-tree-dump "alias" } } */
+/* { dg-final { scan-tree-dump "q_., points-to vars: { i }" "ealias" } } */
+/* { dg-final { cleanup-tree-dump "ealias" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-21.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-21.c
index 3b23c36238e..3f4adf43483 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-21.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-21.c
@@ -21,5 +21,9 @@ int bar (void)
return q->i;
}
-/* { dg-final { scan-tree-dump-times "a.b.i" 2 "ccp1" } } */
+/* The first access is through struct A, so a.b.i is fine,
+ the second access needs to preserve the original access type struct B. */
+
+/* { dg-final { scan-tree-dump-times "a.b.i" 1 "ccp1" } } */
+/* { dg-final { scan-tree-dump-times "MEM\\\[\\\(struct B \\\*\\\)&a\\\].i" 1 "ccp1" } } */
/* { dg-final { cleanup-tree-dump "ccp1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-23.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-23.c
index ac7f068cfd1..fb4af2d484d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-23.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-23.c
@@ -15,5 +15,5 @@ int foo (void)
return *x;
}
-/* { dg-final { scan-tree-dump "a.i\\\[1\\\]" "ccp1" } } */
+/* { dg-final { scan-tree-dump "MEM\\\[\\\(int \\\*\\\)&a \\\+ 4B\\\]" "ccp1" } } */
/* { dg-final { cleanup-tree-dump "ccp1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-25.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-25.c
index f29c4942ace..7912a57f09e 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-25.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-25.c
@@ -9,6 +9,6 @@ int foo(int i)
}
/* { dg-final { scan-tree-dump "&a\\\[\[iD\]\\\." "ccp1" } } */
-/* { dg-final { scan-tree-dump "= a\\\[\[iD\]\\\." "forwprop1" } } */
+/* { dg-final { scan-tree-dump "= .*&a\\\]\\\[\[iD\]\\\." "forwprop1" } } */
/* { dg-final { cleanup-tree-dump "ccp1" } } */
/* { dg-final { cleanup-tree-dump "forwprop1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-26.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-26.c
index 542c4293960..c0a548155cb 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-26.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-26.c
@@ -7,5 +7,5 @@ int foo(int i)
return (a + 1)[i];
}
-/* { dg-final { scan-tree-dump "= a\\\[D\\\." "forwprop1" } } */
+/* { dg-final { scan-tree-dump "=.*&a\\\]\\\[D\\\." "forwprop1" } } */
/* { dg-final { cleanup-tree-dump "forwprop1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c
index 0cb63242c0e..b9ec6bc720f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c
@@ -11,6 +11,5 @@ int f(int *a)
return *c + t;
}
-/* { dg-final { scan-tree-dump "Replaced \\\(int \\\*\\\) b_.*with a_" "fre" } } */
-/* { dg-final { scan-tree-dump "Replaced \\\*c_.*with t_" "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*a_\[^\n\].*with t_" "fre" } } */
/* { dg-final { cleanup-tree-dump "fre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
index ae9eb5a2002..972e6c69ef9 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
@@ -23,6 +23,5 @@ void foo(double (*q)[4], struct Foo *tmp1)
}
}
-/* { dg-final { scan-tree-dump "Inserted .* &a" "fre" } } */
-/* { dg-final { scan-tree-dump "Replaced tmp1_.\\\(D\\\)->data" "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced tmp1_.\\\(D\\\)->data with &a" "fre" } } */
/* { dg-final { cleanup-tree-dump "fre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c
index 81b82fe4880..9d1b3f2ba92 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c
@@ -27,6 +27,5 @@ void foo(double (*q)[4])
bar(a);
}
-/* { dg-final { scan-tree-dump "Inserted .* &a" "fre" } } */
-/* { dg-final { scan-tree-dump "Replaced tmp1.data" "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced tmp1.data with &a" "fre" } } */
/* { dg-final { cleanup-tree-dump "fre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c
index 978b7abab3a..b986bdd92a9 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-Os -fdump-tree-pre-details" } */
+/* { dg-options "-O -fdump-tree-fre-details" } */
typedef union
{
@@ -23,5 +23,5 @@ void foo(SA* pResult, SB* method, SC* self)
pResult->data = pResult->data;
}
-/* { dg-final { scan-tree-dump "Deleted redundant store" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "Deleted redundant store" "fre" } } */
+/* { dg-final { cleanup-tree-dump "fre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c
index c87f62e69c6..f87476a3a9f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c
@@ -7,6 +7,6 @@ foo (int *array)
return array[1];
return 0;
}
-/* We should eliminate one address calculation, and one load. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "fre"} } */
+/* We should eliminate one load. */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre"} } */
/* { dg-final { cleanup-tree-dump "fre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c
index 27ccda5264a..7caf4eec6f8 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c
@@ -23,5 +23,5 @@ int vnum_test8(int *data)
}
/* We should eliminate m - n, n + k, set data[5] = 0, eliminate the
address arithmetic for data[5], and set p = 0.
-/* { dg-final { scan-tree-dump-times "Eliminated: 6" 1 "fre"} } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 5" 1 "fre"} } */
/* { dg-final { cleanup-tree-dump "fre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c b/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c
index 78e92d769e4..7dc7833647b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c
@@ -1,5 +1,5 @@
/* { dg-do "compile" } */
-/* { dg-options "-O2 -fdump-tree-fre" } */
+/* { dg-options "-O2 -fdump-tree-fre-details" } */
struct S { float f; };
int __attribute__((noinline))
@@ -11,5 +11,5 @@ foo (float *r, struct S *p)
return i + *q;
}
-/* { dg-final { scan-tree-dump-times "\\\*q" 1 "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced\[^\n\]*with i_." "fre" } } */
/* { dg-final { cleanup-tree-dump "fre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c b/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
index aa9e142bba0..812dac928da 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
@@ -12,7 +12,8 @@ foo ( struct S *p)
}
-/* There should only be one load of p->f because fwprop can change *(int *)&p->f into just (int)p->f. */
-/* { dg-final { scan-tree-dump-times "p_.\\\(D\\\)->f" 1 "fre" } } */
+/* There should only be one load of p->f because fwprop can change
+ *(int *)&p->f into just (int)p->f. */
+/* { dg-final { scan-tree-dump-times "= \[^\n\]*p_.\\\(D\\\)" 1 "fre" } } */
/* { dg-final { cleanup-tree-dump "fre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp47.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp47.c
index 73382941488..25b77201c59 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp47.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp47.c
@@ -5,6 +5,7 @@
this. */
/* { dg-do compile { target { ! "mips*-*-* s390*-*-* avr-*-*" } } } */
/* { dg-options "-O2 -fdump-tree-vrp -fdump-tree-dom" } */
+/* { dg-options "-O2 -fdump-tree-vrp -fdump-tree-dom -march=i586" { target { i?86-*-* && ilp32 } } } */
int h(int x, int y)
{
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-10.c b/gcc/testsuite/gcc.dg/vect/bb-slp-10.c
index 1a678ca3677..d31ffb47c34 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-10.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-10.c
@@ -28,6 +28,9 @@ main1 (unsigned int x, unsigned int y)
*pout++ = a2 * x;
*pout++ = a3 * y;
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[1] != (in[0] + 23) * x
|| out[2] != (in[1] + 142) * y
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-11.c b/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
index 92a86cd242a..14c4f3a82c6 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
@@ -27,6 +27,9 @@ main1 (unsigned int x, unsigned int y)
*pout++ = a2 * x;
*pout++ = a3 * y;
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != (in[0] + 23) * x
|| out[1] != (in[1] + 142) * y
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-13.c b/gcc/testsuite/gcc.dg/vect/bb-slp-13.c
index 5005ae5019f..7e1d3ff798b 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-13.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-13.c
@@ -25,6 +25,9 @@ main1 (unsigned int x, unsigned int y)
out[2] = a2 * x;
out[3] = a3 * y;
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != (in[0] + 23) * x
|| out[1] != (in[1] + 142) * y
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-14.c b/gcc/testsuite/gcc.dg/vect/bb-slp-14.c
index 673a163c92f..6ffbe28741a 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-14.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-14.c
@@ -26,6 +26,9 @@ main1 (unsigned int x, unsigned int y)
out[2] = a2 * x;
out[3] = a3 * y;
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != (in[0] + 23) * x
|| out[1] != (in[1] + 142) * y
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-15.c b/gcc/testsuite/gcc.dg/vect/bb-slp-15.c
index ba8bc757e86..b927348c810 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-15.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-15.c
@@ -30,6 +30,9 @@ main1 (unsigned int x, unsigned int y)
out[2] = a2 * x;
out[3] = a3 * y;
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != (in[0] + 23) * x
|| out[1] != (in[1] + 142) * y
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-17.c b/gcc/testsuite/gcc.dg/vect/bb-slp-17.c
index 36227391d2e..bb4bd5d8bc5 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-17.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-17.c
@@ -34,6 +34,9 @@ main1 (unsigned int x, unsigned int y)
out[2] = a2 * x;
out[3] = a3 * y;
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != (in[0] + 23) * x
|| out[1] != (in[1] + 142) * y
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-18.c b/gcc/testsuite/gcc.dg/vect/bb-slp-18.c
index ab99f822aff..c5da3516c46 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-18.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-18.c
@@ -25,6 +25,9 @@ main1 (unsigned int x, unsigned int y)
out[2] = a2 * x;
out[3] = a3 * y;
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != a0 * x
|| out[1] != a1 * y
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-19.c b/gcc/testsuite/gcc.dg/vect/bb-slp-19.c
index 5ee83a1945e..2cb1568488a 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-19.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-19.c
@@ -9,10 +9,10 @@
unsigned short out[N];
unsigned short in[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
+int i;
__attribute__ ((noinline)) int
main1 ()
{
- int i;
unsigned short *pin = &in[0];
unsigned short *pout = &out[0];
@@ -27,6 +27,9 @@ main1 ()
*pout++ = *pin++;
*pout++ = *pin++;
+ if (i)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != in[0]
|| out[1] != in[1]
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-20.c b/gcc/testsuite/gcc.dg/vect/bb-slp-20.c
index 910eae5baff..ec12051e00a 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-20.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-20.c
@@ -37,6 +37,9 @@ main1 (unsigned int x, unsigned int y)
out[2] = a2 * x;
out[3] = a3 * y;
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != (in[0] + 23) * x
|| out[1] != (in[1] + 142) * y
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-21.c b/gcc/testsuite/gcc.dg/vect/bb-slp-21.c
index f0b4f6b1ac8..697914ab053 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-21.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-21.c
@@ -37,6 +37,9 @@ main1 (unsigned int x, unsigned int y)
out[2] = a2 * x;
out[3] = a3 * y;
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != (in[0] + 23) * x
|| out[1] != (in[1] + 142) * y
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-22.c b/gcc/testsuite/gcc.dg/vect/bb-slp-22.c
index 3e6e685f118..7463bc653d9 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-22.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-22.c
@@ -36,6 +36,9 @@ main1 (unsigned int x, unsigned int y)
out[3] = a3 * y;
}
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if ((x <= y
&& (out[0] != (in[0] + 23) * x
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-23.c b/gcc/testsuite/gcc.dg/vect/bb-slp-23.c
index 640d81a2560..d125f9d7115 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-23.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-23.c
@@ -30,6 +30,9 @@ main1 (unsigned int x, unsigned int y)
out[2] = a2 * x;
out[3] = a3 * y;
+ if (x)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != (in[0] + 23) * x
|| out[1] != (in[1] + 142) * y
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-3.c b/gcc/testsuite/gcc.dg/vect/bb-slp-3.c
index 07ad7129ad7..c35f035e0f2 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-3.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-3.c
@@ -9,10 +9,10 @@
unsigned int out[N];
unsigned int in[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
+int i;
__attribute__ ((noinline)) int
main1 ()
{
- int i;
unsigned int *pin = &in[0];
unsigned int *pout = &out[0];
@@ -21,6 +21,9 @@ main1 ()
*pout++ = *pin++;
*pout++ = *pin++;
+ if (i)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != in[0]
|| out[1] != in[1]
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-4.c b/gcc/testsuite/gcc.dg/vect/bb-slp-4.c
index 4ed8d7c6b39..faa90f3dfde 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-4.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-4.c
@@ -9,16 +9,19 @@
unsigned short out[N];
unsigned short in[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
+int i;
__attribute__ ((noinline)) int
main1 ()
{
- int i;
unsigned short *pin = &in[0];
unsigned short *pout = &out[0];
*pout++ = *pin++;
*pout++ = *pin++;
+ if (i)
+ __asm__ volatile ("" : : : "memory");
+
/* Check results. */
if (out[0] != in[0]
|| out[1] != in[1])
diff --git a/gcc/testsuite/gcc.dg/vect/pr44507.c b/gcc/testsuite/gcc.dg/vect/pr44507.c
new file mode 100644
index 00000000000..50c485399a4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr44507.c
@@ -0,0 +1,55 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdlib.h>
+#include "tree-vect.h"
+
+int seeIf256ByteArrayIsConstant(
+ unsigned char *pArray)
+{
+ int index;
+ unsigned int curVal, orVal, andVal;
+ int bytesAreEqual = 0;
+
+ if (pArray != 0)
+ {
+ for (index = 0, orVal = 0, andVal = 0xFFFFFFFF;
+ index < 64;
+ index += (int)sizeof(unsigned int))
+ {
+ curVal = *((unsigned int *)(&pArray[index]));
+ orVal = orVal | curVal;
+ andVal = andVal & curVal;
+ }
+
+ if (!((orVal == andVal)
+ && ((orVal >> 8) == (andVal & 0x00FFFFFF))))
+ abort ();
+ }
+
+ return 0;
+}
+
+
+int main(int argc, char** argv)
+{
+ unsigned char array1[64] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ };
+
+ argv = argv;
+ argc = argc;
+
+ check_vect ();
+
+ return seeIf256ByteArrayIsConstant(&array1[0]);
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
+
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-5.c b/gcc/testsuite/gcc.dg/vect/slp-perm-5.c
index e7c9f7feaa8..4e0c145ef1f 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-5.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-5.c
@@ -61,8 +61,7 @@ int main (int argc, const char* argv[])
input2[i] = i%256;
output[i] = 0;
output2[i] = 0;
- if (input[i] > 256)
- abort ();
+ __asm__ volatile ("");
}
foo (input, output, input2, output2);
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-6.c b/gcc/testsuite/gcc.dg/vect/slp-perm-6.c
index 430415c5a33..27e60369c6c 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-6.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-6.c
@@ -60,8 +60,7 @@ int main (int argc, const char* argv[])
input2[i] = i%256;
output[i] = 0;
output2[i] = 0;
- if (input[i] > 256)
- abort ();
+ __asm__ volatile ("");
}
foo (input, output, input2, output2);
diff --git a/gcc/testsuite/gcc.dg/volatile2.c b/gcc/testsuite/gcc.dg/volatile2.c
index 4bfc441c862..d663123c83d 100644
--- a/gcc/testsuite/gcc.dg/volatile2.c
+++ b/gcc/testsuite/gcc.dg/volatile2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-gimple -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
struct GTeth_desc
{
@@ -12,14 +12,11 @@ struct GTeth_softc
void foo(struct GTeth_softc *sc)
{
- /* Verify that we retain the cast to (volatile struct GTeth_desc *)
- after gimplification and that we keep the volatileness on the
+ /* Verify that we retain the volatileness on the
store until after optimization. */
volatile struct GTeth_desc *p = &sc->txq_desc[0];
p->ed_cmdsts = 0;
}
-/* { dg-final { scan-tree-dump "\\(volatile struct GTeth_desc \\*\\) D" "gimple" } } */
/* { dg-final { scan-tree-dump "{v}" "optimized" } } */
-/* { dg-final { cleanup-tree-dump "gimple" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.target/arm/eliminate.c b/gcc/testsuite/gcc.target/arm/eliminate.c
new file mode 100644
index 00000000000..f254dd811d2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/eliminate.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+struct X
+{
+ int c;
+};
+
+extern void bar(struct X *);
+
+void foo ()
+{
+ struct X x;
+ bar (&x);
+ bar (&x);
+ bar (&x);
+}
+
+/* { dg-final { scan-assembler-times "r0,\[\\t \]*sp" 3 } } */
diff --git a/gcc/testsuite/gcc.target/arm/pr40900.c b/gcc/testsuite/gcc.target/arm/pr40900.c
new file mode 100644
index 00000000000..278bc370223
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr40900.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-optimize-sibling-calls" } */
+
+extern short shortv2();
+short shortv1()
+{
+ return shortv2();
+}
+
+/* { dg-final { scan-assembler-not "lsl" } } */
+/* { dg-final { scan-assembler-not "asr" } } */
+/* { dg-final { scan-assembler-not "sxth" } } */
diff --git a/gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-1.c b/gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-1.c
new file mode 100644
index 00000000000..d75f13aa089
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-1.c
@@ -0,0 +1,12 @@
+/* Use ADDS clobbering source operand, rather than CMN */
+/* { dg-options "-mthumb -Os" } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-final { scan-assembler "adds" } } */
+/* { dg-final { scan-assembler-not "cmn" } } */
+
+void foo1(void);
+void bar5(int x)
+{
+ if (x == -15)
+ foo1();
+}
diff --git a/gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-2.c b/gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-2.c
new file mode 100644
index 00000000000..358bc6e143c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/thumb2-cmpneg2add-2.c
@@ -0,0 +1,12 @@
+/* Use ADDS with a scratch, rather than CMN */
+/* { dg-options "-mthumb -Os" } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-final { scan-assembler "adds" } } */
+/* { dg-final { scan-assembler-not "cmn" } } */
+
+void foo1(int);
+void bar5(int x)
+{
+ if (x == -1)
+ foo1(x);
+}
diff --git a/gcc/testsuite/gcc.target/arm/wmul-1.c b/gcc/testsuite/gcc.target/arm/wmul-1.c
index df85e7cb285..ccb3041551a 100644
--- a/gcc/testsuite/gcc.target/arm/wmul-1.c
+++ b/gcc/testsuite/gcc.target/arm/wmul-1.c
@@ -15,4 +15,4 @@ int mac(const short *a, const short *b, int sqr, int *sum)
return sqr;
}
-/* { dg-final { scan-assembler-times "smulbb" 2 } } */
+/* { dg-final { scan-assembler-times "smlabb" 2 } } */
diff --git a/gcc/testsuite/gcc.target/arm/wmul-3.c b/gcc/testsuite/gcc.target/arm/wmul-3.c
new file mode 100644
index 00000000000..325dcebbbda
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/wmul-3.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=armv6t2" } */
+
+int mac(const short *a, const short *b, int sqr, int *sum)
+{
+ int i;
+ int dotp = *sum;
+
+ for (i = 0; i < 150; i++) {
+ dotp -= b[i] * a[i];
+ sqr -= b[i] * b[i];
+ }
+
+ *sum = dotp;
+ return sqr;
+}
+
+/* { dg-final { scan-assembler-times "smulbb" 2 } } */
diff --git a/gcc/testsuite/gcc.target/arm/wmul-4.c b/gcc/testsuite/gcc.target/arm/wmul-4.c
new file mode 100644
index 00000000000..e8642f8aed1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/wmul-4.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=armv6t2" } */
+
+int mac(const int *a, const int *b, long long sqr, long long *sum)
+{
+ int i;
+ long long dotp = *sum;
+
+ for (i = 0; i < 150; i++) {
+ dotp += (long long) b[i] * a[i];
+ sqr += (long long) b[i] * b[i];
+ }
+
+ *sum = dotp;
+ return sqr;
+}
+
+/* { dg-final { scan-assembler-times "smlal" 2 } } */
diff --git a/gcc/testsuite/gcc.target/i386/abi-2.c b/gcc/testsuite/gcc.target/i386/abi-2.c
index 5ed6b4a56dd..39eafc25039 100644
--- a/gcc/testsuite/gcc.target/i386/abi-2.c
+++ b/gcc/testsuite/gcc.target/i386/abi-2.c
@@ -1,6 +1,7 @@
/* Make certain that we pass __m256i in the correct register for AVX. */
/* { dg-do compile } */
/* { dg-options "-O1 -mavx" } */
+/* { dg-options "-mabi=sysv -O1 -mavx" { target x86_64-*-mingw* } } */
typedef long long __m256i __attribute__ ((__vector_size__ (32)));
__m256i foo (void) { return (__m256i){ 1, 2, 3, 4 }; }
diff --git a/gcc/testsuite/gcc.target/i386/aes-avx-check.h b/gcc/testsuite/gcc.target/i386/aes-avx-check.h
index e73e36eab25..e91e88173cf 100644
--- a/gcc/testsuite/gcc.target/i386/aes-avx-check.h
+++ b/gcc/testsuite/gcc.target/i386/aes-avx-check.h
@@ -6,6 +6,13 @@
static void aes_avx_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ aes_avx_test ();
+}
+
int
main ()
{
@@ -17,7 +24,7 @@ main ()
/* Run AES + AVX test only if host has AES + AVX support. */
if ((ecx & (bit_AVX | bit_AES)) == (bit_AVX | bit_AES))
{
- aes_avx_test ();
+ do_test ();
#ifdef DEBUG
printf ("PASSED\n");
#endif
diff --git a/gcc/testsuite/gcc.target/i386/aes-check.h b/gcc/testsuite/gcc.target/i386/aes-check.h
index f56f1adeb3e..7e794423e47 100644
--- a/gcc/testsuite/gcc.target/i386/aes-check.h
+++ b/gcc/testsuite/gcc.target/i386/aes-check.h
@@ -5,6 +5,13 @@
static void aes_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ aes_test ();
+}
+
int
main ()
{
@@ -16,7 +23,7 @@ main ()
/* Run AES test only if host has AES support. */
if (ecx & bit_AES)
{
- aes_test ();
+ do_test ();
#ifdef DEBUG
printf ("PASSED\n");
#endif
diff --git a/gcc/testsuite/gcc.target/i386/amd64-abi-3.c b/gcc/testsuite/gcc.target/i386/amd64-abi-3.c
index 8db7f13b1ea..6b7bf6a6e5f 100644
--- a/gcc/testsuite/gcc.target/i386/amd64-abi-3.c
+++ b/gcc/testsuite/gcc.target/i386/amd64-abi-3.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-require-effective-target lp64 } */
-/* { dg-options "-O2 -fomit-frame-pointer -mno-sse" } */
+/* { dg-options "-O2 -fomit-frame-pointer -mno-sse -mtune=k8" } */
/* { dg-final { scan-assembler "subq\[\\t \]*\\\$88,\[\\t \]*%rsp" } } */
/* { dg-final { scan-assembler-not "subq\[\\t \]*\\\$216,\[\\t \]*%rsp" } } */
diff --git a/gcc/testsuite/gcc.target/i386/avx-check.h b/gcc/testsuite/gcc.target/i386/avx-check.h
index 8db55a10357..7736fc9f40b 100644
--- a/gcc/testsuite/gcc.target/i386/avx-check.h
+++ b/gcc/testsuite/gcc.target/i386/avx-check.h
@@ -4,6 +4,13 @@
static void avx_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ avx_test ();
+}
+
int
main ()
{
@@ -15,7 +22,7 @@ main ()
/* Run AVX test only if host has AVX support. */
if (ecx & bit_AVX)
{
- avx_test ();
+ do_test ();
#ifdef DEBUG
printf ("PASSED\n");
#endif
diff --git a/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-3.c b/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-3.c
new file mode 100644
index 00000000000..b7d4a373101
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-3.c
@@ -0,0 +1,7 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O2 -mavx" } */
+
+#define OFFSET 0
+
+#include "avx-vextractf128-256-1.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-4.c b/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-4.c
new file mode 100644
index 00000000000..973fa58b12a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-4.c
@@ -0,0 +1,7 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O2 -mavx" } */
+
+#define OFFSET 0
+
+#include "avx-vextractf128-256-2.c"
diff --git a/gcc/testsuite/gcc.target/i386/extract-1.c b/gcc/testsuite/gcc.target/i386/extract-1.c
new file mode 100644
index 00000000000..102beb230ac
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/extract-1.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune=generic" } */
+
+int
+foo (unsigned char x, unsigned char y)
+{
+ return (x % y) != 0;
+}
+
+/* { dg-final { scan-assembler-not "test\[b\]?\[^\\n\]*%\[a-d\]l" } } */
diff --git a/gcc/testsuite/gcc.target/i386/extract-2.c b/gcc/testsuite/gcc.target/i386/extract-2.c
new file mode 100644
index 00000000000..3bb5f154c4e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/extract-2.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune=generic" } */
+
+int
+foo (unsigned char x, unsigned char y)
+{
+ return (x % y) > 4;
+}
+
+/* { dg-final { scan-assembler-times "cmp\[b\]?\[^\\n\]*%\[a-d\]h" 1 } } */
+/* { dg-final { scan-assembler-not "cmp\[b\]?\[^\\n\]*%\[a-d\]l" } } */
diff --git a/gcc/testsuite/gcc.target/i386/extract-3.c b/gcc/testsuite/gcc.target/i386/extract-3.c
new file mode 100644
index 00000000000..520bf3bb557
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/extract-3.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune=generic" } */
+
+typedef struct
+{
+ unsigned char c1;
+ unsigned char c2;
+ unsigned char c3;
+ unsigned char c4;
+} foo_t;
+
+int
+#ifndef __x86_64__
+__attribute__((regparm(3)))
+#endif
+foo (foo_t x)
+{
+ return x.c2 != 0;
+}
+
+/* { dg-final { scan-assembler-not "test\[b\]?\[^\\n\]*%\[a-z0-9\]+l" } } */
diff --git a/gcc/testsuite/gcc.target/i386/extract-4.c b/gcc/testsuite/gcc.target/i386/extract-4.c
new file mode 100644
index 00000000000..716ae2299ea
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/extract-4.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune=generic" } */
+
+typedef struct
+{
+ unsigned char c1;
+ unsigned char c2;
+ unsigned char c3;
+ unsigned char c4;
+} foo_t;
+
+int
+#ifndef __x86_64__
+__attribute__((regparm(3)))
+#endif
+foo (foo_t x)
+{
+ return x.c2 > 4;
+}
+
+/* { dg-final { scan-assembler-times "cmp\[b\]?\[^\\n\]*%\[a-z0-9\]+h" 1 } } */
+/* { dg-final { scan-assembler-not "cmp\[b\]?\[^\\n\]*%\[a-z0-9\]+l" } } */
diff --git a/gcc/testsuite/gcc.target/i386/extract-5.c b/gcc/testsuite/gcc.target/i386/extract-5.c
new file mode 100644
index 00000000000..a488dafa20f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/extract-5.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune=generic" } */
+
+typedef struct
+{
+ unsigned int c1:8;
+ unsigned int c2:8;
+ unsigned int c3:8;
+ unsigned int c4:8;
+} foo_t;
+
+int
+#ifndef __x86_64__
+__attribute__((regparm(3)))
+#endif
+foo (foo_t x)
+{
+ return x.c2 != 0;
+}
+
+/* { dg-final { scan-assembler-not "test\[b\]?\[^\\n\]*%\[a-z0-9\]+l" } } */
diff --git a/gcc/testsuite/gcc.target/i386/extract-6.c b/gcc/testsuite/gcc.target/i386/extract-6.c
new file mode 100644
index 00000000000..1440ec3be35
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/extract-6.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune=generic" } */
+
+typedef struct
+{
+ unsigned int c1:8;
+ unsigned int c2:8;
+ unsigned int c3:8;
+ unsigned int c4:8;
+
+} foo_t;
+
+int
+#ifndef __x86_64__
+__attribute__((regparm(3)))
+#endif
+foo (foo_t x)
+{
+ return x.c2 > 4;
+}
+
+/* { dg-final { scan-assembler-times "cmp\[b\]?\[^\\n\]*%\[a-z0-9\]+h" 1 } } */
+/* { dg-final { scan-assembler-not "cmp\[b\]?\[^\\n\]*%\[a-z0-9\]+l" } } */
diff --git a/gcc/testsuite/gcc.target/i386/fma4-check.h b/gcc/testsuite/gcc.target/i386/fma4-check.h
index 76fcdef99b6..dc7ee574878 100644
--- a/gcc/testsuite/gcc.target/i386/fma4-check.h
+++ b/gcc/testsuite/gcc.target/i386/fma4-check.h
@@ -4,6 +4,13 @@
static void fma4_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ fma4_test ();
+}
+
int
main ()
{
@@ -14,7 +21,7 @@ main ()
/* Run FMA4 test only if host has FMA4 support. */
if (ecx & bit_FMA4)
- fma4_test ();
+ do_test ();
exit (0);
}
diff --git a/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h b/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h
index 458e7cda898..4f2f7f3ac40 100644
--- a/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h
+++ b/gcc/testsuite/gcc.target/i386/mmx-3dnow-check.h
@@ -5,6 +5,13 @@
static void mmx_3dnow_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ mmx_3dnow_test ();
+}
+
int
main ()
{
@@ -15,7 +22,7 @@ main ()
/* Run 3DNow! test only if host has 3DNow! support. */
if (edx & bit_3DNOW)
- mmx_3dnow_test ();
+ do_test ();
return 0;
}
diff --git a/gcc/testsuite/gcc.target/i386/mmx-check.h b/gcc/testsuite/gcc.target/i386/mmx-check.h
index aefdc4e8799..faf9b876f38 100644
--- a/gcc/testsuite/gcc.target/i386/mmx-check.h
+++ b/gcc/testsuite/gcc.target/i386/mmx-check.h
@@ -5,6 +5,13 @@
static void mmx_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ mmx_test ();
+}
+
int
main ()
{
@@ -15,7 +22,7 @@ main ()
/* Run MMX test only if host has MMX support. */
if (edx & bit_MMX)
- mmx_test ();
+ do_test ();
return 0;
}
diff --git a/gcc/testsuite/gcc.target/i386/mod-1.c b/gcc/testsuite/gcc.target/i386/mod-1.c
new file mode 100644
index 00000000000..a7b1a92258d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mod-1.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -mtune=generic" } */
+
+typedef struct {
+ int a;
+} VCR;
+
+typedef struct {
+ VCR vcr[8];
+} VCRC;
+
+typedef struct {
+ char vcr;
+} OWN;
+
+OWN Own[16];
+
+void
+f (VCRC *x, OWN *own)
+{
+ x[own->vcr / 8].vcr[own->vcr % 8].a--;
+ x[own->vcr / 8].vcr[own->vcr % 8].a = x[own->vcr / 8].vcr[own->vcr % 8].a;
+}
+
+/* { dg-final { scan-assembler-times "idivb" 1 } } */
+/* { dg-final { scan-assembler-not "incl" } } */
+/* { dg-final { scan-assembler-not "orl" } } */
+/* { dg-final { scan-assembler-not "andb" } } */
+/* { dg-final { scan-assembler-not "jns" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h b/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
index de633336157..550e49904d9 100644
--- a/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
+++ b/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
@@ -6,6 +6,13 @@
static void pclmul_avx_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ pclmul_avx_test ();
+}
+
int
main ()
{
@@ -17,7 +24,7 @@ main ()
/* Run PCLMUL + AVX test only if host has PCLMUL + AVX support. */
if ((ecx & (bit_AVX | bit_PCLMUL)) == (bit_AVX | bit_PCLMUL))
{
- pclmul_avx_test ();
+ do_test ();
#ifdef DEBUG
printf ("PASSED\n");
#endif
diff --git a/gcc/testsuite/gcc.target/i386/pclmul-check.h b/gcc/testsuite/gcc.target/i386/pclmul-check.h
index 706fd640034..7526cbe2ddf 100644
--- a/gcc/testsuite/gcc.target/i386/pclmul-check.h
+++ b/gcc/testsuite/gcc.target/i386/pclmul-check.h
@@ -5,6 +5,13 @@
static void pclmul_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ pclmul_test ();
+}
+
int
main ()
{
@@ -16,7 +23,7 @@ main ()
/* Run PCLMULQDQ test only if host has PCLMULQDQ support. */
if (ecx & bit_PCLMUL)
{
- pclmul_test ();
+ do_test ();
#ifdef DEBUG
printf ("PASSED\n");
#endif
diff --git a/gcc/testsuite/gcc.target/i386/pr27971.c b/gcc/testsuite/gcc.target/i386/pr27971.c
index 8c706adda59..27888de6d2f 100644
--- a/gcc/testsuite/gcc.target/i386/pr27971.c
+++ b/gcc/testsuite/gcc.target/i386/pr27971.c
@@ -3,7 +3,13 @@
unsigned array[4];
-unsigned foo(unsigned long x)
+#ifdef _WIN64
+__extension__ typedef unsigned long long TYPE;
+#else
+#define TYPE unsigned long
+#endif
+
+unsigned foo(TYPE x)
{
return array[(x>>2)&3ul];
}
diff --git a/gcc/testsuite/gcc.target/i386/pr39139.c b/gcc/testsuite/gcc.target/i386/pr39139.c
index 95ea7fda9ba..e4cb845f9ec 100644
--- a/gcc/testsuite/gcc.target/i386/pr39139.c
+++ b/gcc/testsuite/gcc.target/i386/pr39139.c
@@ -12,22 +12,24 @@
# define SI_REG asm ("esi")
#endif
+__extension__ typedef __SIZE_TYPE__ size_t;
+
static inline int
foo (unsigned int x, void *y)
{
- register unsigned long r AX_REG;
- register unsigned long a1 DI_REG;
- register unsigned long a2 SI_REG;
- a1 = (unsigned long) x;
- a2 = (unsigned long) y;
+ register size_t r AX_REG;
+ register size_t a1 DI_REG;
+ register size_t a2 SI_REG;
+ a1 = (size_t) x;
+ a2 = (size_t) y;
asm volatile ("" : "=r" (r), "+r" (a1), "+r" (a2) : : "memory");
return (int) r;
}
-struct T { unsigned long t1, t2; unsigned int t3, t4, t5; };
+struct T { size_t t1, t2; unsigned int t3, t4, t5; };
int
-bar (unsigned long x, unsigned int y, unsigned long u, unsigned int v)
+bar (size_t x, unsigned int y, size_t u, unsigned int v)
{
long r;
struct T e = { .t1 = x, .t2 = u };
diff --git a/gcc/testsuite/gcc.target/i386/pr39315-check.c b/gcc/testsuite/gcc.target/i386/pr39315-check.c
index ff926057536..8f7376015d0 100644
--- a/gcc/testsuite/gcc.target/i386/pr39315-check.c
+++ b/gcc/testsuite/gcc.target/i386/pr39315-check.c
@@ -1,4 +1,6 @@
+/* { dg-compile } */
typedef float __m128 __attribute__ ((__vector_size__ (16)));
+__extension__ typedef __PTRDIFF_TYPE__ ptrdiff_t;
extern void foo (__m128 *);
extern void abort (void);
@@ -8,7 +10,7 @@ __m128 y = { 0.0, 1.0, 2.0, 3.0 };
void
bar (__m128 *x, int align)
{
- if ((((__PTRDIFF_TYPE__) x) & (align - 1)) != 0)
+ if ((((ptrdiff_t) x) & (align - 1)) != 0)
abort ();
if (__builtin_memcmp (x, &y, sizeof (y)) != 0)
abort ();
diff --git a/gcc/testsuite/gcc.target/i386/pr44481.c b/gcc/testsuite/gcc.target/i386/pr44481.c
new file mode 100644
index 00000000000..701268b5656
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr44481.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+static inline unsigned
+parity (unsigned x)
+{
+ return (unsigned) __builtin_parity (x);
+}
+
+unsigned
+f (unsigned rpoly)
+{
+ return parity (rpoly & 1) ^ parity (rpoly & 6);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr44546.c b/gcc/testsuite/gcc.target/i386/pr44546.c
new file mode 100644
index 00000000000..517446fdc8f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr44546.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -ffast-math -mfpmath=387" } */
+
+typedef __SIZE_TYPE__ size_t;
+typedef struct
+{
+ float *ewgts;
+} vtx_data;
+
+extern void *zmalloc (size_t);
+extern int whatever (vtx_data *);
+
+float *
+compute_apsp_artifical_weights_packed (vtx_data * graph, int n)
+{
+ float *weights;
+
+ weights = (float *) zmalloc (n * sizeof (float));
+ weights[n] =
+ whatever (graph) > graph[n].ewgts[n] ?
+ whatever (graph) : graph[n].ewgts[n];
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse-check.h b/gcc/testsuite/gcc.target/i386/sse-check.h
index 79ea4815517..85629cc71b9 100644
--- a/gcc/testsuite/gcc.target/i386/sse-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse-check.h
@@ -6,6 +6,13 @@
static void sse_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ sse_test ();
+}
+
int
main ()
{
@@ -16,7 +23,7 @@ main ()
/* Run SSE test only if host has SSE support. */
if (edx & bit_SSE)
- sse_test ();
+ do_test ();
return 0;
}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-check.h b/gcc/testsuite/gcc.target/i386/sse2-check.h
index a69333e391a..e9f17f04079 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse2-check.h
@@ -4,6 +4,13 @@
static void sse2_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ sse2_test ();
+}
+
int
main ()
{
@@ -14,7 +21,7 @@ main ()
/* Run SSE2 test only if host has SSE2 support. */
if (edx & bit_SSE2)
- sse2_test ();
+ do_test ();
return 0;
}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-vec-2a.c b/gcc/testsuite/gcc.target/i386/sse2-vec-2a.c
new file mode 100644
index 00000000000..f230f27d45a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse2-vec-2a.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -msse2 -mtune=atom" } */
+/* { dg-require-effective-target sse2 } */
+
+#include "sse2-vec-2.c"
diff --git a/gcc/testsuite/gcc.target/i386/sse3-check.h b/gcc/testsuite/gcc.target/i386/sse3-check.h
index 92930d10a3f..df0e63a4575 100644
--- a/gcc/testsuite/gcc.target/i386/sse3-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse3-check.h
@@ -5,6 +5,13 @@
static void sse3_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ sse3_test ();
+}
+
int
main ()
{
@@ -15,7 +22,7 @@ main ()
/* Run SSE3 test only if host has SSE3 support. */
if (ecx & bit_SSE3)
- sse3_test ();
+ do_test ();
return 0;
}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-check.h b/gcc/testsuite/gcc.target/i386/sse4_1-check.h
index 2d1c4e835a3..788f65d61cb 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_1-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-check.h
@@ -7,6 +7,13 @@ static void sse4_1_test (void);
#define MASK 0x2
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ sse4_1_test ();
+}
+
int
main ()
{
@@ -17,7 +24,7 @@ main ()
/* Run SSE4.1 test only if host has SSE4.1 support. */
if (ecx & bit_SSE4_1)
- sse4_1_test ();
+ do_test ();
return 0;
}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_2-check.h b/gcc/testsuite/gcc.target/i386/sse4_2-check.h
index 2a397e88683..d10e6c7d7e2 100644
--- a/gcc/testsuite/gcc.target/i386/sse4_2-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse4_2-check.h
@@ -5,6 +5,13 @@
static void sse4_2_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ sse4_2_test ();
+}
+
int
main ()
{
@@ -15,7 +22,7 @@ main ()
/* Run SSE4.2 test only if host has SSE4.2 support. */
if (ecx & bit_SSE4_2)
- sse4_2_test ();
+ do_test ();
return 0;
}
diff --git a/gcc/testsuite/gcc.target/i386/sse4a-check.h b/gcc/testsuite/gcc.target/i386/sse4a-check.h
index d6140e8969c..d43b4b222b1 100644
--- a/gcc/testsuite/gcc.target/i386/sse4a-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse4a-check.h
@@ -5,6 +5,13 @@
static void sse4a_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ sse4a_test ();
+}
+
int
main ()
{
@@ -15,7 +22,7 @@ main ()
/* Run SSE4a test only if host has SSE4a support. */
if (ecx & bit_SSE4a)
- sse4a_test ();
+ do_test ();
return 0;
}
diff --git a/gcc/testsuite/gcc.target/i386/ssse3-check.h b/gcc/testsuite/gcc.target/i386/ssse3-check.h
index 78df15db7d7..3ca79333c7f 100644
--- a/gcc/testsuite/gcc.target/i386/ssse3-check.h
+++ b/gcc/testsuite/gcc.target/i386/ssse3-check.h
@@ -5,6 +5,13 @@
static void ssse3_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ ssse3_test ();
+}
+
int
main ()
{
@@ -15,7 +22,7 @@ main ()
/* Run SSSE3 test only if host has SSSE3 support. */
if (ecx & bit_SSSE3)
- ssse3_test ();
+ do_test ();
return 0;
}
diff --git a/gcc/testsuite/gcc.target/i386/umod-1.c b/gcc/testsuite/gcc.target/i386/umod-1.c
new file mode 100644
index 00000000000..54edf139d5a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/umod-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune=atom" } */
+
+unsigned char
+foo (unsigned char x, unsigned char y)
+{
+ return x % y;
+}
+
+/* { dg-final { scan-assembler-times "divb" 1 } } */
+/* { dg-final { scan-assembler-not "divw" } } */
diff --git a/gcc/testsuite/gcc.target/i386/umod-2.c b/gcc/testsuite/gcc.target/i386/umod-2.c
new file mode 100644
index 00000000000..6fe73846833
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/umod-2.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune=atom" } */
+
+extern unsigned char z;
+
+unsigned char
+foo (unsigned char x, unsigned char y)
+{
+ z = x/y;
+ return x % y;
+}
+
+/* { dg-final { scan-assembler-times "divb" 1 } } */
+/* { dg-final { scan-assembler-not "divw" } } */
diff --git a/gcc/testsuite/gcc.target/i386/umod-3.c b/gcc/testsuite/gcc.target/i386/umod-3.c
new file mode 100644
index 00000000000..7123bc9f256
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/umod-3.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune=atom" } */
+
+extern void abort (void);
+extern void exit (int);
+
+unsigned char cx = 7;
+
+int
+main ()
+{
+ unsigned char cy;
+
+ cy = cx / 6; if (cy != 1) abort ();
+ cy = cx % 6; if (cy != 1) abort ();
+
+ exit(0);
+}
+
+/* { dg-final { scan-assembler-times "divb" 1 } } */
+/* { dg-final { scan-assembler-not "divw" } } */
diff --git a/gcc/testsuite/gcc.target/i386/vararg-1.c b/gcc/testsuite/gcc.target/i386/vararg-1.c
index cfb1e30ab07..9ed9ab087d0 100644
--- a/gcc/testsuite/gcc.target/i386/vararg-1.c
+++ b/gcc/testsuite/gcc.target/i386/vararg-1.c
@@ -1,6 +1,7 @@
/* PR middle-end/36858 */
/* { dg-do run } */
/* { dg-options "-w" { target { lp64 } } } */
+/* { dg-options "-w" { target { llp64 } } } */
/* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" { target { ilp32 } } } */
/* { dg-require-effective-target sse2 } */
diff --git a/gcc/testsuite/gcc.target/i386/vararg-2.c b/gcc/testsuite/gcc.target/i386/vararg-2.c
index 60793173d6c..804801256f1 100644
--- a/gcc/testsuite/gcc.target/i386/vararg-2.c
+++ b/gcc/testsuite/gcc.target/i386/vararg-2.c
@@ -1,6 +1,7 @@
/* PR middle-end/36859 */
/* { dg-do run } */
/* { dg-options "-w" { target { lp64 } } } */
+/* { dg-options "-w" { target { llp64 } } } */
/* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" { target { ilp32 } } } */
/* { dg-require-effective-target sse2 } */
diff --git a/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c b/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c
new file mode 100644
index 00000000000..01a35f9f920
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fstrict-volatile-bitfields" } */
+
+typedef struct {
+ char a:1;
+ char b:7;
+ int c;
+} BitStruct;
+
+volatile BitStruct bits;
+
+int foo ()
+{
+ return bits.b;
+}
+
+/* { dg-final { scan-assembler "movzbl.*bits" } } */
diff --git a/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c b/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c
new file mode 100644
index 00000000000..302625a199b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-strict-volatile-bitfields" } */
+
+typedef struct {
+ char a:1;
+ char b:7;
+ int c;
+} BitStruct;
+
+volatile BitStruct bits;
+
+int foo ()
+{
+ return bits.b;
+}
+
+/* { dg-final { scan-assembler "movl.*bits" } } */
diff --git a/gcc/testsuite/gcc.target/i386/xop-check.h b/gcc/testsuite/gcc.target/i386/xop-check.h
index fb98c6d4bd4..7e8e665c79f 100644
--- a/gcc/testsuite/gcc.target/i386/xop-check.h
+++ b/gcc/testsuite/gcc.target/i386/xop-check.h
@@ -5,6 +5,13 @@
static void xop_test (void);
+static void
+__attribute__ ((noinline))
+do_test (void)
+{
+ xop_test ();
+}
+
int
main ()
{
@@ -15,7 +22,7 @@ main ()
/* Run XOP test only if host has XOP support. */
if (ecx & bit_XOP)
- xop_test ();
+ do_test ();
exit (0);
}
diff --git a/gcc/testsuite/gcc.target/mips/madd-9.c b/gcc/testsuite/gcc.target/mips/madd-9.c
new file mode 100644
index 00000000000..25dbd18a510
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/madd-9.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 isa_rev>=1 -mgp32" } */
+/* { dg-final { scan-assembler-not "\tmul\t" } } */
+/* { dg-final { scan-assembler "\tmadd\t" } } */
+
+NOMIPS16 long long
+f1 (int *a, int *b, int n)
+{
+ long long int x;
+ int i;
+
+ x = 0;
+ for (i = 0; i < n; i++)
+ x += (long long) a[i] * b[i];
+ return x;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/recip-1.c b/gcc/testsuite/gcc.target/powerpc/recip-1.c
new file mode 100644
index 00000000000..d1e383dc4ea
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/recip-1.c
@@ -0,0 +1,18 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-options "-O2 -mrecip -ffast-math -mcpu=power6" } */
+/* { dg-final { scan-assembler-times "frsqrte" 2 } } */
+/* { dg-final { scan-assembler-times "fmsub" 2 } } */
+/* { dg-final { scan-assembler-times "fmul" 8 } } */
+/* { dg-final { scan-assembler-times "fnmsub" 4 } } */
+
+double
+rsqrt_d (double a)
+{
+ return 1.0 / __builtin_sqrt (a);
+}
+
+float
+rsqrt_f (float a)
+{
+ return 1.0f / __builtin_sqrtf (a);
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/recip-2.c b/gcc/testsuite/gcc.target/powerpc/recip-2.c
new file mode 100644
index 00000000000..69442733aab
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/recip-2.c
@@ -0,0 +1,21 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-options "-O2 -mrecip -ffast-math -mcpu=power5" } */
+/* { dg-final { scan-assembler-times "frsqrtes" 1 } } */
+/* { dg-final { scan-assembler-times "fmsubs" 1 } } */
+/* { dg-final { scan-assembler-times "fmuls" 6 } } */
+/* { dg-final { scan-assembler-times "fnmsubs" 3 } } */
+/* { dg-final { scan-assembler-times "fsqrt" 1 } } */
+
+/* power5 resqrte is not accurate enough, and should not be generated by
+ default for -mrecip. */
+double
+rsqrt_d (double a)
+{
+ return 1.0 / __builtin_sqrt (a);
+}
+
+float
+rsqrt_f (float a)
+{
+ return 1.0f / __builtin_sqrtf (a);
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/recip-3.c b/gcc/testsuite/gcc.target/powerpc/recip-3.c
new file mode 100644
index 00000000000..80a34e8ee59
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/recip-3.c
@@ -0,0 +1,22 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-options "-O2 -mrecip -ffast-math -mcpu=power7" } */
+/* { dg-final { scan-assembler-times "xsrsqrtedp" 1 } } */
+/* { dg-final { scan-assembler-times "xsmsub.dp" 1 } } */
+/* { dg-final { scan-assembler-times "xsmuldp" 4 } } */
+/* { dg-final { scan-assembler-times "xsnmsub.dp" 2 } } */
+/* { dg-final { scan-assembler-times "frsqrtes" 1 } } */
+/* { dg-final { scan-assembler-times "fmsubs" 1 } } */
+/* { dg-final { scan-assembler-times "fmuls" 4 } } */
+/* { dg-final { scan-assembler-times "fnmsubs" 2 } } */
+
+double
+rsqrt_d (double a)
+{
+ return 1.0 / __builtin_sqrt (a);
+}
+
+float
+rsqrt_f (float a)
+{
+ return 1.0f / __builtin_sqrtf (a);
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/recip-4.c b/gcc/testsuite/gcc.target/powerpc/recip-4.c
new file mode 100644
index 00000000000..bd496d70e25
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/recip-4.c
@@ -0,0 +1,36 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-options "-O3 -ftree-vectorize -mrecip -ffast-math -mcpu=power7 -fno-unroll-loops" } */
+/* { dg-final { scan-assembler-times "xvrsqrtedp" 1 } } */
+/* { dg-final { scan-assembler-times "xvmsub.dp" 1 } } */
+/* { dg-final { scan-assembler-times "xvmuldp" 4 } } */
+/* { dg-final { scan-assembler-times "xvnmsub.dp" 2 } } */
+/* { dg-final { scan-assembler-times "xvrsqrtesp" 1 } } */
+/* { dg-final { scan-assembler-times "xvmsub.sp" 1 } } */
+/* { dg-final { scan-assembler-times "xvmulsp" 4 } } */
+/* { dg-final { scan-assembler-times "xvnmsub.sp" 2 } } */
+
+#define SIZE 1024
+
+extern double a_d[SIZE] __attribute__((__aligned__(32)));
+extern double b_d[SIZE] __attribute__((__aligned__(32)));
+
+void
+vectorize_rsqrt_d (void)
+{
+ int i;
+
+ for (i = 0; i < SIZE; i++)
+ a_d[i] = 1.0 / __builtin_sqrt (b_d[i]);
+}
+
+extern float a_f[SIZE] __attribute__((__aligned__(32)));
+extern float b_f[SIZE] __attribute__((__aligned__(32)));
+
+void
+vectorize_rsqrt_f (void)
+{
+ int i;
+
+ for (i = 0; i < SIZE; i++)
+ a_f[i] = 1.0f / __builtin_sqrtf (b_f[i]);
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/recip-5.c b/gcc/testsuite/gcc.target/powerpc/recip-5.c
new file mode 100644
index 00000000000..4a9c496201a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/recip-5.c
@@ -0,0 +1,94 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-options "-O3 -ftree-vectorize -mrecip=all -ffast-math -mcpu=power7 -fno-unroll-loops" } */
+/* { dg-final { scan-assembler-times "xvredp" 4 } } */
+/* { dg-final { scan-assembler-times "xvresp" 5 } } */
+/* { dg-final { scan-assembler-times "xsredp" 2 } } */
+/* { dg-final { scan-assembler-times "fres" 2 } } */
+
+#include <altivec.h>
+
+float f_recip (float a, float b) { return __builtin_recipdivf (a, b); }
+double d_recip (double a, double b) { return __builtin_recipdiv (a, b); }
+
+float f_div (float a, float b) { return a / b; }
+double d_div (double a, double b) { return a / b; }
+
+#define SIZE 1024
+
+double d_a[SIZE] __attribute__((__aligned__(32)));
+double d_b[SIZE] __attribute__((__aligned__(32)));
+double d_c[SIZE] __attribute__((__aligned__(32)));
+
+float f_a[SIZE] __attribute__((__aligned__(32)));
+float f_b[SIZE] __attribute__((__aligned__(32)));
+float f_c[SIZE] __attribute__((__aligned__(32)));
+
+void vec_f_recip (void)
+{
+ int i;
+
+ for (i = 0; i < SIZE; i++)
+ f_a[i] = __builtin_recipdivf (f_b[i], f_c[i]);
+}
+
+void vec_d_recip (void)
+{
+ int i;
+
+ for (i = 0; i < SIZE; i++)
+ d_a[i] = __builtin_recipdiv (d_b[i], d_c[i]);
+}
+
+void vec_f_div (void)
+{
+ int i;
+
+ for (i = 0; i < SIZE; i++)
+ f_a[i] = f_b[i] / f_c[i];
+}
+
+void vec_f_div2 (void)
+{
+ int i;
+
+ for (i = 0; i < SIZE; i++)
+ f_a[i] = f_b[i] / 2.0f;
+}
+
+void vec_f_div53 (void)
+{
+ int i;
+
+ for (i = 0; i < SIZE; i++)
+ f_a[i] = f_b[i] / 53.0f;
+}
+
+void vec_d_div (void)
+{
+ int i;
+
+ for (i = 0; i < SIZE; i++)
+ d_a[i] = d_b[i] / d_c[i];
+}
+
+void vec_d_div2 (void)
+{
+ int i;
+
+ for (i = 0; i < SIZE; i++)
+ d_a[i] = d_b[i] / 2.0;
+}
+
+void vec_d_div53 (void)
+{
+ int i;
+
+ for (i = 0; i < SIZE; i++)
+ d_a[i] = d_b[i] / 53.0;
+}
+
+vector float v4sf_recip1 (vector float a, vector float b) { return vec_recipdiv (a, b); }
+vector float v4sf_recip2 (vector float a, vector float b) { return __builtin_altivec_vrecipdivfp (a, b); }
+vector double v2df_recip1 (vector double a, vector double b) { return vec_recipdiv (a, b); }
+vector float v4sf_recip3 (vector float a, vector float b) { return __builtin_vsx_xvrecipdivsp (a, b); }
+vector double v2df_recip2 (vector double a, vector double b) { return __builtin_vsx_xvrecipdivdp (a, b); }
diff --git a/gcc/testsuite/gcc.target/powerpc/recip-6.c b/gcc/testsuite/gcc.target/powerpc/recip-6.c
new file mode 100644
index 00000000000..7d71df6709d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/recip-6.c
@@ -0,0 +1,16 @@
+/* { dg-do run { target { powerpc*-*-linux* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target vsx_hw } */
+/* { dg-options "-mcpu=power7 -O3 -ftree-vectorize -ffast-math -mrecip=all -mrecip-precision" } */
+
+/* Check reciprocal estimate functions for accuracy. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <math.h>
+#include <float.h>
+#include <string.h>
+
+#include "recip-test.h"
diff --git a/gcc/testsuite/gcc.target/powerpc/recip-7.c b/gcc/testsuite/gcc.target/powerpc/recip-7.c
new file mode 100644
index 00000000000..7b32ba076a3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/recip-7.c
@@ -0,0 +1,16 @@
+/* { dg-do run { target { powerpc*-*-linux* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target ppc_recip_hw } */
+/* { dg-options "-O3 -ftree-vectorize -ffast-math -mrecip -mpowerpc-gfxopt -mpowerpc-gpopt -mpopcntb" } */
+
+/* Check reciprocal estimate functions for accuracy. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <math.h>
+#include <float.h>
+#include <string.h>
+
+#include "recip-test.h"
diff --git a/gcc/testsuite/gcc.target/powerpc/recip-test.h b/gcc/testsuite/gcc.target/powerpc/recip-test.h
new file mode 100644
index 00000000000..7a42df5757d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/recip-test.h
@@ -0,0 +1,149 @@
+/* Check reciprocal estimate functions for accuracy. */
+
+#ifdef _ARCH_PPC64
+typedef unsigned long uns64_t;
+#define UNUM64(x) x ## L
+
+#else
+typedef unsigned long long uns64_t;
+#define UNUM64(x) x ## LL
+#endif
+
+typedef unsigned int uns32_t;
+
+#define TNAME2(x) #x
+#define TNAME(x) TNAME2(x)
+
+/*
+ * Float functions.
+ */
+
+#define TYPE float
+#define NAME(PREFIX) PREFIX ## _float
+#define UNS_TYPE uns32_t
+#define UNS_ABS __builtin_abs
+#define EXP_SIZE 8
+#define MAN_SIZE 23
+#define FABS __builtin_fabsf
+#define FMAX __builtin_fmaxf
+#define FMIN __builtin_fminf
+#define SQRT __builtin_sqrtf
+#define RMIN 1.0e-10
+#define RMAX 1.0e+10
+#define BDIV 1
+#define BRSQRT 2
+#define ASMDIV "fdivs"
+#define ASMSQRT "fsqrts"
+
+#define INIT_DIV \
+{ \
+ { 0x4fffffff }, /* 8589934080 */ \
+ { 0x4effffff }, /* 2147483520 */ \
+ { 0x40ffffff }, /* 7.99999952316284 */ \
+ { 0x3fffffff }, /* 1.99999988079071 */ \
+ { 0x417fffff }, /* 15.9999990463257 */ \
+ { 0x42ffffff }, /* 127.999992370605 */ \
+ { 0x3dffffff }, /* 0.124999992549419 */ \
+ { 0x3effffff }, /* 0.499999970197678 */ \
+}
+
+#define INIT_RSQRT \
+{ \
+ { 0x457ffffe }, /* 4096 - small amount */ \
+ { 0x4c7fffff }, /* 6.71089e+07 */ \
+ { 0x3d7fffff }, /* 0.0625 - small amount */ \
+ { 0x307ffffe }, /* 9.31322e-10 */ \
+ { 0x4c7ffffe }, /* 6.71089e+07 */ \
+ { 0x397ffffe }, /* 0.000244141 */ \
+ { 0x2e7fffff }, /* 5.82077e-11 */ \
+ { 0x2f7fffff }, /* 2.32831e-10 */ \
+}
+
+
+#include "recip-test2.h"
+
+/*
+ * Double functions.
+ */
+
+#undef TYPE
+#undef NAME
+#undef UNS_TYPE
+#undef UNS_ABS
+#undef EXP_SIZE
+#undef MAN_SIZE
+#undef FABS
+#undef FMAX
+#undef FMIN
+#undef SQRT
+#undef RMIN
+#undef RMAX
+#undef BDIV
+#undef BRSQRT
+#undef ASMDIV
+#undef ASMSQRT
+#undef INIT_DIV
+#undef INIT_RSQRT
+
+#define TYPE double
+#define NAME(PREFIX) PREFIX ## _double
+#define UNS_TYPE uns64_t
+#define UNS_ABS __builtin_imaxabs
+#define EXP_SIZE 11
+#define MAN_SIZE 52
+#define FABS __builtin_fabs
+#define FMAX __builtin_fmax
+#define FMIN __builtin_fmin
+#define SQRT __builtin_sqrt
+#define RMIN 1.0e-100
+#define RMAX 1.0e+100
+#define BDIV 1
+#define BRSQRT 2
+#define ASMDIV "fdiv"
+#define ASMSQRT "fsqrt"
+
+#define INIT_DIV \
+{ \
+ { UNUM64 (0x2b57be53f2a2f3a0) }, /* 6.78462e-100 */ \
+ { UNUM64 (0x2b35f8e8ea553e52) }, /* 1.56963e-100 */ \
+ { UNUM64 (0x2b5b9d861d2fe4fb) }, /* 7.89099e-100 */ \
+ { UNUM64 (0x2b45dc44a084e682) }, /* 3.12327e-100 */ \
+ { UNUM64 (0x2b424ce16945d777) }, /* 2.61463e-100 */ \
+ { UNUM64 (0x2b20b5023d496b50) }, /* 5.96749e-101 */ \
+ { UNUM64 (0x2b61170547f57caa) }, /* 9.76678e-100 */ \
+ { UNUM64 (0x2b543b9d498aac37) }, /* 5.78148e-100 */ \
+}
+
+#define INIT_RSQRT \
+{ \
+ { UNUM64 (0x2b616f2d8cbbc646) }, /* 9.96359e-100 */ \
+ { UNUM64 (0x2b5c4db2da0a011d) }, /* 8.08764e-100 */ \
+ { UNUM64 (0x2b55a82d5735b262) }, /* 6.1884e-100 */ \
+ { UNUM64 (0x2b50b52908258cb8) }, /* 4.77416e-100 */ \
+ { UNUM64 (0x2b363989a4fb29af) }, /* 1.58766e-100 */ \
+ { UNUM64 (0x2b508b9f6f4180a9) }, /* 4.7278e-100 */ \
+ { UNUM64 (0x2b4f7a1d48accb40) }, /* 4.49723e-100 */ \
+ { UNUM64 (0x2b1146a37372a81f) }, /* 3.08534e-101 */ \
+ { UNUM64 (0x2b33f876a8c48050) }, /* 1.42663e-100 */ \
+}
+
+#include "recip-test2.h"
+
+int
+main (int argc __attribute__((__unused__)),
+ char *argv[] __attribute__((__unused__)))
+{
+ srand48 (1);
+ run_float ();
+
+#ifdef VERBOSE
+ printf ("\n");
+#endif
+
+ run_double ();
+
+ if (error_count_float != 0 || error_count_double != 0)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/recip-test2.h b/gcc/testsuite/gcc.target/powerpc/recip-test2.h
new file mode 100644
index 00000000000..3ec356cdfd8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/recip-test2.h
@@ -0,0 +1,432 @@
+/*
+ * Included file to common source float/double checking
+ * The following macros should be defined:
+ * TYPE -- floating point type
+ * NAME -- convert a name to include the type
+ * UNS_TYPE -- type to hold TYPE as an unsigned number
+ * EXP_SIZE -- size in bits of the exponent
+ * MAN_SIZE -- size in bits of the mantissa
+ * UNS_ABS -- absolute value for UNS_TYPE
+ * FABS -- absolute value function for TYPE
+ * FMAX -- maximum function for TYPE
+ * FMIN -- minimum function for TYPE
+ * SQRT -- square root function for TYPE
+ * RMIN -- minimum random number to generate
+ * RMAX -- maximum random number to generate
+ * ASMDIV -- assembler instruction to do divide
+ * ASMSQRT -- assembler instruction to do square root
+ * BDIV -- # of bits of inaccuracy to allow for division
+ * BRSQRT -- # of bits of inaccuracy to allow for 1/sqrt
+ * INIT_DIV -- Initial values to test 1/x against
+ * INIT_RSQRT -- Initial values to test 1/sqrt(x) against
+ */
+
+typedef union
+{
+ UNS_TYPE i;
+ TYPE x;
+} NAME (union);
+
+/*
+ * Input/output arrays.
+ */
+
+static NAME (union) NAME (div_input) [] __attribute__((__aligned__(32))) = INIT_DIV;
+static NAME (union) NAME (rsqrt_input)[] __attribute__((__aligned__(32))) = INIT_RSQRT;
+
+#define DIV_SIZE (sizeof (NAME (div_input)) / sizeof (TYPE))
+#define RSQRT_SIZE (sizeof (NAME (rsqrt_input)) / sizeof (TYPE))
+
+static TYPE NAME (div_expected)[DIV_SIZE] __attribute__((__aligned__(32)));
+static TYPE NAME (div_output) [DIV_SIZE] __attribute__((__aligned__(32)));
+
+static TYPE NAME (rsqrt_expected)[RSQRT_SIZE] __attribute__((__aligned__(32)));
+static TYPE NAME (rsqrt_output) [RSQRT_SIZE] __attribute__((__aligned__(32)));
+
+
+/*
+ * Crack a floating point number into sign bit, exponent, and mantissa.
+ */
+
+static void
+NAME (crack) (TYPE number, unsigned int *p_sign, unsigned *p_exponent, UNS_TYPE *p_mantissa)
+{
+ NAME (union) u;
+ UNS_TYPE bits;
+
+ u.x = number;
+ bits = u.i;
+
+ *p_sign = (unsigned int)((bits >> (EXP_SIZE + MAN_SIZE)) & 0x1);
+ *p_exponent = (unsigned int)((bits >> MAN_SIZE) & ((((UNS_TYPE)1) << EXP_SIZE) - 1));
+ *p_mantissa = bits & ((((UNS_TYPE)1) << MAN_SIZE) - 1);
+ return;
+}
+
+
+/*
+ * Prevent optimizer from eliminating + 0.0 to remove -0.0.
+ */
+
+volatile TYPE NAME (math_diff_0) = ((TYPE) 0.0);
+
+/*
+ * Return negative if two numbers are significanly different or return the
+ * number of bits that are different in the mantissa.
+ */
+
+static int
+NAME (math_diff) (TYPE a, TYPE b, int bits)
+{
+ TYPE zero = NAME (math_diff_0);
+ unsigned int sign_a, sign_b;
+ unsigned int exponent_a, exponent_b;
+ UNS_TYPE mantissa_a, mantissa_b, diff;
+ int i;
+
+ /* eliminate signed zero. */
+ a += zero;
+ b += zero;
+
+ /* special case Nan. */
+ if (__builtin_isnan (a))
+ return (__builtin_isnan (b) ? 0 : -1);
+
+ if (a == b)
+ return 0;
+
+ /* special case infinity. */
+ if (__builtin_isinf (a))
+ return (__builtin_isinf (b) ? 0 : -1);
+
+ /* punt on denormal numbers. */
+ if (!__builtin_isnormal (a) || !__builtin_isnormal (b))
+ return -1;
+
+ NAME (crack) (a, &sign_a, &exponent_a, &mantissa_a);
+ NAME (crack) (b, &sign_b, &exponent_b, &mantissa_b);
+
+ /* If the sign is different, there is no hope. */
+ if (sign_a != sign_b)
+ return -1;
+
+ /* If the exponent is off by 1, see if the values straddle the power of two,
+ and adjust things to do the mantassa check if we can. */
+ if ((exponent_a == (exponent_b+1)) || (exponent_a == (exponent_b-1)))
+ {
+ TYPE big = FMAX (a, b);
+ TYPE small = FMIN (a, b);
+ TYPE diff = FABS (a - b);
+ unsigned int sign_big, sign_small, sign_test;
+ unsigned int exponent_big, exponent_small, exponent_test;
+ UNS_TYPE mantissa_big, mantissa_small, mantissa_test;
+
+ NAME (crack) (big, &sign_big, &exponent_big, &mantissa_big);
+ NAME (crack) (small, &sign_small, &exponent_small, &mantissa_small);
+
+ NAME (crack) (small - diff, &sign_test, &exponent_test, &mantissa_test);
+ if ((sign_test == sign_small) && (exponent_test == exponent_small))
+ {
+ mantissa_a = mantissa_small;
+ mantissa_b = mantissa_test;
+ }
+
+ else
+ {
+ NAME (crack) (big + diff, &sign_test, &exponent_test, &mantissa_test);
+ if ((sign_test == sign_big) && (exponent_test == exponent_big))
+ {
+ mantissa_a = mantissa_big;
+ mantissa_b = mantissa_test;
+ }
+
+ else
+ return -1;
+ }
+ }
+
+ else if (exponent_a != exponent_b)
+ return -1;
+
+ diff = UNS_ABS (mantissa_a - mantissa_b);
+ for (i = MAN_SIZE; i > 0; i--)
+ {
+ if ((diff & ((UNS_TYPE)1) << (i-1)) != 0)
+ return i;
+ }
+
+ return -1;
+}
+
+
+/*
+ * Turn off inlining to make code inspection easier.
+ */
+
+static void NAME (asm_div) (void) __attribute__((__noinline__));
+static void NAME (vector_div) (void) __attribute__((__noinline__));
+static void NAME (scalar_div) (void) __attribute__((__noinline__));
+static void NAME (asm_rsqrt) (void) __attribute__((__noinline__));
+static void NAME (vector_rsqrt) (void) __attribute__((__noinline__));
+static void NAME (scalar_rsqrt) (void) __attribute__((__noinline__));
+static void NAME (check_div) (const char *) __attribute__((__noinline__));
+static void NAME (check_rsqrt) (const char *) __attribute__((__noinline__));
+static void NAME (run) (void) __attribute__((__noinline__));
+
+
+/*
+ * Division function that might be vectorized.
+ */
+
+static void
+NAME (vector_div) (void)
+{
+ size_t i;
+
+ for (i = 0; i < DIV_SIZE; i++)
+ NAME (div_output)[i] = ((TYPE) 1.0) / NAME (div_input)[i].x;
+}
+
+/*
+ * Division function that is not vectorized.
+ */
+
+static void
+NAME (scalar_div) (void)
+{
+ size_t i;
+
+ for (i = 0; i < DIV_SIZE; i++)
+ {
+ TYPE x = ((TYPE) 1.0) / NAME (div_input)[i].x;
+ TYPE y;
+ __asm__ ("" : "=d" (y) : "0" (x));
+ NAME (div_output)[i] = y;
+ }
+}
+
+/*
+ * Generate the division instruction via asm.
+ */
+
+static void
+NAME (asm_div) (void)
+{
+ size_t i;
+
+ for (i = 0; i < DIV_SIZE; i++)
+ {
+ TYPE x;
+ __asm__ (ASMDIV " %0,%1,%2"
+ : "=d" (x)
+ : "d" ((TYPE) 1.0), "d" (NAME (div_input)[i].x));
+ NAME (div_expected)[i] = x;
+ }
+}
+
+/*
+ * Reciprocal square root function that might be vectorized.
+ */
+
+static void
+NAME (vector_rsqrt) (void)
+{
+ size_t i;
+
+ for (i = 0; i < RSQRT_SIZE; i++)
+ NAME (rsqrt_output)[i] = ((TYPE) 1.0) / SQRT (NAME (rsqrt_input)[i].x);
+}
+
+/*
+ * Reciprocal square root function that is not vectorized.
+ */
+
+static void
+NAME (scalar_rsqrt) (void)
+{
+ size_t i;
+
+ for (i = 0; i < RSQRT_SIZE; i++)
+ {
+ TYPE x = ((TYPE) 1.0) / SQRT (NAME (rsqrt_input)[i].x);
+ TYPE y;
+ __asm__ ("" : "=d" (y) : "0" (x));
+ NAME (rsqrt_output)[i] = y;
+ }
+}
+
+/*
+ * Generate the 1/sqrt instructions via asm.
+ */
+
+static void
+NAME (asm_rsqrt) (void)
+{
+ size_t i;
+
+ for (i = 0; i < RSQRT_SIZE; i++)
+ {
+ TYPE x;
+ TYPE y;
+ __asm__ (ASMSQRT " %0,%1" : "=d" (x) : "d" (NAME (rsqrt_input)[i].x));
+ __asm__ (ASMDIV " %0,%1,%2" : "=d" (y) : "d" ((TYPE) 1.0), "d" (x));
+ NAME (rsqrt_expected)[i] = y;
+ }
+}
+
+
+/*
+ * Functions to abort or report errors.
+ */
+
+static int NAME (error_count) = 0;
+
+#ifdef VERBOSE
+static int NAME (max_bits_div) = 0;
+static int NAME (max_bits_rsqrt) = 0;
+#endif
+
+
+/*
+ * Compare the expected value with the value we got.
+ */
+
+static void
+NAME (check_div) (const char *test)
+{
+ size_t i;
+ int b;
+
+ for (i = 0; i < DIV_SIZE; i++)
+ {
+ TYPE exp = NAME (div_expected)[i];
+ TYPE out = NAME (div_output)[i];
+ b = NAME (math_diff) (exp, out, BDIV);
+
+#ifdef VERBOSE
+ if (b != 0)
+ {
+ NAME (union) u_in = NAME (div_input)[i];
+ NAME (union) u_exp;
+ NAME (union) u_out;
+ char explanation[64];
+ const char *p_exp;
+
+ if (b < 0)
+ p_exp = "failed";
+ else
+ {
+ p_exp = explanation;
+ sprintf (explanation, "%d bit error%s", b, (b > BDIV) ? ", failed" : "");
+ }
+
+ u_exp.x = exp;
+ u_out.x = out;
+ printf ("%s %s %s for 1.0 / %g [0x%llx], expected %g [0x%llx], got %g [0x%llx]\n",
+ TNAME (TYPE), test, p_exp,
+ (double) u_in.x, (unsigned long long) u_in.i,
+ (double) exp, (unsigned long long) u_exp.i,
+ (double) out, (unsigned long long) u_out.i);
+ }
+#endif
+
+ if (b < 0 || b > BDIV)
+ NAME (error_count)++;
+
+#ifdef VERBOSE
+ if (b > NAME (max_bits_div))
+ NAME (max_bits_div) = b;
+#endif
+ }
+}
+
+static void
+NAME (check_rsqrt) (const char *test)
+{
+ size_t i;
+ int b;
+
+ for (i = 0; i < RSQRT_SIZE; i++)
+ {
+ TYPE exp = NAME (rsqrt_expected)[i];
+ TYPE out = NAME (rsqrt_output)[i];
+ b = NAME (math_diff) (exp, out, BRSQRT);
+
+#ifdef VERBOSE
+ if (b != 0)
+ {
+ NAME (union) u_in = NAME (rsqrt_input)[i];
+ NAME (union) u_exp;
+ NAME (union) u_out;
+ char explanation[64];
+ const char *p_exp;
+
+ if (b < 0)
+ p_exp = "failed";
+ else
+ {
+ p_exp = explanation;
+ sprintf (explanation, "%d bit error%s", b, (b > BDIV) ? ", failed" : "");
+ }
+
+ u_exp.x = exp;
+ u_out.x = out;
+ printf ("%s %s %s for 1 / sqrt (%g) [0x%llx], expected %g [0x%llx], got %g [0x%llx]\n",
+ TNAME (TYPE), test, p_exp,
+ (double) u_in.x, (unsigned long long) u_in.i,
+ (double) exp, (unsigned long long) u_exp.i,
+ (double) out, (unsigned long long) u_out.i);
+ }
+#endif
+
+ if (b < 0 || b > BRSQRT)
+ NAME (error_count)++;
+
+#ifdef VERBOSE
+ if (b > NAME (max_bits_rsqrt))
+ NAME (max_bits_rsqrt) = b;
+#endif
+ }
+}
+
+
+/*
+ * Now do everything.
+ */
+
+static void
+NAME (run) (void)
+{
+#ifdef VERBOSE
+ printf ("start run_%s, divide size = %ld, rsqrt size = %ld, %d bit%s for a/b, %d bit%s for 1/sqrt(a)\n",
+ TNAME (TYPE),
+ (long)DIV_SIZE,
+ (long)RSQRT_SIZE,
+ BDIV, (BDIV == 1) ? "" : "s",
+ BRSQRT, (BRSQRT == 1) ? "" : "s");
+#endif
+
+ NAME (asm_div) ();
+
+ NAME (scalar_div) ();
+ NAME (check_div) ("scalar");
+
+ NAME (vector_div) ();
+ NAME (check_div) ("vector");
+
+ NAME (asm_rsqrt) ();
+
+ NAME (scalar_rsqrt) ();
+ NAME (check_rsqrt) ("scalar");
+
+ NAME (vector_rsqrt) ();
+ NAME (check_rsqrt) ("vector");
+
+#ifdef VERBOSE
+ printf ("end run_%s, errors = %d, max div bits = %d, max rsqrt bits = %d\n",
+ TNAME (TYPE),
+ NAME (error_count),
+ NAME (max_bits_div),
+ NAME (max_bits_rsqrt));
+#endif
+}
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-1.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-1.c
new file mode 100644
index 00000000000..35f8b53cac1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mabi=sysv" } */
+
+__attribute__ ((ms_abi))
+int foo (void)
+{
+ return 0;
+}
+
+/* { dg-final { scan-assembler-not "%rsp" } } */
+
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-2.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-2.c
new file mode 100644
index 00000000000..2a54bc89cfc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-2.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mabi=sysv" } */
+
+extern int glb1, gbl2, gbl3;
+
+__attribute__ ((ms_abi))
+int foo (void)
+{
+ int r = 1;
+ int i, j, k;
+ for (i = 0; i < glb1; i++)
+ {
+ r *= (i + 1);
+ for (j = gbl2; j > 0; --j)
+ {
+ for (k = 0; k < gbl3; k++)
+ r += (i + k * j);
+ }
+ }
+
+ return r;
+}
+
+/* { dg-final { scan-assembler-not "%rsp" } } */
+
diff --git a/gcc/testsuite/gfortran.dg/abstract_type_8.f03 b/gcc/testsuite/gfortran.dg/abstract_type_8.f03
new file mode 100644
index 00000000000..c924abac9af
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/abstract_type_8.f03
@@ -0,0 +1,29 @@
+! { dg-do compile }
+!
+! PR 44616: [OOP] ICE if CLASS(foo) is used before its definition
+!
+! Contributed by bd satish <bdsatish@gmail.com>
+
+module factory_pattern
+implicit none
+
+type First_Factory
+ character(len=20) :: factory_type
+ class(Connection), pointer :: connection_type
+ contains
+end type First_Factory
+
+type, abstract :: Connection
+ contains
+ procedure(generic_desc), deferred :: description
+end type Connection
+
+abstract interface
+ subroutine generic_desc(self)
+ import ! Required, cf. PR 44614
+ class(Connection) :: self
+ end subroutine generic_desc
+end interface
+end module factory_pattern
+
+! { dg-final { cleanup-modules "factory_pattern" } }
diff --git a/gcc/testsuite/gfortran.dg/actual_rank_check_1.f90 b/gcc/testsuite/gfortran.dg/actual_rank_check_1.f90
new file mode 100644
index 00000000000..7167de4270c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/actual_rank_check_1.f90
@@ -0,0 +1,23 @@
+! { dg-do compile }
+! Test the fix for PR40158, where the errro message was not clear about scalars.
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+!
+ implicit none
+ integer :: i(4,5),j
+ i = 0
+ call sub1(i)
+ call sub1(j) ! { dg-error "rank-1 and scalar" }
+ call sub2(i) ! { dg-error "scalar and rank-2" }
+ call sub2(j)
+ print '(5i0)', i
+contains
+ subroutine sub1(i1)
+ integer :: i1(*)
+ i1(1) = 2
+ end subroutine sub1
+ subroutine sub2(i2)
+ integer :: i2
+ i2 = 2
+ end subroutine sub2
+end
diff --git a/gcc/testsuite/gfortran.dg/aliasing_array_result_1.f90 b/gcc/testsuite/gfortran.dg/aliasing_array_result_1.f90
new file mode 100644
index 00000000000..d8899d2ecf8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/aliasing_array_result_1.f90
@@ -0,0 +1,164 @@
+! { dg-do run }
+! Tests the fic for PR44582, where gfortran was found to
+! produce an incorrect result when the result of a function
+! was aliased by a host or use associated variable, to which
+! the function is assigned. In these cases a temporary is
+! required in the function assignments. The check has to be
+! rather restrictive. Whilst the cases marked below might
+! not need temporaries, the TODOs are going to be tough.
+!
+! Reported by Yin Ma <yin@absoft.com> and
+! elaborated by Tobias Burnus <burnus@gcc.gnu.org>
+!
+module foo
+ INTEGER, PARAMETER :: ONE = 1
+ INTEGER, PARAMETER :: TEN = 10
+ INTEGER, PARAMETER :: FIVE = TEN/2
+ INTEGER, PARAMETER :: TWO = 2
+ integer :: foo_a(ONE)
+ integer :: check(ONE) = TEN
+ LOGICAL :: abort_flag = .false.
+contains
+ function foo_f()
+ integer :: foo_f(ONE)
+ foo_f = -FIVE
+ foo_f = foo_a - foo_f
+ end function foo_f
+ subroutine bar
+ foo_a = FIVE
+! This aliases 'foo_a' by host association.
+ foo_a = foo_f ()
+ if (any (foo_a .ne. check)) call myabort (0)
+ end subroutine bar
+ subroutine myabort(fl)
+ integer :: fl
+ print *, fl
+ abort_flag = .true.
+ end subroutine myabort
+end module foo
+
+function h_ext()
+ use foo
+ integer :: h_ext(ONE)
+ h_ext = -FIVE
+ h_ext = FIVE - h_ext
+end function h_ext
+
+function i_ext() result (h)
+ use foo
+ integer :: h(ONE)
+ h = -FIVE
+ h = FIVE - h
+end function i_ext
+
+subroutine tobias
+ use foo
+ integer :: a(ONE)
+ a = FIVE
+ call sub1(a)
+ if (any (a .ne. check)) call myabort (1)
+contains
+ subroutine sub1(x)
+ integer :: x(ONE)
+! 'x' is aliased by host association in 'f'.
+ x = f()
+ end subroutine sub1
+ function f()
+ integer :: f(ONE)
+ f = ONE
+ f = a + FIVE
+ end function f
+end subroutine tobias
+
+program test
+ use foo
+ implicit none
+ common /foo_bar/ c
+ integer :: a(ONE), b(ONE), c(ONE), d(ONE)
+ interface
+ function h_ext()
+ use foo
+ integer :: h_ext(ONE)
+ end function h_ext
+ end interface
+ interface
+ function i_ext() result (h)
+ use foo
+ integer :: h(ONE)
+ end function i_ext
+ end interface
+
+ a = FIVE
+! This aliases 'a' by host association
+ a = f()
+ if (any (a .ne. check)) call myabort (2)
+ a = FIVE
+ if (any (f() .ne. check)) call myabort (3)
+ call bar
+ foo_a = FIVE
+! This aliases 'foo_a' by host association.
+ foo_a = g ()
+ if (any (foo_a .ne. check)) call myabort (4)
+ a = FIVE
+ a = h() ! TODO: Needs no temporary
+ if (any (a .ne. check)) call myabort (5)
+ a = FIVE
+ a = i() ! TODO: Needs no temporary
+ if (any (a .ne. check)) call myabort (6)
+ a = FIVE
+ a = h_ext() ! Needs no temporary - was OK
+ if (any (a .ne. check)) call myabort (15)
+ a = FIVE
+ a = i_ext() ! Needs no temporary - was OK
+ if (any (a .ne. check)) call myabort (16)
+ c = FIVE
+! This aliases 'c' through the common block.
+ c = j()
+ if (any (c .ne. check)) call myabort (7)
+ call aaa
+ call tobias
+ if (abort_flag) call abort
+contains
+ function f()
+ integer :: f(ONE)
+ f = -FIVE
+ f = a - f
+ end function f
+ function g()
+ integer :: g(ONE)
+ g = -FIVE
+ g = foo_a - g
+ end function g
+ function h()
+ integer :: h(ONE)
+ h = -FIVE
+ h = FIVE - h
+ end function h
+ function i() result (h)
+ integer :: h(ONE)
+ h = -FIVE
+ h = FIVE - h
+ end function i
+ function j()
+ common /foo_bar/ cc
+ integer :: j(ONE), cc(ONE)
+ j = -FIVE
+ j = cc - j
+ end function j
+ subroutine aaa()
+ d = TEN - TWO
+! This aliases 'd' through 'get_d'.
+ d = bbb()
+ if (any (d .ne. check)) call myabort (8)
+ end subroutine aaa
+ function bbb()
+ integer :: bbb(ONE)
+ bbb = TWO
+ bbb = bbb + get_d()
+ end function bbb
+ function get_d()
+ integer :: get_d(ONE)
+ get_d = d
+ end function get_d
+end program test
+! { dg-final { cleanup-modules "foo" } }
diff --git a/gcc/testsuite/gfortran.dg/alloc_comp_class_1.f90 b/gcc/testsuite/gfortran.dg/alloc_comp_class_1.f90
new file mode 100644
index 00000000000..c783f49ff77
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/alloc_comp_class_1.f90
@@ -0,0 +1,33 @@
+! { dg-do run }
+! Test the fix for PR43895, in which the dummy 'a' was not
+! dereferenced for the deallocation of component 'a', as required
+! for INTENT(OUT).
+!
+! Contributed by Salvatore Filippone <sfilippone@uniroma2.it>
+!
+module d_mat_mod
+ type :: base_sparse_mat
+ end type base_sparse_mat
+
+ type, extends(base_sparse_mat) :: d_base_sparse_mat
+ integer :: i
+ end type d_base_sparse_mat
+
+ type :: d_sparse_mat
+ class(d_base_sparse_mat), allocatable :: a
+ end type d_sparse_mat
+end module d_mat_mod
+
+ use d_mat_mod
+ type(d_sparse_mat) :: b
+ allocate (b%a)
+ b%a%i = 42
+ call bug14 (b)
+ if (allocated (b%a)) call abort
+contains
+ subroutine bug14(a)
+ implicit none
+ type(d_sparse_mat), intent(out) :: a
+ end subroutine bug14
+end
+! { dg-final { cleanup-modules "d_mat_mod " } }
diff --git a/gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90 b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90
new file mode 100644
index 00000000000..5bccefaaf15
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90
@@ -0,0 +1,46 @@
+! { dg-do run }
+!
+! PR 43388: [F2008][OOP] ALLOCATE with MOLD=
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+type :: t1
+ integer :: i
+end type
+
+type,extends(t1) :: t2
+ integer :: j = 4
+end type
+
+class(t1),allocatable :: x,y
+type(t2) :: z
+
+
+!!! first example (works)
+
+z%j = 5
+allocate(x,MOLD=z)
+
+select type (x)
+type is (t2)
+ print *,x%j
+ if (x%j/=4) call abort
+class default
+ call abort()
+end select
+
+
+!!! second example (fails)
+!!! FIXME: uncomment once implemented (cf. PR 44541)
+
+! allocate(y,MOLD=x)
+!
+! select type (y)
+! type is (t2)
+! print *,y%j
+! if (y%j/=4) call abort
+! class default
+! call abort()
+! end select
+
+end
diff --git a/gcc/testsuite/gfortran.dg/allocate_alloc_opt_11.f90 b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_11.f90
new file mode 100644
index 00000000000..c8c7ac633cd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_11.f90
@@ -0,0 +1,26 @@
+! { dg-do compile }
+!
+! PR fortran/44556
+!
+! Contributed by Jonathan Hogg and Steve Kargl.
+!
+program oh_my
+ implicit none
+ type a
+ integer, allocatable :: b(:), d(:)
+ character(len=80) :: err
+ character(len=80), allocatable :: str(:)
+ integer :: src
+ end type a
+
+ integer j
+ type(a) :: c
+ c%err = 'ok'
+ allocate(c%d(1))
+ allocate(c%b(2), errmsg=c%err, stat=c%d(1)) ! OK
+ deallocate(c%b, errmsg=c%err, stat=c%d(1)) ! OK
+ allocate(c%b(2), errmsg=c%err, stat=c%b(1)) ! { dg-error "the same ALLOCATE statement" }
+ deallocate(c%b, errmsg=c%err, stat=c%b(1)) ! { dg-error "the same DEALLOCATE statement" }
+ allocate(c%str(2), errmsg=c%str(1), stat=j) ! { dg-error "the same ALLOCATE statement" }
+ deallocate(c%str, errmsg=c%str(1), stat=j) ! { dg-error "the same DEALLOCATE statement" }
+end program oh_my
diff --git a/gcc/testsuite/gfortran.dg/allocate_alloc_opt_7.f90 b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_7.f90
new file mode 100644
index 00000000000..e77f6b7c638
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_7.f90
@@ -0,0 +1,18 @@
+! { dg-do compile }
+!
+! PR 44207: ICE with ALLOCATABLE components and SOURCE
+!
+! Contributed by Hans-Werner Boschmann <boschmann@tp1.physik.uni-siegen.de>
+
+program ice_prog
+
+type::ice_type
+ integer,dimension(:),allocatable::list
+end type ice_type
+
+type(ice_type)::this
+integer::dim=10,i
+
+allocate(this%list(dim),source=[(i,i=1,dim)])
+
+end program ice_prog
diff --git a/gcc/testsuite/gfortran.dg/allocate_alloc_opt_8.f90 b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_8.f90
new file mode 100644
index 00000000000..39aa3638b46
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_8.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! { dg-options "-std=f2003" }
+!
+! PR 43388: [F2008][OOP] ALLOCATE with MOLD=
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+type :: t
+end type
+
+class(t),allocatable :: x
+type(t) :: z
+
+allocate(x,MOLD=z) ! { dg-error "MOLD tag at" }
+
+end
diff --git a/gcc/testsuite/gfortran.dg/allocate_alloc_opt_9.f90 b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_9.f90
new file mode 100644
index 00000000000..e51a7ec868a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_9.f90
@@ -0,0 +1,23 @@
+! { dg-do compile }
+!
+! PR 43388: [F2008][OOP] ALLOCATE with MOLD=
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+type :: t
+end type
+
+type :: u
+end type
+
+class(t),allocatable :: x
+type(t) :: z1,z2
+type(u) :: z3
+
+allocate(x,MOLD=z1,MOLD=z2) ! { dg-error "Redundant MOLD tag" }
+allocate(x,SOURCE=z1,MOLD=z2) ! { dg-error "conflicts with SOURCE tag" }
+allocate(t::x,MOLD=z1) ! { dg-error "conflicts with the typespec" }
+
+allocate(x,MOLD=z3) ! { dg-error "is type incompatible" }
+
+end
diff --git a/gcc/testsuite/gfortran.dg/array_constructor_23.f b/gcc/testsuite/gfortran.dg/array_constructor_23.f
index ac57efc2440..fa0a28a1f17 100644
--- a/gcc/testsuite/gfortran.dg/array_constructor_23.f
+++ b/gcc/testsuite/gfortran.dg/array_constructor_23.f
@@ -20,7 +20,7 @@
DDA1 = ATAN2 ((/(REAL(J1,KV),J1=1,10)/),
$ REAL((/(J1,J1=nf10,nf1,mf1)/), KV)) !fails
DDA2 = ATAN2 (DDA, DDA(10:1:-1))
- if (any (DDA1 .ne. DDA2)) call abort ()
+ if (any (DDA1 - DDA2 .gt. epsilon(dval))) call abort ()
END
subroutine FA6077 (nf10,nf1,mf1, ida)
@@ -42,7 +42,7 @@
QDA1 = MOD ( 1.1_k*( QDA(1) -5.0_k), P=( QDA -2.5_k))
DO J1 = 1,10
QVAL = MOD(1.1_k*(QDA(1)-5.0_k),P=(QDA(J1)-2.5_k))
- if (qval .ne. qda1(j1)) call abort ()
+ if (qval - qda1(j1) .gt. epsilon(qval)) call abort ()
ENDDO
END
diff --git a/gcc/testsuite/gfortran.dg/array_memcpy_3.f90 b/gcc/testsuite/gfortran.dg/array_memcpy_3.f90
index df6bd49ef26..78097308030 100644
--- a/gcc/testsuite/gfortran.dg/array_memcpy_3.f90
+++ b/gcc/testsuite/gfortran.dg/array_memcpy_3.f90
@@ -11,5 +11,5 @@ subroutine bar(x)
x = (/ 3, 1, 4, 1 /)
end subroutine
-! { dg-final { scan-tree-dump-times "memcpy|ref-all" 2 "original" } }
+! { dg-final { scan-tree-dump-times "memcpy|(ref-all.*ref-all)" 2 "original" } }
! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/array_memcpy_4.f90 b/gcc/testsuite/gfortran.dg/array_memcpy_4.f90
index 0f8b5cb15b0..9f2279d881c 100644
--- a/gcc/testsuite/gfortran.dg/array_memcpy_4.f90
+++ b/gcc/testsuite/gfortran.dg/array_memcpy_4.f90
@@ -9,5 +9,5 @@
d = s
end
-! { dg-final { scan-tree-dump-times "d = " 1 "original" } }
+! { dg-final { scan-tree-dump-times "MEM.*d\\\] = MEM" 1 "original" } }
! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/associate_1.f03 b/gcc/testsuite/gfortran.dg/associate_1.f03
new file mode 100644
index 00000000000..90579c99ce3
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associate_1.f03
@@ -0,0 +1,49 @@
+! { dg-do run }
+! { dg-options "-std=f2003 -fall-intrinsics" }
+
+! PR fortran/38936
+! Check the basic semantics of the ASSOCIATE construct.
+
+PROGRAM main
+ IMPLICIT NONE
+ REAL :: a, b, c
+ INTEGER, ALLOCATABLE :: arr(:)
+
+ a = -2.0
+ b = 3.0
+ c = 4.0
+
+ ! Simple association to expressions.
+ ASSOCIATE (r => SQRT (a**2 + b**2 + c**2), t => a + b)
+ PRINT *, t, a, b
+ IF (ABS (r - SQRT (4.0 + 9.0 + 16.0)) > 1.0e-3) CALL abort ()
+ IF (ABS (t - a - b) > 1.0e-3) CALL abort ()
+ END ASSOCIATE
+
+ ! TODO: Test association to variables when that is supported.
+ ! TODO: Test association to derived types.
+
+ ! Test association to arrays.
+ ! TODO: Enable when working.
+ !ALLOCATE (arr(3))
+ !arr = (/ 1, 2, 3 /)
+ !ASSOCIATE (doubled => 2 * arr)
+ ! IF (doubled(1) /= 2 .OR. doubled(2) /= 4 .OR. doubled(3) /= 6) &
+ ! CALL abort ()
+ !END ASSOCIATE
+
+ ! Named and nested associate.
+ myname: ASSOCIATE (x => a - b * c)
+ ASSOCIATE (y => 2.0 * x)
+ IF (ABS (y - 2.0 * (a - b * c)) > 1.0e-3) CALL abort ()
+ END ASSOCIATE
+ END ASSOCIATE myname ! Matching end-label.
+
+ ! Correct behaviour when shadowing already existing names.
+ ASSOCIATE (a => 1 * b, b => 1 * a, x => 1, y => 2)
+ IF (ABS (a - 3.0) > 1.0e-3 .OR. ABS (b + 2.0) > 1.0e-3) CALL abort ()
+ ASSOCIATE (x => 1 * y, y => 1 * x)
+ IF (x /= 2 .OR. y /= 1) CALL abort ()
+ END ASSOCIATE
+ END ASSOCIATE
+END PROGRAM main
diff --git a/gcc/testsuite/gfortran.dg/associate_2.f95 b/gcc/testsuite/gfortran.dg/associate_2.f95
new file mode 100644
index 00000000000..a41398d7850
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associate_2.f95
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-std=f95" }
+
+! PR fortran/38936
+! Test that F95 rejects ASSOCIATE.
+
+PROGRAM main
+ IMPLICIT NONE
+
+ ASSOCIATE (a => 5) ! { dg-error "Fortran 2003" }
+ END ASSOCIATE
+END PROGRAM main
diff --git a/gcc/testsuite/gfortran.dg/associate_3.f03 b/gcc/testsuite/gfortran.dg/associate_3.f03
new file mode 100644
index 00000000000..c53bd559fb8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associate_3.f03
@@ -0,0 +1,41 @@
+! { dg-do compile }
+! { dg-options "-std=f2003" }
+
+! PR fortran/38936
+! Check for errors with ASSOCIATE.
+
+PROGRAM main
+ IMPLICIT NONE
+
+ ASSOCIATE ! { dg-error "Expected association list" }
+
+ ASSOCIATE () ! { dg-error "Expected association" }
+
+ ASSOCIATE (a => 1) 5 ! { dg-error "Junk after ASSOCIATE" }
+
+ ASSOCIATE (x =>) ! { dg-error "Expected association" }
+
+ ASSOCIATE (=> 5) ! { dg-error "Expected association" }
+
+ ASSOCIATE (x => 5, ) ! { dg-error "Expected association" }
+
+ myname: ASSOCIATE (a => 1)
+ END ASSOCIATE ! { dg-error "Expected block name of 'myname'" }
+
+ ASSOCIATE (b => 2)
+ END ASSOCIATE myname ! { dg-error "Syntax error in END ASSOCIATE" }
+
+ myname2: ASSOCIATE (c => 3)
+ END ASSOCIATE myname3 ! { dg-error "Expected label 'myname2'" }
+
+ ASSOCIATE (a => 1, b => 2, a => 3) ! { dg-error "Duplicate name 'a'" }
+
+ ASSOCIATE (a => 5)
+ a = 4 ! { dg-error "variable definition context" }
+ ENd ASSOCIATE
+
+ ASSOCIATE (a => 5)
+ INTEGER :: b ! { dg-error "Unexpected data declaration statement" }
+ END ASSOCIATE
+END PROGRAM main ! { dg-error "Expecting END ASSOCIATE" }
+! { dg-excess-errors "Unexpected end of file" }
diff --git a/gcc/testsuite/gfortran.dg/associate_4.f08 b/gcc/testsuite/gfortran.dg/associate_4.f08
new file mode 100644
index 00000000000..c336af2ab13
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associate_4.f08
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-std=f2008 -fcoarray=single" }
+
+! PR fortran/38936
+! Check for error with coindexed target.
+
+PROGRAM main
+ IMPLICIT NONE
+ INTEGER :: a[*]
+
+ ASSOCIATE (x => a[1]) ! { dg-error "must not be coindexed" }
+END PROGRAM main
diff --git a/gcc/testsuite/gfortran.dg/associated_target_4.f90 b/gcc/testsuite/gfortran.dg/associated_target_4.f90
new file mode 100644
index 00000000000..24f331785e8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associated_target_4.f90
@@ -0,0 +1,23 @@
+! { dg-do run }
+!
+! PR 44696: [OOP] ASSOCIATED fails on polymorphic variables
+!
+! Original test case by Hans-Werner Boschmann <boschmann@tp1.physik.uni-siegen.de>
+! Modified by Janus Weil <janus@gcc.gnu.org>
+
+program rte1
+ implicit none
+ type::node_type
+ class(node_type),pointer::parent,child
+ integer::id
+ end type node_type
+ class(node_type),pointer::root
+ allocate(root)
+ allocate(root%child)
+ root%child%parent=>root
+ root%id=1
+ root%child%id=2
+ print *,root%child%id," is child of ",root%id,":"
+ print *,root%child%parent%id,root%id
+ if (.not. associated(root%child%parent,root)) call abort()
+end program rte1
diff --git a/gcc/testsuite/gfortran.dg/asynchronous_3.f03 b/gcc/testsuite/gfortran.dg/asynchronous_3.f03
new file mode 100644
index 00000000000..7b83374a6e5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/asynchronous_3.f03
@@ -0,0 +1,15 @@
+! { dg-do "compile" }
+!
+! PR fortran/44457 - no array-subscript actual argument
+! for an asynchronous dummy
+!
+
+ integer :: a(10), sect(3)
+ sect = [1,2,3]
+ call f(a(sect)) ! { dg-error "incompatible" }
+ call f(a(::2))
+contains
+ subroutine f(x)
+ integer, asynchronous :: x(:)
+ end subroutine f
+end
diff --git a/gcc/testsuite/gfortran.dg/atan2_1.f90 b/gcc/testsuite/gfortran.dg/atan2_1.f90
index 1f998a1ccde..65da63cd2d3 100644
--- a/gcc/testsuite/gfortran.dg/atan2_1.f90
+++ b/gcc/testsuite/gfortran.dg/atan2_1.f90
@@ -1,4 +1,5 @@
! { dg-do run }
+! { dg-options "-ffloat-store" }
!
! PR fortran/33197
!
diff --git a/gcc/testsuite/gfortran.dg/btest_1.f90 b/gcc/testsuite/gfortran.dg/btest_1.f90
new file mode 100644
index 00000000000..8a72c314cd5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/btest_1.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+program a
+ integer :: i = 42
+ logical l
+ l = btest(i, -1) ! { dg-error "must be nonnegative" }
+ l = btest(i, 65) ! { dg-error "must be less than" }
+end program a
diff --git a/gcc/testsuite/gfortran.dg/class_23.f03 b/gcc/testsuite/gfortran.dg/class_23.f03
new file mode 100644
index 00000000000..e1e35176294
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_23.f03
@@ -0,0 +1,24 @@
+! { dg-do compile }
+!
+! PR 42051: [OOP] ICE on array-valued function with CLASS formal argument
+!
+! Original test case by Damian Rouson <damian@rouson.net>
+! Modified by Janus Weil <janus@gcc.gnu.org>
+
+ type grid
+ end type
+
+contains
+
+ function return_x(this) result(this_x)
+ class(grid) :: this
+ real ,dimension(1) :: this_x
+ end function
+
+ subroutine output()
+ type(grid) :: mesh
+ real ,dimension(1) :: x
+ x = return_x(mesh)
+ end subroutine
+
+end
diff --git a/gcc/testsuite/gfortran.dg/class_allocate_2.f03 b/gcc/testsuite/gfortran.dg/class_allocate_2.f03
index 754faa9a9f4..cec05f17a1f 100644
--- a/gcc/testsuite/gfortran.dg/class_allocate_2.f03
+++ b/gcc/testsuite/gfortran.dg/class_allocate_2.f03
@@ -18,6 +18,6 @@ end type t2
class(t), allocatable :: a,c,d
type(t2) :: b
-allocate(a) ! { dg-error "requires a type-spec or SOURCE" }
-allocate(b%t) ! { dg-error "requires a type-spec or SOURCE" }
+allocate(a) ! { dg-error "requires a type-spec or source-expr" }
+allocate(b%t) ! { dg-error "requires a type-spec or source-expr" }
end
diff --git a/gcc/testsuite/gfortran.dg/contiguous_1.f90 b/gcc/testsuite/gfortran.dg/contiguous_1.f90
new file mode 100644
index 00000000000..e75c08d8ef4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/contiguous_1.f90
@@ -0,0 +1,177 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+!
+! PR fortran/40632
+!
+! CONTIGUOUS compile-time tests
+!
+
+! C448: Must be an array with POINTER attribute
+type t1
+ integer, contiguous :: ca(5) ! { dg-error "Component .ca. at .1. has the CONTIGUOUS" }
+end type t1
+type t2
+ integer, contiguous, allocatable :: cb(:) ! { dg-error "Component .cb. at .1. has the CONTIGUOUS" }
+end type t2
+type t3
+ integer, contiguous, pointer :: cc(:) ! OK
+end type t3
+type t4
+ integer, pointer, contiguous :: cd ! { dg-error "Component .cd. at .1. has the CONTIGUOUS" }
+end type t4
+end
+
+! C530: Must be an array and (a) a POINTER or (b) assumed shape.
+subroutine test(x, y)
+ integer, pointer :: x(:)
+ integer, intent(in) :: y(:)
+ contiguous :: x, y
+
+ integer, contiguous :: a(5) ! { dg-error ".a. at .1. has the CONTIGUOUS attribute" }
+ integer, contiguous, allocatable :: b(:) ! { dg-error ".b. at .1. has the CONTIGUOUS attribute" }
+ integer, contiguous, pointer :: c(:) ! OK
+ integer, pointer, contiguous :: d ! { dg-error ".d. at .1. has the CONTIGUOUS attribute" }
+end
+
+! Pointer assignment check:
+! If the pointer object has the CONTIGUOUS attribute, the pointer target shall be contiguous.
+! Note: This is not compile-time checkable; but F2008, 5.3.7 except in a very few cases.
+subroutine ptr_assign()
+ integer, pointer, contiguous :: ptr1(:)
+ integer, target :: tgt(5)
+ ptr1 => tgt
+end subroutine
+
+
+! C1239 (R1223) If an actual argument is a nonpointer array that has the ASYNCHRONOUS or VOLATILE
+! attribute but is not simply contiguous (6.5.4), and the corresponding dummy argument has either the
+! VOLATILE or ASYNCHRONOUS attribute, that dummy argument shall be an assumed-shape array
+! that does not have the CONTIGUOUS attribute.
+
+subroutine C1239
+ type t
+ integer :: e(4)
+ end type t
+ type(t), volatile :: f
+ integer, asynchronous :: a(4), b(4)
+ integer, volatile :: c(4), d(4)
+ call test (a,b,c) ! OK
+ call test (a,b(::2),c) ! { dg-error "array without CONTIGUOUS" }
+ call test (a(::2),b,c) ! { dg-error "array without CONTIGUOUS" }
+
+ call test (a,b,f%e) ! OK
+ call test (a,f%e,c) ! OK
+ call test (f%e,b,c) ! OK
+ call test (a,b,f%e(::2)) ! OK
+ call test (a,f%e(::2),c) ! { dg-error "array without CONTIGUOUS" }
+ call test (f%e(::2),b,c) ! { dg-error "array without CONTIGUOUS" }
+contains
+ subroutine test(u, v, w)
+ integer, asynchronous :: u(:), v(*)
+ integer, volatile :: w(:)
+ contiguous :: u
+ end subroutine test
+end subroutine C1239
+
+
+! C1240 (R1223) If an actual argument is an array pointer that has the ASYNCHRONOUS or VOLATILE
+! attribute but does not have the CONTIGUOUS attribute, and the corresponding dummy argument has
+! either the VOLATILE or ASYNCHRONOUS attribute, that dummy argument shall be an array pointer
+! or an assumed-shape array that does not have the CONTIGUOUS attribute.
+
+subroutine C1240
+ type t
+ integer,pointer :: e(:)
+ end type t
+ type(t), volatile :: f
+ integer, pointer, asynchronous :: a(:), b(:)
+ integer,pointer, volatile :: c(:), d(:)
+ call test (a,b,c) ! { dg-error "array without CONTIGUOUS" }
+ call test (a,b(::2),c) ! { dg-error "array without CONTIGUOUS" }
+ call test (a(::2),b,c) ! { dg-error "array without CONTIGUOUS" }
+
+ call test (a,b,f%e) ! { dg-error "array without CONTIGUOUS" }
+ call test (a,f%e,c) ! { dg-error "array without CONTIGUOUS" }
+ call test (f%e,b,c) ! { dg-error "array without CONTIGUOUS" }
+ call test (a,b,f%e(::2)) ! { dg-error "array without CONTIGUOUS" }
+ call test (a,f%e(::2),c) ! { dg-error "array without CONTIGUOUS" }
+ call test (f%e(::2),b,c) ! { dg-error "array without CONTIGUOUS" }
+
+ call test2(a,b)
+ call test3(a,b)
+ call test2(c,d)
+ call test3(c,d)
+ call test2(f%e,d)
+ call test3(c,f%e)
+contains
+ subroutine test(u, v, w)
+ integer, asynchronous :: u(:), v(*)
+ integer, volatile :: w(:)
+ contiguous :: u
+ end subroutine test
+ subroutine test2(x,y)
+ integer, asynchronous :: x(:)
+ integer, volatile :: y(:)
+ end subroutine test2
+ subroutine test3(x,y)
+ integer, pointer, asynchronous :: x(:)
+ integer, pointer, volatile :: y(:)
+ end subroutine test3
+end subroutine C1240
+
+
+
+! 12.5.2.7 Pointer dummy variables
+! C1241 The actual argument corresponding to a dummy pointer with the CONTIGUOUS attribute shall be
+! simply contiguous (6.5.4).
+
+subroutine C1241
+ integer, pointer, contiguous :: a(:)
+ integer, pointer :: b(:)
+ call test(a)
+ call test(b) ! { dg-error "must be simply contigous" }
+contains
+ subroutine test(x)
+ integer, pointer, contiguous :: x(:)
+ end subroutine test
+end subroutine C1241
+
+
+! 12.5.2.8 Coarray dummy variables
+! If the dummy argument is an array coarray that has the CONTIGUOUS attribute or is not of assumed shape,
+! the corresponding actual argument shall be simply contiguous
+
+subroutine sect12528(cob)
+ integer, save :: coa(6)[*]
+ integer :: cob(:)[*]
+
+ call test(coa)
+ call test2(coa)
+ call test3(coa)
+
+ call test(cob) ! { dg-error "must be simply contiguous" }
+ call test2(cob) ! { dg-error "must be simply contiguous" }
+ call test3(cob)
+contains
+ subroutine test(x)
+ integer, contiguous :: x(:)[*]
+ end subroutine test
+ subroutine test2(x)
+ integer :: x(*)[*]
+ end subroutine test2
+ subroutine test3(x)
+ integer :: x(:)[*]
+ end subroutine test3
+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" }
+contains
+ subroutine foo(x)
+ integer, pointer, contiguous, volatile :: x(:)
+ end subroutine
+end subroutine test34
diff --git a/gcc/testsuite/gfortran.dg/contiguous_2.f90 b/gcc/testsuite/gfortran.dg/contiguous_2.f90
new file mode 100644
index 00000000000..782d23dc7cd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/contiguous_2.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-std=f2003" }
+!
+! PR fortran/40632
+!
+! CONTIGUOUS compile-time tests
+!
+
+integer, pointer, contiguous :: a(:) ! { dg-error "Fortran 2008:" }
+integer, pointer :: b(:)
+contiguous :: b ! { dg-error "Fortran 2008:" }
+end
diff --git a/gcc/testsuite/gfortran.dg/contiguous_3.f90 b/gcc/testsuite/gfortran.dg/contiguous_3.f90
new file mode 100644
index 00000000000..aac55367a45
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/contiguous_3.f90
@@ -0,0 +1,65 @@
+! { dg-do compile }
+! { dg-options "-fdump-tree-original" }
+!
+! PR fortran/40632
+!
+! CONTIGUOUS compile-time tests: Check that contigous
+! works properly.
+
+subroutine test1(a,b)
+ integer, pointer, contiguous :: test1_a(:)
+ call foo(test1_a)
+ call foo(test1_a(::1))
+ call foo(test1_a(::2))
+contains
+ subroutine foo(b)
+ integer :: b(*)
+ end subroutine foo
+end subroutine test1
+
+! For the first two no pack is done; for the third one, an array descriptor
+! (cf. below test3) is created for packing.
+!
+! { dg-final { scan-tree-dump-times "_internal_pack.*test1_a" 0 "original" } }
+! { dg-final { scan-tree-dump-times "_internal_unpack.*test1_a" 0 "original" } }
+
+
+subroutine t2(a1,b1,c2,d2)
+ integer, pointer, contiguous :: a1(:), b1(:)
+ integer, pointer :: c2(:), d2(:)
+ a1 = b1
+ c2 = d2
+end subroutine t2
+
+! { dg-final { scan-tree-dump-times "= a1->dim.0..stride;" 0 "original" } }
+! { dg-final { scan-tree-dump-times "= b1->dim.0..stride;" 0 "original" } }
+! { dg-final { scan-tree-dump-times "= c2->dim.0..stride;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "= d2->dim.0..stride;" 1 "original" } }
+
+
+subroutine test3()
+ implicit none
+ integer :: test3_a(8),i
+ test3_a = [(i,i=1,8)]
+ call foo(test3_a(::1))
+ call foo(test3_a(::2))
+ call bar(test3_a(::1))
+ call bar(test3_a(::2))
+contains
+ subroutine foo(x)
+ integer, contiguous :: x(:)
+ print *, x
+ end subroutine
+ subroutine bar(x)
+ integer :: x(:)
+ print *, x
+ end subroutine bar
+end subroutine test3
+
+! Once for test1 (third call), once for test3 (second call)
+! { dg-final { scan-tree-dump-times "data = origptr" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_internal_pack .&parm" 2 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_internal_unpack .&parm" 2 "original" } }
+
+
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/data_namelist_conflict.f90 b/gcc/testsuite/gfortran.dg/data_namelist_conflict.f90
new file mode 100644
index 00000000000..b09f167fc7c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/data_namelist_conflict.f90
@@ -0,0 +1,26 @@
+! { dg-do run }
+! Problem report: http://gcc.gnu.org/ml/fortran/2010-05/msg00139.html
+!
+module globals
+ implicit none
+ integer j
+ data j/1/
+end module
+
+program test
+ use globals
+ implicit none
+ character(len=80) str
+ integer :: i
+ data i/0/
+ namelist /nl/i,j
+ open(unit=10,status='scratch')
+ write(10,nl)
+ i = 42
+ j = 42
+ rewind(10)
+ read(10,nl)
+ if (i /= 0 .or. j /= 1) call abort
+ close(10)
+end program
+! { dg-final { cleanup-modules "globals" } }
diff --git a/gcc/testsuite/gfortran.dg/end_subroutine_1.f90 b/gcc/testsuite/gfortran.dg/end_subroutine_1.f90
new file mode 100644
index 00000000000..b42f950546b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/end_subroutine_1.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+!
+interface
+ subroutine foo()
+ end
+ integer function bar()
+ end
+end interface
+contains
+ subroutine test()
+ end
+ integer function f()
+ f = 42
+ end
+end
diff --git a/gcc/testsuite/gfortran.dg/end_subroutine_2.f90 b/gcc/testsuite/gfortran.dg/end_subroutine_2.f90
new file mode 100644
index 00000000000..8f2e3d10a13
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/end_subroutine_2.f90
@@ -0,0 +1,24 @@
+! { dg-do compile }
+! { dg-options "-std=f2003" }
+!
+program main
+interface
+ subroutine foo()
+ end
+ integer function bar()
+ end
+end interface
+contains
+ subroutine test()
+ end ! { dg-error "Fortran 2008: END statement instead of END SUBROUTINE" }
+ end subroutine ! To silence successive errors
+end program
+
+subroutine test2()
+contains
+ integer function f()
+ f = 42
+ end ! { dg-error "Fortran 2008: END statement instead of END FUNCTION" }
+ end function ! To silence successive errors
+end subroutine test2
+
diff --git a/gcc/testsuite/gfortran.dg/endfile_2.f90 b/gcc/testsuite/gfortran.dg/endfile_2.f90
index e91e80eb2aa..ee911e89e9e 100644
--- a/gcc/testsuite/gfortran.dg/endfile_2.f90
+++ b/gcc/testsuite/gfortran.dg/endfile_2.f90
@@ -5,7 +5,7 @@
integer i
endfile(8)
rewind(8)
- read(8,end=0023)i
+ read(8,*,end=0023)i
call abort ! should never get here
stop
0023 continue
diff --git a/gcc/testsuite/gfortran.dg/endfile_3.f90 b/gcc/testsuite/gfortran.dg/endfile_3.f90
new file mode 100644
index 00000000000..0c413145c5d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/endfile_3.f90
@@ -0,0 +1,9 @@
+! { dg-do run }
+! pr44477 READ/WRITE not allowed after ENDFILE
+!-------------------------------------------
+ open(10, form='formatted', &
+ action='write', position='rewind', status="scratch")
+ endfile(10)
+ write(10,'(a)') "aa" ! { dg-shouldfail "Cannot perform ENDFILE" }
+end
+
diff --git a/gcc/testsuite/gfortran.dg/endfile_4.f90 b/gcc/testsuite/gfortran.dg/endfile_4.f90
new file mode 100644
index 00000000000..a2462c9f878
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/endfile_4.f90
@@ -0,0 +1,8 @@
+! { dg-do run }
+! pr44477 ENDFILE not allowed after ENDFILE
+!-------------------------------------------
+ open(10, form='formatted', &
+ action='write', position='rewind', status="scratch")
+ endfile(10)
+ endfile(10) ! { dg-shouldfail "Cannot perform ENDFILE" }
+end
diff --git a/gcc/testsuite/gfortran.dg/entry_19.f90 b/gcc/testsuite/gfortran.dg/entry_19.f90
new file mode 100644
index 00000000000..b7b8bfa2f2e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/entry_19.f90
@@ -0,0 +1,9 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+!
+!
+! Entry is obsolete in Fortran 2008
+!
+subroutine foo()
+entry bar() ! { dg-error "Fortran 2008 obsolescent feature: ENTRY" }
+end
diff --git a/gcc/testsuite/gfortran.dg/eof_3.f90 b/gcc/testsuite/gfortran.dg/eof_3.f90
index 83d652912bc..f1d5098c77b 100644
--- a/gcc/testsuite/gfortran.dg/eof_3.f90
+++ b/gcc/testsuite/gfortran.dg/eof_3.f90
@@ -4,5 +4,6 @@ program test
open(unit=32,status="scratch",access="sequential",form="unformatted")
read(32,end=100)
100 continue
+backspace(32)
write (32)
end program test
diff --git a/gcc/testsuite/gfortran.dg/generic_23.f03 b/gcc/testsuite/gfortran.dg/generic_23.f03
new file mode 100644
index 00000000000..eab185b483d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/generic_23.f03
@@ -0,0 +1,67 @@
+! { dg-do run }
+! Test the fix for PR43945 in which the over-ridding of 'doit' and
+! 'getit' in type 'foo2' was missed in the specific binding to 'do' and 'get'.
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+! and reported to clf by Salvatore Filippone <sfilippone@uniroma2.it>
+!
+module foo_mod
+ type foo
+ integer :: i
+ contains
+ procedure, pass(a) :: doit
+ procedure, pass(a) :: getit
+ generic, public :: do => doit
+ generic, public :: get => getit
+ end type foo
+ private doit,getit
+contains
+ subroutine doit(a)
+ class(foo) :: a
+ a%i = 1
+ write(*,*) 'FOO%DOIT base version'
+ end subroutine doit
+ function getit(a) result(res)
+ class(foo) :: a
+ integer :: res
+ res = a%i
+ end function getit
+end module foo_mod
+
+module foo2_mod
+ use foo_mod
+ type, extends(foo) :: foo2
+ integer :: j
+ contains
+ procedure, pass(a) :: doit => doit2
+ procedure, pass(a) :: getit => getit2
+!!$ generic, public :: do => doit
+!!$ generic, public :: get => getit
+ end type foo2
+ private doit2, getit2
+
+contains
+
+ subroutine doit2(a)
+ class(foo2) :: a
+ a%i = 2
+ a%j = 3
+ end subroutine doit2
+ function getit2(a) result(res)
+ class(foo2) :: a
+ integer :: res
+ res = a%j
+ end function getit2
+end module foo2_mod
+
+program testd15
+ use foo2_mod
+ type(foo2) :: af2
+
+ call af2%do()
+ if (af2%i .ne. 2) call abort
+ if (af2%get() .ne. 3) call abort
+
+end program testd15
+
+! { dg-final { cleanup-modules "foo_mod foo2_mod" } }
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr44536.f90 b/gcc/testsuite/gfortran.dg/gomp/pr44536.f90
new file mode 100644
index 00000000000..0dc896dccea
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr44536.f90
@@ -0,0 +1,10 @@
+! PR fortran/44536
+! { dg-do compile }
+! { dg-options "-fopenmp" }
+ subroutine foo (a, i, j)
+ integer, dimension(:) :: a
+ integer :: i, j
+!$omp parallel default(none) shared(i, j) ! { dg-error "enclosing parallel" }
+ j=a(i) ! { dg-error "not specified in" }
+!$omp end parallel
+ end subroutine
diff --git a/gcc/testsuite/gfortran.dg/gomp/sharing-3.f90 b/gcc/testsuite/gfortran.dg/gomp/sharing-3.f90
index 5c1581454b2..05be38283a9 100644
--- a/gcc/testsuite/gfortran.dg/gomp/sharing-3.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/sharing-3.f90
@@ -29,7 +29,7 @@ subroutine foo (vara, varb, varc, vard, n)
!$omp master
vara(1) = 1 ! { dg-error "not specified" }
varb(1) = 1 ! Assumed-size is predetermined
- varc(1) = 1 ! { dg-error "not specified" "" { xfail *-*-* } }
+ varc(1) = 1 ! { dg-error "not specified" }
vard(1) = 1 ! { dg-error "not specified" }
vare(1) = 1 ! { dg-error "not specified" }
!$omp end master
diff --git a/gcc/testsuite/gfortran.dg/ibclr_1.f90 b/gcc/testsuite/gfortran.dg/ibclr_1.f90
new file mode 100644
index 00000000000..3932789ec4f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/ibclr_1.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+program a
+ integer :: i = 42
+ integer l
+ l = ibclr(i, -1) ! { dg-error "must be nonnegative" }
+ l = ibclr(i, 65) ! { dg-error "must be less than" }
+end program a
diff --git a/gcc/testsuite/gfortran.dg/ibits_1.f90 b/gcc/testsuite/gfortran.dg/ibits_1.f90
new file mode 100644
index 00000000000..2bcbe829b86
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/ibits_1.f90
@@ -0,0 +1,13 @@
+! { dg-do compile }
+!
+! PR fortran/44346
+! Original test sumbitted by Vittorio Zecca, zeccav at gmail dot com.
+! Modified by Steven G. Kargl for dejagnu testsuite.
+!
+program a
+ integer :: j, i = 42
+ j = ibits(i, -1, 1) ! { dg-error "must be nonnegative" }
+ j = ibits(i, 1, -1) ! { dg-error "must be nonnegative" }
+ j = ibits(i, 100, 100) ! { dg-error "must be less than" }
+end program a
+
diff --git a/gcc/testsuite/gfortran.dg/ibset_1.f90 b/gcc/testsuite/gfortran.dg/ibset_1.f90
new file mode 100644
index 00000000000..2ff261dbd2b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/ibset_1.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+program a
+ integer :: i = 42
+ integer l
+ l = ibset(i, -1) ! { dg-error "must be nonnegative" }
+ l = ibset(i, 65) ! { dg-error "must be less than" }
+end program a
diff --git a/gcc/testsuite/gfortran.dg/import8.f90 b/gcc/testsuite/gfortran.dg/import8.f90
new file mode 100644
index 00000000000..0d88e625b81
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/import8.f90
@@ -0,0 +1,18 @@
+! { dg-do compile }
+!
+! PR fortran/44614
+!
+!
+
+implicit none
+
+type, abstract :: Connection
+end type Connection
+
+abstract interface
+ subroutine generic_desc(self)
+ ! <<< missing IMPORT
+ class(Connection) :: self ! { dg-error "has not been declared within the interface" }
+ end subroutine generic_desc
+end interface
+end
diff --git a/gcc/testsuite/gfortran.dg/interface_proc_end.f90 b/gcc/testsuite/gfortran.dg/interface_proc_end.f90
index ab95b794268..2fc9921df41 100644
--- a/gcc/testsuite/gfortran.dg/interface_proc_end.f90
+++ b/gcc/testsuite/gfortran.dg/interface_proc_end.f90
@@ -14,6 +14,5 @@
REAL :: TLS1,TLS2
END ! OK
END INTERFACE
- end ! { dg-error "END SUBROUTINE statement" }
- end module ! { dg-error "END SUBROUTINE statement" }
-! { dg-error "Unexpected end of file" "" { target "*-*-*" } 0 }
+ end subroutine
+ end module
diff --git a/gcc/testsuite/gfortran.dg/ltrans-7.f90 b/gcc/testsuite/gfortran.dg/ltrans-7.f90
index 2829b2cda18..9c9bcf939eb 100644
--- a/gcc/testsuite/gfortran.dg/ltrans-7.f90
+++ b/gcc/testsuite/gfortran.dg/ltrans-7.f90
@@ -1,5 +1,6 @@
! { dg-do compile }
! { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" }
+! { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all -march=i486" { target { i?86-*-* && ilp32 } } }
Program FOO
IMPLICIT INTEGER (I-N)
diff --git a/gcc/testsuite/gfortran.dg/mvbits_9.f90 b/gcc/testsuite/gfortran.dg/mvbits_9.f90
new file mode 100644
index 00000000000..952286b09a6
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/mvbits_9.f90
@@ -0,0 +1,19 @@
+! { dg-do compile }
+!
+! PR fortran/44346
+! Original test sumbitted by Vittorio Zecca, zeccav at gmail dot com.
+! Modified by Steven G. Kargl for dejagnu testsuite.
+!
+program a
+ integer :: n = 42
+ ! 64 + 3 > bitsize(n)
+ call mvbits(n, 64, 3, n, 1) ! { dg-error "must be less than" }
+ ! 64 + 2 > bitsize(n)
+ call mvbits(n, 30, 2, n, 64) ! { dg-error "must be less than" }
+ ! LEN negative
+ call mvbits(n, 30, -2, n, 30) ! { dg-error "must be nonnegative" }
+ ! TOPOS negative
+ call mvbits(n, 30, 2, n, -3) ! { dg-error "must be nonnegative" }
+ ! FROMPOS negative
+ call mvbits(n, -1, 2, n, 3) ! { dg-error "must be nonnegative" }
+end program a
diff --git a/gcc/testsuite/gfortran.dg/nan_6.f90 b/gcc/testsuite/gfortran.dg/nan_6.f90
new file mode 100644
index 00000000000..8f0af294420
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/nan_6.f90
@@ -0,0 +1,99 @@
+! { dg-do run }
+! { dg-add-options ieee }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
+!
+! List-directed part of PR fortran/43298
+! and follow up to PR fortran/34319.
+!
+! Check handling of "NAN(alphanum)"
+!
+character(len=200) :: str
+real :: r
+complex :: z
+
+! read_real:
+
+r = 1.0
+str = 'INfinity' ; read(str,*) r
+if (r < 0 .or. r /= r*1.1) call abort()
+
+r = 1.0
+str = '-INF' ; read(str,*) r
+if (r > 0 .or. r /= r*1.1) call abort()
+
+r = 1.0
+str = '+INF' ; read(str,*) r
+if (r < 0 .or. r /= r*1.1) call abort()
+
+r = 1.0
+str = '-inFiniTY' ; read(str,*) r
+if (r > 0 .or. r /= r*1.1) call abort()
+
+r = 1.0
+str = 'NAN' ; read(str,*) r
+if (.not. isnan(r)) call abort()
+
+r = 1.0
+str = '-NAN' ; read(str,*) r
+if (.not. isnan(r)) call abort()
+
+r = 1.0
+str = '+NAN' ; read(str,*) r
+if (.not. isnan(r)) call abort()
+
+r = 1.0
+str = 'NAN(0x111)' ; read(str,*) r
+if (.not. isnan(r)) call abort()
+
+r = 1.0
+str = '-NAN(123)' ; read(str,*) r
+if (.not. isnan(r)) call abort()
+
+r = 1.0
+str = '+NAN(0xFFE)' ; read(str,*) r
+if (.not. isnan(r)) call abort()
+
+
+! parse_real
+
+z = cmplx(-2.0,-4.0)
+str = '(0.0,INfinity)' ; read(str,*) z
+if (aimag(z) < 0 .or. aimag(z) /= aimag(z)*1.1) call abort()
+
+z = cmplx(-2.0,-4.0)
+str = '(-INF,0.0)' ; read(str,*) z
+if (real(z) > 0 .or. real(z) /= real(z)*1.1) call abort()
+
+z = cmplx(-2.0,-4.0)
+str = '(0.0,+INF)' ; read(str,*) z
+if (aimag(z) < 0 .or. aimag(z) /= aimag(z)*1.1) call abort()
+
+z = cmplx(-2.0,-4.0)
+str = '(-inFiniTY,0.0)' ; read(str,*) z
+if (real(z) > 0 .or. real(z) /= real(z)*1.1) call abort()
+
+z = cmplx(-2.0,-4.0)
+str = '(NAN,0.0)' ; read(str,*) z
+if (.not. isnan(real(z))) call abort()
+
+z = cmplx(-2.0,-4.0)
+str = '(0.0,-NAN)' ; read(str,*) z
+if (.not. isnan(aimag(z))) call abort()
+
+z = cmplx(-2.0,-4.0)
+str = '(+NAN,0.0)' ; read(str,*) z
+if (.not. isnan(real(z))) call abort()
+
+z = cmplx(-2.0,-4.0)
+str = '(NAN(0x111),0.0)' ; read(str,*) z
+if (.not. isnan(real(z))) call abort()
+
+z = cmplx(-2.0,-4.0)
+str = '(0.0,-NaN(123))' ; read(str,*) z
+if (.not. isnan(aimag(z))) call abort()
+
+z = cmplx(-2.0,-4.0)
+str = '(+nan(0xFFE),0.0)' ; read(str,*) z
+if (.not. isnan(real(z))) call abort()
+
+end
diff --git a/gcc/testsuite/gfortran.dg/pr43688.f90 b/gcc/testsuite/gfortran.dg/pr43688.f90
new file mode 100644
index 00000000000..face02212b8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr43688.f90
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! { dg-options "-O0 -fipa-reference" }
+
+ subroutine sub
+ type :: a
+ integer :: i = 42
+ end type a
+ type(a), target :: dt(2)
+ integer, pointer :: ip(:)
+ ip => dt%i
+ end subroutine
diff --git a/gcc/testsuite/gfortran.dg/pr43866.f90 b/gcc/testsuite/gfortran.dg/pr43866.f90
new file mode 100644
index 00000000000..abfdaa1557f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr43866.f90
@@ -0,0 +1,44 @@
+! PR middle-end/43866
+! { dg-do run }
+! { dg-options "-funswitch-loops -fbounds-check" }
+
+MODULE PR43866
+ IMPLICIT NONE
+ TYPE TT
+ REAL(KIND=4), DIMENSION(:,:), POINTER :: A
+ REAL(KIND=8), DIMENSION(:,:), POINTER :: B
+ END TYPE
+CONTAINS
+ SUBROUTINE FOO(M,X,Y,T)
+ TYPE(TT), POINTER :: M
+ INTEGER, INTENT(IN) :: Y, X
+ INTEGER :: C, D
+ LOGICAL :: T
+ REAL(KIND = 4), DIMENSION(:,:), POINTER :: P
+ REAL(KIND = 8), DIMENSION(:,:), POINTER :: Q
+
+ Q => M%B
+ P => M%A
+ DO C=1,X
+ DO D=C+1,Y
+ IF (T) THEN
+ P(D,C)=P(C,D)
+ ELSE
+ Q(D,C)=Q(C,D)
+ ENDIF
+ ENDDO
+ ENDDO
+ END SUBROUTINE FOO
+END MODULE PR43866
+
+ USE PR43866
+ TYPE(TT), POINTER :: Q
+ INTEGER, PARAMETER :: N=17
+ ALLOCATE (Q)
+ NULLIFY (Q%A)
+ ALLOCATE (Q%B(N,N))
+ Q%B=0
+ CALL FOO (Q,N,N,.FALSE.)
+END
+
+! { dg-final { cleanup-modules "pr43866" } }
diff --git a/gcc/testsuite/gfortran.dg/pr44592.f90 b/gcc/testsuite/gfortran.dg/pr44592.f90
new file mode 100644
index 00000000000..8b043ba33ed
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr44592.f90
@@ -0,0 +1,20 @@
+! { dg-do run }
+! { dg-options "-O3" }
+! From forall_12.f90
+! Fails with loop reversal at -O3
+!
+ character(len=1) :: b(4) = (/"1","2","3","4"/), c(4)
+ c = b
+ i = 1
+ ! This statement must be here for the abort below
+ b(1:3)(i:i) = b(2:4)(i:i)
+
+ b = c
+ b(4:2:-1)(i:i) = b(3:1:-1)(i:i)
+
+ ! This fails. If the condition is printed, the result is F F F F
+ if (any (b .ne. (/"1","1","2","3"/))) i = 2
+ print *, b
+ print *, b .ne. (/"1","1","2","3"/)
+ if (i == 2) call abort
+end
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_27.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_27.f90
new file mode 100644
index 00000000000..83f09598110
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_27.f90
@@ -0,0 +1,20 @@
+! { dg-do compile }
+!
+! PR fortran/44446
+!
+! Contributed by Marco Restelli.
+!
+! Procedure pointer with PROTECTED was wrongly rejected.
+!
+module m
+ implicit none
+ abstract interface
+ pure function i_f(x) result(y)
+ real, intent(in) :: x
+ real :: y
+ end function i_f
+ end interface
+ procedure(i_f), pointer, protected :: p_f => null()
+end module m
+
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_28.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_28.f90
new file mode 100644
index 00000000000..8754d8e2982
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_28.f90
@@ -0,0 +1,39 @@
+! { dg-do compile }
+!
+! PR 44718: Procedure-pointer name is wrongly regarded as "external procedure"
+!
+! Contributed by John McFarland <john.mcfarland@swri.org>
+
+MODULE m
+
+ IMPLICIT NONE
+
+CONTAINS
+
+ FUNCTION func(x) RESULT(y)
+ INTEGER :: x,y
+ y = x *2
+ END FUNCTION func
+
+ SUBROUTINE sub(x)
+ INTEGER :: x
+ PRINT*, x
+ END SUBROUTINE sub
+
+
+ SUBROUTINE use_func()
+ PROCEDURE(func), POINTER :: f
+ INTEGER :: y
+ f => func
+ y = f(2)
+ END SUBROUTINE use_func
+
+ SUBROUTINE use_sub()
+ PROCEDURE(sub), POINTER :: f
+ f => sub
+ CALL f(2)
+ END SUBROUTINE use_sub
+
+END MODULE m
+
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc/testsuite/gfortran.dg/read_infnan_1.f90 b/gcc/testsuite/gfortran.dg/read_infnan_1.f90
new file mode 100644
index 00000000000..515a6900270
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/read_infnan_1.f90
@@ -0,0 +1,31 @@
+! { dg-do run }
+! { dg-add-options ieee }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
+
+! PR43298 Fortran library does not read in NaN, NaN(), -Inf, or Inf
+
+! Formatted READ part of PR fortran/43298
+
+! Test case prepared by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+program pr43298
+ real(4) :: x4(7)
+ real(8) :: x8(7)
+ character(80) :: output
+
+open(10, status='scratch')
+! 0123456789012345678901234567890123456789012345678901234567890123456789
+write(10,'(a)') "inf nan infinity NaN(dx) -INf NAN InFiNiTy"
+rewind(10)
+x4 = 0.0_4
+x8 = 0.0_8
+read(10,'(7f10.3)') x4
+rewind(10)
+read(10,'(7f10.3)') x8
+write (output, '("x4 =",7G6.0)') x4
+if (output.ne."x4 = +Inf NaN +Inf NaN -Inf NaN +Inf") call abort
+write (output, '("x8 =",7G6.0)') x8
+if (output.ne."x8 = +Inf NaN +Inf NaN -Inf NaN +Inf") call abort
+!print '("x4 =",7G6.0)', x4
+!print '("x8 =",7G6.0)', x8
+end program pr43298
+
diff --git a/gcc/testsuite/gfortran.dg/selected_char_kind_4.f90 b/gcc/testsuite/gfortran.dg/selected_char_kind_4.f90
new file mode 100644
index 00000000000..046ddf0e74c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/selected_char_kind_4.f90
@@ -0,0 +1,24 @@
+! { dg-do run }
+!
+! Check that runtime result values of SELECTED_CHAR_KIND agree with
+! front-end simplification results.
+!
+ implicit none
+ character(len=20) :: s
+
+ s = "ascii"
+ if (selected_char_kind(s) /= selected_char_kind("ascii")) call abort
+
+ s = "default"
+ if (selected_char_kind(s) /= selected_char_kind("default")) call abort
+
+ s = "iso_10646"
+ if (selected_char_kind(s) /= selected_char_kind("iso_10646")) call abort
+
+ s = ""
+ if (selected_char_kind(s) /= selected_char_kind("")) call abort
+
+ s = "invalid"
+ if (selected_char_kind(s) /= selected_char_kind("invalid")) call abort
+
+end
diff --git a/gcc/testsuite/gfortran.dg/selected_real_kind_1.f90 b/gcc/testsuite/gfortran.dg/selected_real_kind_1.f90
new file mode 100644
index 00000000000..0f40a595d2f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/selected_real_kind_1.f90
@@ -0,0 +1,10 @@
+! { dg-do "compile" }
+!
+! PR fortran/44347 - arguments of SELECTED_REAL_KIND shall be scalar
+! Testcase contributed by Vittorio Zecca <zeccav AT gmail DOT com>
+!
+
+ dimension ip(1), ir(1)
+ i = selected_real_kind(ip, i) ! { dg-error "must be a scalar" }
+ j = selected_real_kind(i, ir) ! { dg-error "must be a scalar" }
+end
diff --git a/gcc/testsuite/gfortran.dg/selected_real_kind_2.f90 b/gcc/testsuite/gfortran.dg/selected_real_kind_2.f90
new file mode 100644
index 00000000000..cf73520f930
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/selected_real_kind_2.f90
@@ -0,0 +1,32 @@
+! { dg-do run }
+! { dg-options "-std=f2008 -fall-intrinsics" }
+!
+
+integer :: p, r, rdx
+
+! Compile-time version
+
+if (selected_real_kind(radix=2) /= 4) call should_not_fail()
+if (selected_real_kind(radix=4) /= -5) call should_not_fail()
+if (selected_real_kind(precision(0.0),range(0.0),radix(0.0)) /= kind(0.0)) &
+ call should_not_fail()
+if (selected_real_kind(precision(0.0d0),range(0.0d0),radix(0.0d0)) /= kind(0.0d0)) &
+ call should_not_fail()
+
+! Run-time version
+
+rdx = 2
+if (selected_real_kind(radix=rdx) /= 4) call abort()
+rdx = 4
+if (selected_real_kind(radix=rdx) /= -5) call abort()
+
+rdx = radix(0.0)
+p = precision(0.0)
+r = range(0.0)
+if (selected_real_kind(p,r,rdx) /= kind(0.0)) call abort()
+
+rdx = radix(0.0d0)
+p = precision(0.0d0)
+r = range(0.0d0)
+if (selected_real_kind(p,r,rdx) /= kind(0.0d0)) call abort()
+end
diff --git a/gcc/testsuite/gfortran.dg/selected_real_kind_3.f90 b/gcc/testsuite/gfortran.dg/selected_real_kind_3.f90
new file mode 100644
index 00000000000..d24d877acfe
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/selected_real_kind_3.f90
@@ -0,0 +1,6 @@
+! { dg-do compile }
+! { dg-options "-std=f2003" }
+!
+print *, selected_real_kind(p=precision(0.0),radix=2) ! { dg-error "Fortran 2008" }
+print *, selected_real_kind() ! { dg-error "neither 'P' nor 'R' argument" }
+end
diff --git a/gcc/testsuite/gfortran.dg/semicolon_fixed.f b/gcc/testsuite/gfortran.dg/semicolon_fixed.f
index 2c667ae0cb9..7bd0ada825c 100644
--- a/gcc/testsuite/gfortran.dg/semicolon_fixed.f
+++ b/gcc/testsuite/gfortran.dg/semicolon_fixed.f
@@ -1,9 +1,11 @@
! { dg-do compile }
-! PR 19259 Semicolon cannot start a line
+! { dg-options "-std=f2003" }
+!
+! PR 19259 Semicolon cannot start a line (in F2003)
x=1; y=1;
x=2;;
x=3;
- ; ! { dg-error "Semicolon at" }
- ;; ! { dg-error "Semicolon at" }
+ ; ! { dg-error "Fortran 2008: Semicolon at" }
+ ;; ! { dg-error "Fortran 2008: Semicolon at" }
900 ; ! { dg-error "Semicolon at" }
end
diff --git a/gcc/testsuite/gfortran.dg/semicolon_fixed_2.f b/gcc/testsuite/gfortran.dg/semicolon_fixed_2.f
new file mode 100644
index 00000000000..8ee444c3ff5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/semicolon_fixed_2.f
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+
+! PR 19259 Semicolon cannot start a line
+! but it F2008 it can!
+ x=1; y=1;
+ x=2;;
+ x=3;
+ ; ! OK
+ ;; ! OK
+ 900 ; ! { dg-error "Semicolon at" }
+ end
diff --git a/gcc/testsuite/gfortran.dg/semicolon_free.f90 b/gcc/testsuite/gfortran.dg/semicolon_free.f90
index 28e8da2b285..4d05d83f86b 100644
--- a/gcc/testsuite/gfortran.dg/semicolon_free.f90
+++ b/gcc/testsuite/gfortran.dg/semicolon_free.f90
@@ -1,4 +1,5 @@
! { dg-do compile }
+! { dg-options "-std=f2003" }
! PR 19259 Semicolon cannot start a line
x=1; y=1;
x=2;;
diff --git a/gcc/testsuite/gfortran.dg/semicolon_free_2.f90 b/gcc/testsuite/gfortran.dg/semicolon_free_2.f90
new file mode 100644
index 00000000000..2fae26e1607
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/semicolon_free_2.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+! PR 19259 Semicolon cannot start a line
+x=1; y=1;
+x=2;;
+x=3;
+ ; ! OK
+;; ! OK
+111 ; ! { dg-error "Semicolon at" }
+end
diff --git a/gcc/testsuite/gfortran.dg/type_decl_1.f90 b/gcc/testsuite/gfortran.dg/type_decl_1.f90
new file mode 100644
index 00000000000..93928652a05
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/type_decl_1.f90
@@ -0,0 +1,30 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+!
+! Fortran 2008: TYPE ( intrinsic-type-spec )
+!
+implicit none
+type(integer) :: a
+type(real) :: b
+type(logical ) :: c
+type(character) :: d
+type(double precision) :: e
+
+type(integer(8)) :: f
+type(real(kind=4)) :: g
+type(logical ( kind = 1 ) ) :: h
+type(character (len=10,kind=1) ) :: i
+
+type(double complex) :: j ! { dg-error "Extension: DOUBLE COMPLEX" }
+end
+
+module m
+ integer, parameter :: k4 = 4
+end module m
+
+type(integer (kind=k4)) function f()
+ use m
+ f = 42
+end
+
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc/testsuite/gfortran.dg/type_decl_2.f90 b/gcc/testsuite/gfortran.dg/type_decl_2.f90
new file mode 100644
index 00000000000..6525880e06e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/type_decl_2.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-std=f2003" }
+!
+! Fortran 2008: TYPE ( intrinsic-type-spec )
+!
+implicit none
+type(integer) :: a ! { dg-error "Fortran 2008" }
+type(real) :: b ! { dg-error "Fortran 2008" }
+type(logical) :: c ! { dg-error "Fortran 2008" }
+type(character) :: d ! { dg-error "Fortran 2008" }
+type(double precision) :: e ! { dg-error "Fortran 2008" }
+end
diff --git a/gcc/testsuite/gfortran.dg/typebound_call_14.f03 b/gcc/testsuite/gfortran.dg/typebound_call_14.f03
new file mode 100644
index 00000000000..e8cbf846e5d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_call_14.f03
@@ -0,0 +1,29 @@
+! { dg-do compile }
+!
+! PR 44211: [OOP] ICE with TBP of pointer component of derived type array
+!
+! Original test case by Hans-Werner Boschmann <boschmann@tp1.physik.uni-siegen.de>
+! Modified by Janus Weil <janus@gcc.gnu.org>
+
+module ice_module
+ type::ice_type
+ class(ice_type),pointer::next
+ contains
+ procedure::ice_sub
+ procedure::ice_fun
+ end type ice_type
+contains
+ subroutine ice_sub(this)
+ class(ice_type)::this
+ end subroutine
+ integer function ice_fun(this)
+ class(ice_type)::this
+ end function
+ subroutine ice()
+ type(ice_type),dimension(2)::ice_array
+ call ice_array(1)%next%ice_sub()
+ print *,ice_array(2)%next%ice_fun()
+ end subroutine
+end module ice_module
+
+! { dg-final { cleanup-modules "ice_module" } }
diff --git a/gcc/testsuite/gfortran.dg/typebound_call_15.f03 b/gcc/testsuite/gfortran.dg/typebound_call_15.f03
new file mode 100644
index 00000000000..ac6a668cc46
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_call_15.f03
@@ -0,0 +1,25 @@
+! { dg-do compile }
+!
+! PR 44558: [OOP] ICE on invalid code: called TBP subroutine as TBP function
+!
+! Contributed by Hans-Werner Boschmann <boschmann@tp1.physik.uni-siegen.de>
+
+module ice5
+ type::a_type
+ contains
+ procedure::a_subroutine_1
+ procedure::a_subroutine_2
+ end type a_type
+contains
+ real function a_subroutine_1(this)
+ class(a_type)::this
+ real::res
+ res=this%a_subroutine_2() ! { dg-error "should be a FUNCTION" }
+ end function
+ subroutine a_subroutine_2(this)
+ class(a_type)::this
+ call this%a_subroutine_1() ! { dg-error "should be a SUBROUTINE" }
+ end subroutine
+end module ice5
+
+! { dg-final { cleanup-modules "ice5" } }
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_14.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_14.f03
new file mode 100644
index 00000000000..766a0ef66c1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_14.f03
@@ -0,0 +1,33 @@
+! { dg-do compile }
+!
+! PR 40117: [OOP][F2008] Type-bound procedure: allow list after PROCEDURE
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+module m
+
+implicit none
+
+type :: t
+contains
+ procedure :: foo, bar, baz
+end type
+
+contains
+
+ subroutine foo (this)
+ class(t) :: this
+ end subroutine
+
+ real function bar (this)
+ class(t) :: this
+ end function
+
+ subroutine baz (this, par)
+ class(t) :: this
+ integer :: par
+ end subroutine
+
+end
+
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_15.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_15.f03
new file mode 100644
index 00000000000..37907b3f4df
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_15.f03
@@ -0,0 +1,34 @@
+! { dg-do compile }
+! { dg-options "-std=f2003" }
+!
+! PR 40117: [OOP][F2008] Type-bound procedure: allow list after PROCEDURE
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+module m
+
+implicit none
+
+type :: t
+contains
+ procedure :: foo
+ procedure :: bar, baz ! { dg-error "PROCEDURE list" }
+end type
+
+contains
+
+ subroutine foo (this)
+ class(t) :: this
+ end subroutine
+
+ subroutine bar (this)
+ class(t) :: this
+ end subroutine
+
+ subroutine baz (this)
+ class(t) :: this
+ end subroutine
+
+end
+
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_16.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_16.f03
new file mode 100644
index 00000000000..828f5102204
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_16.f03
@@ -0,0 +1,58 @@
+! { dg-do compile }
+!
+! PR 44549: [OOP][F2008] Type-bound procedure: bogus error from list after PROCEDURE
+!
+! Contributed by Dominique d'Humieres <dominiq@lps.ens.fr>
+
+MODULE rational_numbers
+ IMPLICIT NONE
+ PRIVATE
+ TYPE,PUBLIC :: rational
+ PRIVATE
+ INTEGER n,d
+
+ CONTAINS
+ ! ordinary type-bound procedure
+ PROCEDURE :: real => rat_to_real
+ ! specific type-bound procedures for generic support
+ PROCEDURE,PRIVATE :: rat_asgn_i, rat_plus_rat, rat_plus_i
+ PROCEDURE,PRIVATE,PASS(b) :: i_plus_rat
+ ! generic type-bound procedures
+ GENERIC :: ASSIGNMENT(=) => rat_asgn_i
+ GENERIC :: OPERATOR(+) => rat_plus_rat, rat_plus_i, i_plus_rat
+ END TYPE
+ CONTAINS
+ ELEMENTAL REAL FUNCTION rat_to_real(this) RESULT(r)
+ CLASS(rational),INTENT(IN) :: this
+ r = REAL(this%n)/this%d
+ END FUNCTION
+
+ ELEMENTAL SUBROUTINE rat_asgn_i(a,b)
+ CLASS(rational),INTENT(OUT) :: a
+ INTEGER,INTENT(IN) :: b
+ a%n = b
+ a%d = 1
+ END SUBROUTINE
+
+ ELEMENTAL TYPE(rational) FUNCTION rat_plus_i(a,b) RESULT(r)
+ CLASS(rational),INTENT(IN) :: a
+ INTEGER,INTENT(IN) :: b
+ r%n = a%n + b*a%d
+ r%d = a%d
+ END FUNCTION
+
+ ELEMENTAL TYPE(rational) FUNCTION i_plus_rat(a,b) RESULT(r)
+ INTEGER,INTENT(IN) :: a
+ CLASS(rational),INTENT(IN) :: b
+ r%n = b%n + a*b%d
+ r%d = b%d
+ END FUNCTION
+
+ ELEMENTAL TYPE(rational) FUNCTION rat_plus_rat(a,b) RESULT(r)
+ CLASS(rational),INTENT(IN) :: a,b
+ r%n = a%n*b%d + b%n*a%d
+ r%d = a%d*b%d
+ END FUNCTION
+END
+
+! { dg-final { cleanup-modules "rational_numbers" } }
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_4.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_4.f03
index 92adc1a852a..60aa728a40f 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_4.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_4.f03
@@ -17,12 +17,12 @@ MODULE testmod
PROCEDURE ? ! { dg-error "Expected binding name" }
PROCEDURE :: p2 => ! { dg-error "Expected binding target" }
PROCEDURE :: p3 =>, ! { dg-error "Expected binding target" }
- PROCEDURE p4, ! { dg-error "Junk after" }
- PROCEDURE :: p5 => proc2, ! { dg-error "Junk after" }
+ PROCEDURE p4, ! { dg-error "Expected binding name" }
+ PROCEDURE :: p5 => proc2, ! { dg-error "Expected binding name" }
PROCEDURE :: p0 => proc3 ! { dg-error "already a procedure" }
PROCEDURE, PASS p6 ! { dg-error "::" }
PROCEDURE, PASS NON_OVERRIDABLE ! { dg-error "Expected" }
- PROCEDURE PASS :: ! { dg-error "Junk after" }
+ PROCEDURE PASS :: ! { dg-error "Syntax error" }
PROCEDURE, PASS (x ! { dg-error "Expected" }
PROCEDURE, PASS () ! { dg-error "Expected" }
PROCEDURE, NOPASS, PASS ! { dg-error "illegal PASS" }
diff --git a/gcc/testsuite/gfortran.dg/unpack_bounds_1.f90 b/gcc/testsuite/gfortran.dg/unpack_bounds_1.f90
index 360790b5705..360790b5705 100755..100644
--- a/gcc/testsuite/gfortran.dg/unpack_bounds_1.f90
+++ b/gcc/testsuite/gfortran.dg/unpack_bounds_1.f90
diff --git a/gcc/testsuite/gfortran.dg/unpack_bounds_2.f90 b/gcc/testsuite/gfortran.dg/unpack_bounds_2.f90
index fd049f5abbb..fd049f5abbb 100755..100644
--- a/gcc/testsuite/gfortran.dg/unpack_bounds_2.f90
+++ b/gcc/testsuite/gfortran.dg/unpack_bounds_2.f90
diff --git a/gcc/testsuite/gfortran.dg/unpack_bounds_3.f90 b/gcc/testsuite/gfortran.dg/unpack_bounds_3.f90
index c6734b14c1f..c6734b14c1f 100755..100644
--- a/gcc/testsuite/gfortran.dg/unpack_bounds_3.f90
+++ b/gcc/testsuite/gfortran.dg/unpack_bounds_3.f90
diff --git a/gcc/testsuite/gfortran.dg/warn_conversion.f90 b/gcc/testsuite/gfortran.dg/warn_conversion.f90
index f658b655cae..c8f0e23e2ff 100644
--- a/gcc/testsuite/gfortran.dg/warn_conversion.f90
+++ b/gcc/testsuite/gfortran.dg/warn_conversion.f90
@@ -18,7 +18,6 @@ SUBROUTINE pr27866c4
integer(kind=4) :: i4
i4 = 2.3 ! { dg-warning "conversion" }
i1 = 500 ! { dg-error "overflow" }
- ! { dg-warning "conversion" "" { target *-*-* } 20 }
a = 2**26-1 ! assignment INTEGER(4) to REAL(4) - no warning
b = 1d999 ! { dg-error "overflow" }
diff --git a/gcc/testsuite/gfortran.dg/warn_conversion_2.f90 b/gcc/testsuite/gfortran.dg/warn_conversion_2.f90
index cb3b760a5e2..c0222983a0f 100644
--- a/gcc/testsuite/gfortran.dg/warn_conversion_2.f90
+++ b/gcc/testsuite/gfortran.dg/warn_conversion_2.f90
@@ -2,5 +2,10 @@
! { dg-options "-Wconversion-extra" }
real(8) :: sqrt2
- sqrt2 = sqrt(2.0) ! { dg-warning "conversion" }
+ real x
+
+ x = 2.0
+ sqrt2 = sqrt(x) ! { dg-warning "Conversion" }
+
+ sqrt2 = sqrt(2.0) ! no warning; simplified to a constant and range checked
end
diff --git a/gcc/testsuite/gfortran.dg/whole_file_18.f90 b/gcc/testsuite/gfortran.dg/whole_file_18.f90
index dbff1859216..fac15d6ca4f 100644
--- a/gcc/testsuite/gfortran.dg/whole_file_18.f90
+++ b/gcc/testsuite/gfortran.dg/whole_file_18.f90
@@ -5,7 +5,7 @@
!
PROGRAM MAIN
REAL A
- CALL SUB(A) ! { dg-error "must have an explicit interface" }
+ CALL SUB(A) ! { dg-error "requires an explicit interface" }
END PROGRAM
SUBROUTINE SUB(A,I)
diff --git a/gcc/testsuite/gfortran.dg/whole_file_20.f03 b/gcc/testsuite/gfortran.dg/whole_file_20.f03
new file mode 100644
index 00000000000..231a5aaf283
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/whole_file_20.f03
@@ -0,0 +1,33 @@
+! { dg-do "compile" }
+! { dg-options "-fwhole-file -fcoarray=single" }
+!
+! Procedures with dummy arguments that are coarrays or polymorphic
+! must have an explicit interface in the calling routine.
+!
+
+MODULE classtype
+ type :: t
+ integer :: comp
+ end type
+END MODULE
+
+PROGRAM main
+ USE classtype
+ CLASS(t), POINTER :: tt
+
+ INTEGER :: coarr[*]
+
+ CALL coarray(coarr) ! { dg-error " must have an explicit interface" }
+ CALL polymorph(tt) ! { dg-error " must have an explicit interface" }
+END PROGRAM
+
+SUBROUTINE coarray(a)
+ INTEGER :: a[*]
+END SUBROUTINE
+
+SUBROUTINE polymorph(b)
+ USE classtype
+ CLASS(t) :: b
+END SUBROUTINE
+
+! { dg-final { cleanup-modules "classtype" } }
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr40421.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/pr40421.f90
new file mode 100644
index 00000000000..64b129efc3c
--- /dev/null
+++ b/gcc/testsuite/gfortran.fortran-torture/compile/pr40421.f90
@@ -0,0 +1,15 @@
+subroutine pr40421 (j, q, r)
+ double precision :: q(1,1), r(1,1,3)
+ save
+ integer :: i, j, m, n
+ double precision :: s, t, u
+ do i=1,2
+ do m=1,j
+ do n=1,1
+ s=q(n,m)*r(n,m,1)
+ t=q(n,m)*r(n,m,2)
+ u=q(n,m)*r(n,m,3)
+ end do
+ end do
+ end do
+end
diff --git a/gcc/testsuite/gnat.dg/class_wide2.adb b/gcc/testsuite/gnat.dg/class_wide2.adb
index b82289d5ef5..9df54bf9071 100644
--- a/gcc/testsuite/gnat.dg/class_wide2.adb
+++ b/gcc/testsuite/gnat.dg/class_wide2.adb
@@ -4,7 +4,7 @@ package body Class_Wide2 is
procedure Initialize is
Var_Acc : Class_Acc := new Grand_Child;
- Var : Grand_Child'Class := Grand_Child'Class (Var_Acc.all); -- { dg-bogus "already constrained" "" { xfail *-*-* } }
+ Var : Grand_Child'Class := Grand_Child'Class (Var_Acc.all);
begin
Var := Grand_Child'Class (Var_Acc.all);
diff --git a/gcc/testsuite/gnat.dg/noreturn3.adb b/gcc/testsuite/gnat.dg/noreturn3.adb
new file mode 100644
index 00000000000..4457373c308
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn3.adb
@@ -0,0 +1,27 @@
+-- { dg-do compile }
+
+with Ada.Exceptions;
+
+package body Noreturn3 is
+
+ procedure Raise_Error (E : Enum; ErrorMessage : String) is
+
+ function Msg return String is
+ begin
+ return "Error :" & ErrorMessage;
+ end;
+
+ begin
+ case E is
+ when One =>
+ Ada.Exceptions.Raise_Exception (Exc1'Identity, Msg);
+
+ when Two =>
+ Ada.Exceptions.Raise_Exception (Exc2'Identity, Msg);
+
+ when others =>
+ Ada.Exceptions.Raise_Exception (Exc3'Identity, Msg);
+ end case;
+ end;
+
+end Noreturn3;
diff --git a/gcc/testsuite/gnat.dg/noreturn3.ads b/gcc/testsuite/gnat.dg/noreturn3.ads
new file mode 100644
index 00000000000..d830a14910e
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn3.ads
@@ -0,0 +1,12 @@
+package Noreturn3 is
+
+ Exc1 : Exception;
+ Exc2 : Exception;
+ Exc3 : Exception;
+
+ type Enum is (One, Two, Three);
+
+ procedure Raise_Error (E : Enum; ErrorMessage : String);
+ pragma No_Return (Raise_Error);
+
+end Noreturn3;
diff --git a/gcc/testsuite/gnat.dg/not_null.adb b/gcc/testsuite/gnat.dg/not_null.adb
index 7d3c63dc9cd..3cbd86c1633 100644
--- a/gcc/testsuite/gnat.dg/not_null.adb
+++ b/gcc/testsuite/gnat.dg/not_null.adb
@@ -11,10 +11,8 @@ procedure not_null is
begin
declare
pragma Warnings (Off, "*null not allowed in null-excluding objects");
- pragma Warnings (Off, """Constraint_Error"" will be raised at run time");
package Inst_2 is new GPack (null);
pragma Warnings (On, "*null not allowed in null-excluding objects");
- pragma Warnings (On, """Constraint_Error"" will be raised at run time");
begin
null;
end;
diff --git a/gcc/testsuite/lib/lto.exp b/gcc/testsuite/lib/lto.exp
index 7b51fdd2f6f..7d0620faa0e 100644
--- a/gcc/testsuite/lib/lto.exp
+++ b/gcc/testsuite/lib/lto.exp
@@ -32,7 +32,7 @@ proc lto_prune_warns { text } {
# Sun ld warns about common symbols with differing sizes. Unlike GNU ld
# --warn-common (off by default), they cannot be disabled.
- regsub -all "(^|\n)ld: warning: symbol `\[^\n\]*' has differing sizes:" $text "" text
+ regsub -all "(^|\n)ld: warning: symbol \[`'\]\[^\n\]*' has differing sizes:" $text "" text
regsub -all "(^|\n)\[ \t\]*\[\(\]file \[^\n\]* value=\[^\n\]*; file \[^\n\]* value=\[^\n\]*\[)\];" $text "" text
regsub -all "(^|\n)\[ \t\]*\[^\n\]* definition taken" $text "" text
@@ -110,6 +110,7 @@ set lto_skip_list $LTO_SKIPS
load_lib dg.exp
load_lib gcc-dg.exp
+load_lib gcc.exp
# lto-obj -- compile to an object file
#
@@ -137,7 +138,13 @@ proc lto-obj { source dest optall optfile optstr xfaildata } {
lappend options "additional_flags=$optall $optfile"
set compiler_conditional_xfail_data $xfaildata
- set comp_output [${tool}_target_compile "$source" "$dest" object $options]
+
+ # Allow C source files to mix freely with other languages
+ if [ string match "*.c" $source ] then {
+ set comp_output [gcc_target_compile "$source" "$dest" object $options]
+ } else {
+ set comp_output [${tool}_target_compile "$source" "$dest" object $options]
+ }
# Prune unimportant visibility warnings before checking output.
set comp_output [lto_prune_warns $comp_output]
${tool}_check_compile "$testcase $dest assemble" $optstr $dest $comp_output
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 1a36127e95b..1cdc53b4983 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -992,6 +992,30 @@ proc check_vmx_hw_available { } {
}]
}
+proc check_ppc_recip_hw_available { } {
+ return [check_cached_effective_target ppc_recip_hw_available {
+ # Some simulators may not support FRE/FRES/FRSQRTE/FRSQRTES
+ # For now, disable on Darwin
+ if { [istarget powerpc-*-eabi] || [istarget powerpc*-*-eabispe] || [istarget *-*-darwin*]} {
+ expr 0
+ } else {
+ set options "-mpowerpc-gfxopt -mpowerpc-gpopt -mpopcntb"
+ check_runtime_nocache ppc_recip_hw_available {
+ volatile double d_recip, d_rsqrt, d_four = 4.0;
+ volatile float f_recip, f_rsqrt, f_four = 4.0f;
+ int main()
+ {
+ asm volatile ("fres %0,%1" : "=f" (f_recip) : "f" (f_four));
+ asm volatile ("fre %0,%1" : "=d" (d_recip) : "d" (d_four));
+ asm volatile ("frsqrtes %0,%1" : "=f" (f_rsqrt) : "f" (f_four));
+ asm volatile ("frsqrte %0,%1" : "=f" (d_rsqrt) : "d" (d_four));
+ return 0;
+ }
+ } $options
+ }
+ }]
+}
+
# Return 1 if the target supports executing AltiVec and Cell PPU
# instructions, 0 otherwise. Cache the result.
@@ -2972,6 +2996,8 @@ proc is-effective-target { arg } {
} else {
switch $arg {
"vmx_hw" { set selected [check_vmx_hw_available] }
+ "vsx_hw" { set selected [check_vsx_hw_available] }
+ "ppc_recip_hw" { set selected [check_ppc_recip_hw_available] }
"named_sections" { set selected [check_named_sections_available] }
"gc_sections" { set selected [check_gc_sections_available] }
"cxa_atexit" { set selected [check_cxa_atexit_available] }
@@ -2991,6 +3017,8 @@ proc is-effective-target-keyword { arg } {
# These have different names for their check_* procs.
switch $arg {
"vmx_hw" { return 1 }
+ "vsx_hw" { return 1 }
+ "ppc_recip_hw" { return 1 }
"named_sections" { return 1 }
"gc_sections" { return 1 }
"cxa_atexit" { return 1 }
@@ -3305,6 +3333,28 @@ proc check_effective_target_correct_iso_cpp_string_wchar_protos { } {
}]
}
+# Return 1 if GNU as is used.
+
+proc check_effective_target_gas { } {
+ global use_gas_saved
+ global tool
+
+ if {![info exists use_gas_saved]} {
+ # Check if the as used by gcc is GNU as.
+ set gcc_as [lindex [${tool}_target_compile "-print-prog-name=as" "" "none" ""] 0]
+ # Provide /dev/null as input, otherwise gas times out reading from
+ # stdin.
+ set status [remote_exec host "$gcc_as" "-v /dev/null"]
+ set as_output [lindex $status 1]
+ if { [ string first "GNU" $as_output ] >= 0 } {
+ set use_gas_saved 1
+ } else {
+ set use_gas_saved 0
+ }
+ }
+ return $use_gas_saved
+}
+
# Return 1 if the compiler has been configure with link-time optimization
# (LTO) support.