summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog2353
-rw-r--r--gcc/testsuite/ada/acats/tests/c4/c460011.a2
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c954013.a2
-rw-r--r--gcc/testsuite/c-c++-common/Wcast-qual-1.c (renamed from gcc/testsuite/g++.dg/warn/Wcast-qual2.C)5
-rw-r--r--gcc/testsuite/c-c++-common/fold-bitand-4.c (renamed from gcc/testsuite/gcc.dg/fold-bitand-4.c)4
-rw-r--r--gcc/testsuite/c-c++-common/pr46562-2.c13
-rw-r--r--gcc/testsuite/c-c++-common/pr46562.c13
-rw-r--r--gcc/testsuite/c-c++-common/raw-string-11.c13
-rw-r--r--gcc/testsuite/c-c++-common/uninit-D-O0.c (renamed from gcc/testsuite/gcc.dg/uninit-D-O0.c)0
-rw-r--r--gcc/testsuite/c-c++-common/uninit-D.c (renamed from gcc/testsuite/gcc.dg/uninit-D.c)0
-rw-r--r--gcc/testsuite/c-c++-common/uninit-E-O0.c (renamed from gcc/testsuite/gcc.dg/uninit-E-O0.c)0
-rw-r--r--gcc/testsuite/c-c++-common/uninit-E.c (renamed from gcc/testsuite/gcc.dg/uninit-E.c)0
-rw-r--r--gcc/testsuite/c-c++-common/uninit-F-O0.c (renamed from gcc/testsuite/gcc.dg/uninit-F-O0.c)0
-rw-r--r--gcc/testsuite/c-c++-common/uninit-F.c (renamed from gcc/testsuite/gcc.dg/uninit-F.c)0
-rw-r--r--gcc/testsuite/c-c++-common/uninit-G-O0.c (renamed from gcc/testsuite/gcc.dg/uninit-G-O0.c)0
-rw-r--r--gcc/testsuite/c-c++-common/uninit-G.c (renamed from gcc/testsuite/gcc.dg/uninit-G.c)0
-rw-r--r--gcc/testsuite/c-c++-common/vla-1.c21
-rw-r--r--gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C12
-rw-r--r--gcc/testsuite/g++.dg/conversion/base1.C20
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto22.C21
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-46336.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-47570.C25
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-abi1.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-array3.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-attribute.C63
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-compound.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-condition2.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-data2.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-missing.C39
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept5.C15
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-overflow2.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-recursion.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-using.C27
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-wstring1.C34
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C7
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype-1212.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted15.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted22.C23
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted23.C27
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted24.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted25.C10
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/dependent1.C25
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/elision2.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/enum10.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/enum9.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/implicit11.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist-array2.C12
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist-arrray1.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist38.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist46.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist47.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist48.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist49.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this4.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/move1.C15
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept02.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr45908.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr48522.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for11.C40
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for12.C116
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for13.C103
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for14.C95
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for15.C59
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for16.C21
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for17.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for2.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for3.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for9.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/regress/call1.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/regress/error-recovery1.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/regress/isnan.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/regress/template-const2.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/regress/value-dep1.C7
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv-deduce2.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv-func.C22
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/rv-return.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae10.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae11.C56
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae12.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae13.C20
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae14.C27
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae15.C12
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae16.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae17.C31
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae18.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae19.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae20.C23
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae21.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae6.C31
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae7.C20
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae8.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/sfinae9.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/union4.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic107.C15
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic108.C10
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/icf.C14
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/typedef6.C30
-rw-r--r--gcc/testsuite/g++.dg/ext/attrib32.C6
-rw-r--r--gcc/testsuite/g++.dg/ext/attrib41.C19
-rw-r--r--gcc/testsuite/g++.dg/ext/bitfield2.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/bitfield3.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/bitfield4.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/bitfield5.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/complex7.C6
-rw-r--r--gcc/testsuite/g++.dg/ext/complex8.C67
-rw-r--r--gcc/testsuite/g++.dg/ext/complex9.C8
-rw-r--r--gcc/testsuite/g++.dg/ext/is_literal_type1.C11
-rw-r--r--gcc/testsuite/g++.dg/ext/underlying_type1.C18
-rw-r--r--gcc/testsuite/g++.dg/ext/underlying_type10.C32
-rw-r--r--gcc/testsuite/g++.dg/ext/underlying_type2.C9
-rw-r--r--gcc/testsuite/g++.dg/ext/underlying_type3.C33
-rw-r--r--gcc/testsuite/g++.dg/ext/underlying_type4.C25
-rw-r--r--gcc/testsuite/g++.dg/ext/underlying_type5.C43
-rw-r--r--gcc/testsuite/g++.dg/ext/underlying_type6.C31
-rw-r--r--gcc/testsuite/g++.dg/ext/underlying_type7.C24
-rw-r--r--gcc/testsuite/g++.dg/ext/underlying_type8.C46
-rw-r--r--gcc/testsuite/g++.dg/ext/underlying_type9.C30
-rw-r--r--gcc/testsuite/g++.dg/ext/vla10.C32
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr48632.C22
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr48716.C24
-rw-r--r--gcc/testsuite/g++.dg/guality/guality.exp3
-rw-r--r--gcc/testsuite/g++.dg/inherit/pr48798.C4
-rw-r--r--gcc/testsuite/g++.dg/inherit/virtual9.C60
-rw-r--r--gcc/testsuite/g++.dg/init/ctor10.C9
-rw-r--r--gcc/testsuite/g++.dg/init/dtor4.C9
-rw-r--r--gcc/testsuite/g++.dg/init/new30.C15
-rw-r--r--gcc/testsuite/g++.dg/init/new31.C18
-rw-r--r--gcc/testsuite/g++.dg/init/new32.C16
-rw-r--r--gcc/testsuite/g++.dg/init/pr20039.C19
-rw-r--r--gcc/testsuite/g++.dg/init/pr48859.C14
-rw-r--r--gcc/testsuite/g++.dg/init/void1.C6
-rw-r--r--gcc/testsuite/g++.dg/ipa/devirt-7.C87
-rw-r--r--gcc/testsuite/g++.dg/ipa/devirt-g-1.C24
-rw-r--r--gcc/testsuite/g++.dg/lookup/koenig13.C16
-rw-r--r--gcc/testsuite/g++.dg/lto/20081109-1_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20081118_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20081119-1_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20081123_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20081204-1_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20081219_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20090302_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20090313_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20091002-1_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20091002-2_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20091002-3_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20091004-1_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/20091004-2_0.C1
-rw-r--r--gcc/testsuite/g++.dg/lto/pr48207-2_0.C10
-rw-r--r--gcc/testsuite/g++.dg/lto/pr48207-3_0.C12
-rw-r--r--gcc/testsuite/g++.dg/lto/pr48207_0.C13
-rw-r--r--gcc/testsuite/g++.dg/opt/devirt1.C4
-rw-r--r--gcc/testsuite/g++.dg/opt/devirt2.C11
-rw-r--r--gcc/testsuite/g++.dg/opt/pr23372.C15
-rw-r--r--gcc/testsuite/g++.dg/opt/pr48272.C130
-rw-r--r--gcc/testsuite/g++.dg/opt/pr48273.C10
-rw-r--r--gcc/testsuite/g++.dg/opt/pr48302.C21
-rw-r--r--gcc/testsuite/g++.dg/opt/pr48549.C63
-rw-r--r--gcc/testsuite/g++.dg/other/i386-9.C12
-rw-r--r--gcc/testsuite/g++.dg/overload/volatile1.C14
-rw-r--r--gcc/testsuite/g++.dg/parse/ambig6.C12
-rw-r--r--gcc/testsuite/g++.dg/parse/friend5.C1
-rw-r--r--gcc/testsuite/g++.dg/parse/memfnquals1.C6
-rw-r--r--gcc/testsuite/g++.dg/parse/pr34758.C28
-rw-r--r--gcc/testsuite/g++.dg/plugin/attribute_plugin.c2
-rw-r--r--gcc/testsuite/g++.dg/pr48484.C105
-rw-r--r--gcc/testsuite/g++.dg/pr48772.C35
-rw-r--r--gcc/testsuite/g++.dg/prof-robust-1.C24
-rw-r--r--gcc/testsuite/g++.dg/template/const4.C9
-rw-r--r--gcc/testsuite/g++.dg/template/crash7.C9
-rw-r--r--gcc/testsuite/g++.dg/template/dependent-expr7.C22
-rw-r--r--gcc/testsuite/g++.dg/template/dependent-expr8.C25
-rw-r--r--gcc/testsuite/g++.dg/template/fn-ptr1.C5
-rw-r--r--gcc/testsuite/g++.dg/template/incomplete6.C22
-rw-r--r--gcc/testsuite/g++.dg/template/inherit7.C21
-rw-r--r--gcc/testsuite/g++.dg/template/member9.C21
-rw-r--r--gcc/testsuite/g++.dg/template/nontype23.C9
-rw-r--r--gcc/testsuite/g++.dg/template/operator11.C25
-rw-r--r--gcc/testsuite/g++.dg/torture/pr46364.C20
-rw-r--r--gcc/testsuite/g++.dg/torture/pr48165.C38
-rw-r--r--gcc/testsuite/g++.dg/torture/pr48271.C119
-rw-r--r--gcc/testsuite/g++.dg/torture/pr48661.C77
-rw-r--r--gcc/testsuite/g++.dg/torture/pr48695.C38
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr13954.C29
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr33604.C5
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr41186.C10
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr8781.C6
-rw-r--r--gcc/testsuite/g++.dg/warn/Wconversion-null-2.C2
-rw-r--r--gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C15
-rw-r--r--gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C45
-rw-r--r--gcc/testsuite/g++.old-deja/g++.jason/conversion11.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/arg11.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/overload1.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/base1.C5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/null3.C2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20000804-1.c4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20001205-1.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20001226-1.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20010518-2.c5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20011106-2.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20020312-1.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20020604-1.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20110401-1.c22
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920501-12.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920501-4.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920520-1.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/980506-1.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr43191.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr44686.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr48136.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr48161.c24
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr48305.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr48335-1.c41
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr48381.c25
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr48517.c13
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr48734.c11
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr48742.c15
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr48767.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/920501-8.x5
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/930513-1.x5
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/960312-1.x7
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/980709-1.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/990826-0.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/cmpsi-2.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr42544.c14
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr45262.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr48197.c25
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr48717.c26
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr48809.c60
-rw-r--r--gcc/testsuite/gcc.dg/20020312-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/Waddress.c10
-rw-r--r--gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c47
-rw-r--r--gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-ext.c19
-rw-r--r--gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c48
-rw-r--r--gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-ext.c19
-rw-r--r--gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c48
-rw-r--r--gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-ext.c19
-rw-r--r--gcc/testsuite/gcc.dg/Wstrict-overflow-23.c31
-rw-r--r--gcc/testsuite/gcc.dg/anon-struct-11.c4
-rw-r--r--gcc/testsuite/gcc.dg/binop-xor1.c14
-rw-r--r--gcc/testsuite/gcc.dg/binop-xor2.c14
-rw-r--r--gcc/testsuite/gcc.dg/binop-xor3.c14
-rw-r--r--gcc/testsuite/gcc.dg/binop-xor4.c14
-rw-r--r--gcc/testsuite/gcc.dg/binop-xor5.c15
-rw-r--r--gcc/testsuite/gcc.dg/bitfld-15.c1
-rw-r--r--gcc/testsuite/gcc.dg/bitfld-16.c1
-rw-r--r--gcc/testsuite/gcc.dg/bitfld-17.c1
-rw-r--r--gcc/testsuite/gcc.dg/bitfld-18.c1
-rw-r--r--gcc/testsuite/gcc.dg/builtin-object-size-10.c26
-rw-r--r--gcc/testsuite/gcc.dg/c1x-anon-struct-1.c25
-rw-r--r--gcc/testsuite/gcc.dg/c1x-anon-struct-3.c34
-rw-r--r--gcc/testsuite/gcc.dg/c1x-typedef-1.c10
-rw-r--r--gcc/testsuite/gcc.dg/c1x-typedef-2.c18
-rw-r--r--gcc/testsuite/gcc.dg/cast-qual-3.c167
-rw-r--r--gcc/testsuite/gcc.dg/cpp/assert4.c8
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-1.c8
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-2.c8
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-3.c8
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-4.c8
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pr48204.c10
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pr48928.c10
-rw-r--r--gcc/testsuite/gcc.dg/fold-complex-1.c11
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr48591.c22
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr48716.c24
-rw-r--r--gcc/testsuite/gcc.dg/graphite/block-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/graphite/block-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/graphite/block-7.c1
-rw-r--r--gcc/testsuite/gcc.dg/graphite/block-8.c1
-rw-r--r--gcc/testsuite/gcc.dg/guality/guality.exp3
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr36977.c32
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr45882.c30
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr48466.c41
-rw-r--r--gcc/testsuite/gcc.dg/guality/vla-1.c3
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c6
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c6
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c6
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr45644.c1
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr48195.c25
-rw-r--r--gcc/testsuite/gcc.dg/large-size-array-5.c9
-rw-r--r--gcc/testsuite/gcc.dg/lto/20081204-1_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20081224_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20090116_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20090126-2_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20090206-2_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20090210_0.c3
-rw-r--r--gcc/testsuite/gcc.dg/lto/20090219_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091013-1_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091014-1_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091015-1_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091016-1_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091020-1_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091020-2_0.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/pr48622_0.c93
-rw-r--r--gcc/testsuite/gcc.dg/matrix/matrix.exp6
-rw-r--r--gcc/testsuite/gcc.dg/missing-field-init-2.c3
-rw-r--r--gcc/testsuite/gcc.dg/mtune.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr15347.c10
-rw-r--r--gcc/testsuite/gcc.dg/pr35445.c6
-rw-r--r--gcc/testsuite/gcc.dg/pr42629.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr47917.c38
-rw-r--r--gcc/testsuite/gcc.dg/pr48134.c31
-rw-r--r--gcc/testsuite/gcc.dg/pr48141.c17
-rw-r--r--gcc/testsuite/gcc.dg/pr48144.c16
-rw-r--r--gcc/testsuite/gcc.dg/pr48156.c45
-rw-r--r--gcc/testsuite/gcc.dg/pr48203.c51
-rw-r--r--gcc/testsuite/gcc.dg/pr48213.c14
-rw-r--r--gcc/testsuite/gcc.dg/pr48235.c58
-rw-r--r--gcc/testsuite/gcc.dg/pr48335-1.c48
-rw-r--r--gcc/testsuite/gcc.dg/pr48335-2.c58
-rw-r--r--gcc/testsuite/gcc.dg/pr48335-3.c48
-rw-r--r--gcc/testsuite/gcc.dg/pr48335-4.c39
-rw-r--r--gcc/testsuite/gcc.dg/pr48335-5.c38
-rw-r--r--gcc/testsuite/gcc.dg/pr48335-6.c46
-rw-r--r--gcc/testsuite/gcc.dg/pr48335-7.c38
-rw-r--r--gcc/testsuite/gcc.dg/pr48335-8.c31
-rw-r--r--gcc/testsuite/gcc.dg/pr48442.c27
-rw-r--r--gcc/testsuite/gcc.dg/pr48552-1.c53
-rw-r--r--gcc/testsuite/gcc.dg/pr48552-2.c53
-rw-r--r--gcc/testsuite/gcc.dg/pr48616.c135
-rw-r--r--gcc/testsuite/gcc.dg/pr48685.c11
-rw-r--r--gcc/testsuite/gcc.dg/pr48768.c38
-rw-r--r--gcc/testsuite/gcc.dg/pr48774.c38
-rw-r--r--gcc/testsuite/gcc.dg/pr48837.c30
-rw-r--r--gcc/testsuite/gcc.dg/sibcall-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/sibcall-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/slp-1.c15
-rw-r--r--gcc/testsuite/gcc.dg/stack-layout-1.c25
-rw-r--r--gcc/testsuite/gcc.dg/stack-layout-2.c23
-rw-r--r--gcc/testsuite/gcc.dg/stack-usage-1.c13
-rw-r--r--gcc/testsuite/gcc.dg/struct/struct-reorg.exp75
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_global_array.c30
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_global_var.c43
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_local_array.c38
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_local_var.c41
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c33
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_prof_two_strs.c66
-rw-r--r--gcc/testsuite/gcc.dg/struct/w_ratio_cold_str.c43
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_array_field.c27
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_array_through_pointer.c39
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c30
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_empty_str.c45
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_arg_to_local.c44
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_return.c31
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_str_init.c33
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_array.c34
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_pointer.c49
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_value.c46
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_global_array.c33
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_global_var.c46
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_local_array.c41
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_local_var.c44
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_malloc_size_var.c48
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_mult_field_peeling.c43
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c35
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c35
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c40
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_two_strs.c68
-rw-r--r--gcc/testsuite/gcc.dg/torture/20090618-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr37868.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr43165.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr47228.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr47725.c16
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr47917.c40
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr48146.c35
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr48343.c19
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr48694-1.c14
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr48694-2.c20
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr48731.c24
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr48822.c20
-rw-r--r--gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c9
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/va-arg-25.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/vector-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/vector-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c25
-rw-r--r--gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/alias-18.c16
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c61
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/complex-6.c25
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c10
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/inline-10.c38
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/inline-8.c31
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/inline-9.c24
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c29
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr14814.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr21574.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr23382.c17
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr38699.c7
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr45144.c1
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr46076.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c22
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-19.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c47
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c63
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-14.c21
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-16.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-17.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-22.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-23.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-24.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-25.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-26.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-27.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c12
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c8
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c8
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c8
-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.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-6.c18
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-7.c19
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-8.c28
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-9.c19
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp55.c14
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp56.c42
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp57.c17
-rw-r--r--gcc/testsuite/gcc.dg/uninit-pred-7_d.c54
-rw-r--r--gcc/testsuite/gcc.dg/uninit-pred-8_d.c45
-rw-r--r--gcc/testsuite/gcc.dg/uninit-suppress.c16
-rw-r--r--gcc/testsuite/gcc.dg/uninit-suppress_2.c16
-rw-r--r--gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/fast-math-ifcvt-1.c18
-rw-r--r--gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c69
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr30843.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr33866.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr37539.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr48377.c24
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr48765.c82
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-11a.c (renamed from gcc/testsuite/gcc.dg/vect/slp-11.c)48
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-11b.c49
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-11c.c46
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-12a.c34
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-12b.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-12c.c53
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-18.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-19a.c61
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-19b.c58
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-19c.c (renamed from gcc/testsuite/gcc.dg/vect/slp-19.c)73
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-21.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-23.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-3.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-6.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-10.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-107.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-119.c28
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-98.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-cselim-1.c86
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-cselim-2.c65
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-5.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-peel-1.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-shift-3.c37
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-shift-4.c37
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-float.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-mult.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u16-i3.c112
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-vfa-03.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect.exp29
-rw-r--r--gcc/testsuite/gcc.dg/winline-5.c8
-rw-r--r--gcc/testsuite/gcc.target/arm/cold-lc.c22
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-modes-2.c24
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vld-1.c13
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vld3-1.c27
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c21
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vst3-1.c25
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1f32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1p16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1p8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1s16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1s32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1s64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1s8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1u16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1u32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1u64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld1u8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2f32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2p16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2p8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2s16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2s32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2s64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2s8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2u16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2u32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2u64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld2u8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3f32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3p16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3p8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3s16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3s32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3s64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3s8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3u16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3u32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3u64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld3u8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4f32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4p16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4p8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4s16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4s32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4s64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4s8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4u16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4u32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4u64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vld4u8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1f32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1p16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1p8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1s16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1s32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1s64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1s8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1u16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1u32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1u64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst1u8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2f32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2p16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2p8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2s16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2s32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2s64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2s8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2u16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2u32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2u64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst2u8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3f32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3p16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3p8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3s16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3s32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3s64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3s8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3u16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3u32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3u64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst3u8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c4
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4f32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4p16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4p8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4s16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4s32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4s64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4s8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4u16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4u32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4u64.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vst4u8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/pr43698.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/pr43920-1.c21
-rw-r--r--gcc/testsuite/gcc.target/arm/pr43920-2.c30
-rw-r--r--gcc/testsuite/gcc.target/arm/pr46329.c9
-rw-r--r--gcc/testsuite/gcc.target/arm/pr46788.c26
-rw-r--r--gcc/testsuite/gcc.target/arm/pr46934.c21
-rw-r--r--gcc/testsuite/gcc.target/arm/pr48252.c31
-rw-r--r--gcc/testsuite/gcc.target/arm/sync-1.c5
-rw-r--r--gcc/testsuite/gcc.target/arm/unsigned-extend-1.c9
-rw-r--r--gcc/testsuite/gcc.target/arm/xor-and.c14
-rw-r--r--gcc/testsuite/gcc.target/avr/pr46779-1.c51
-rw-r--r--gcc/testsuite/gcc.target/avr/pr46779-2.c51
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/pr41885.c2
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/trivial.c29
-rw-r--r--gcc/testsuite/gcc.target/avr/trivial.c29
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-1.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-2.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-1.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-2.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp39
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/circptr.c29
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-1.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-2.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-1.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-2.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-1.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-2.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-1.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-2.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-1.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-2.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-1.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-2.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/hisilh.c (renamed from gcc/testsuite/gcc.target/bfin/hisilh.c)0
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-1.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-2.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-1.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-2.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-1.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-2.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-1.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-2.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-1.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-2.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-1.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-2.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-1.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-2.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-1.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-2.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-1.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-2.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-3.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-1.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-2.c21
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm16-1.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm16-2.c18
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm16-3.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm16-4.c18
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm16-5.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm16-6.c18
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm16-7.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm16-8.c18
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-1.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-10.c18
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-11.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-12.c18
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-2.c18
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-3.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-4.c18
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-5.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-6.c18
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-7.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-8.c18
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm32-9.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-3.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-1.c13
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-2.c13
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-3.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-4.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-5.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-6.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-7.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-8.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-3.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-4.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-5.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-6.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-7.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-8.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-9.c19
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32.c16
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-1.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-2.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-3.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-4.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-5.c27
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-6.c27
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-7.c27
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-8.c27
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-3.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-4.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-3.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-4.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-5.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-6.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-7.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-8.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-9.c19
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32.c16
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-1.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-2.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-3.c27
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-4.c27
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-3.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-4.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-1.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-2.c22
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-3.c27
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-4.c27
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-1.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-2.c14
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-1.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-2.c15
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-1.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-2.c23
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-1.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-2.c20
-rw-r--r--gcc/testsuite/gcc.target/bfin/hisilh-O0.c46
-rw-r--r--gcc/testsuite/gcc.target/bfin/mcpu-bf512.c35
-rw-r--r--gcc/testsuite/gcc.target/bfin/mcpu-bf514.c35
-rw-r--r--gcc/testsuite/gcc.target/bfin/mcpu-bf516.c35
-rw-r--r--gcc/testsuite/gcc.target/bfin/mcpu-bf518.c35
-rw-r--r--gcc/testsuite/gcc.target/bfin/mcpu-bf542.c4
-rw-r--r--gcc/testsuite/gcc.target/bfin/mcpu-bf544.c4
-rw-r--r--gcc/testsuite/gcc.target/bfin/mcpu-bf547.c4
-rw-r--r--gcc/testsuite/gcc.target/bfin/mcpu-bf548.c4
-rw-r--r--gcc/testsuite/gcc.target/bfin/mcpu-bf549.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/asm-6.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-ceil-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-floor-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-floorf-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-rint-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-rintf-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-trunc-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-truncf-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vinsertps-3.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vinsertps-4.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vmaskmovdqu.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vpinsrw-1.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c19
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c29
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c19
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c19
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c43
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c42
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c60
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c22
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c29
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c22
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c20
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c42
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c42
-rw-r--r--gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c45
-rw-r--r--gcc/testsuite/gcc.target/i386/builtin-copysign.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/incoming-8.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/opt-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/opt-2.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/parity-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/parity-2.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr38824.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr46084.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr47502-1.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/pr47502-2.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/pr48037-1.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/pr48237.c22
-rw-r--r--gcc/testsuite/gcc.target/i386/pr48335-1.c32
-rw-r--r--gcc/testsuite/gcc.target/i386/pr48389.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/pr48678.c16
-rw-r--r--gcc/testsuite/gcc.target/i386/pr48708.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/pr48723.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/recip-vec-divf-avx.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/recip-vec-divf.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/recip-vec-sqrtf.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-19.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-insvhi.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-maskmovdqu.c44
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-pinsrw.c86
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-insertps-4.c92
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-insvdi.c55
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-insvqi.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-insvsi.c53
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/ssefn-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/vecinit-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/vecinit-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_x.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/madd-7.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/msub-7.c3
-rw-r--r--gcc/testsuite/gcc.target/mips/reg-var-1.c16
-rw-r--r--gcc/testsuite/gcc.target/powerpc/ppc-pow.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr47755-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr48053-3.c41
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr48192.c49
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr48226.c14
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr48258-1.c57
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr48258-2.c58
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr48857.c25
-rw-r--r--gcc/testsuite/gcc.target/rx/pack.c8
-rw-r--r--gcc/testsuite/gfortran.dg/bessel_1.f904
-rw-r--r--gcc/testsuite/gfortran.dg/bessel_6.f908
-rw-r--r--gcc/testsuite/gfortran.dg/bessel_7.f901
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_usage_22.f9064
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_usage_23.f9064
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_usage_24.f9043
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_usage_24_c.c24
-rw-r--r--gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f902
-rw-r--r--gcc/testsuite/gfortran.dg/char4_iunit_1.f0310
-rw-r--r--gcc/testsuite/gfortran.dg/char4_iunit_2.f032
-rw-r--r--gcc/testsuite/gfortran.dg/character_comparison_8.f9014
-rw-r--r--gcc/testsuite/gfortran.dg/class_42.f0316
-rw-r--r--gcc/testsuite/gfortran.dg/coarray/caf.exp76
-rw-r--r--gcc/testsuite/gfortran.dg/coarray/image_index_1.f9099
-rw-r--r--gcc/testsuite/gfortran.dg/coarray/this_image_1.f90196
-rw-r--r--gcc/testsuite/gfortran.dg/coarray/this_image_2.f90125
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_10.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_13.f90138
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_15.f90112
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_16.f90100
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_17.f9021
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_18.f9039
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_19.f9027
-rw-r--r--gcc/testsuite/gfortran.dg/cray_pointers_8.f902
-rw-r--r--gcc/testsuite/gfortran.dg/endfile_3.f902
-rw-r--r--gcc/testsuite/gfortran.dg/endfile_4.f902
-rw-r--r--gcc/testsuite/gfortran.dg/erfc_scaled_1.f904
-rw-r--r--gcc/testsuite/gfortran.dg/f2003_io_5.f036
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_cache_1.f14
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_g.f8
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_g0_1.f0816
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_g0_5.f0839
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_g0_6.f0883
-rw-r--r--gcc/testsuite/gfortran.dg/ftell_3.f902
-rw-r--r--gcc/testsuite/gfortran.dg/func_result_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/func_result_6.f902
-rw-r--r--gcc/testsuite/gfortran.dg/function_optimize_1.f9047
-rw-r--r--gcc/testsuite/gfortran.dg/function_optimize_2.f9047
-rw-r--r--gcc/testsuite/gfortran.dg/function_optimize_3.f909
-rw-r--r--gcc/testsuite/gfortran.dg/function_optimize_4.f9020
-rw-r--r--gcc/testsuite/gfortran.dg/function_optimize_5.f9041
-rw-r--r--gcc/testsuite/gfortran.dg/function_optimize_6.f9016
-rw-r--r--gcc/testsuite/gfortran.dg/g77/cabs.f3
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr48117.f9011
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr48611.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr48794.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/guality/guality.exp3
-rw-r--r--gcc/testsuite/gfortran.dg/hypot_1.f904
-rw-r--r--gcc/testsuite/gfortran.dg/import9.f9030
-rw-r--r--gcc/testsuite/gfortran.dg/interface_35.f9079
-rw-r--r--gcc/testsuite/gfortran.dg/interface_36.f9028
-rw-r--r--gcc/testsuite/gfortran.dg/interface_assignment_4.f902
-rw-r--r--gcc/testsuite/gfortran.dg/missing_derived_type_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/module_md5_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_65.f906
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_66.f902
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_print_1.f2
-rw-r--r--gcc/testsuite/gfortran.dg/pr42108.f906
-rw-r--r--gcc/testsuite/gfortran.dg/pr47878.f902
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f904
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_21.f902
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_32.f9037
-rw-r--r--gcc/testsuite/gfortran.dg/real_const_3.f908
-rw-r--r--gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03129
-rw-r--r--gcc/testsuite/gfortran.dg/realloc_on_assign_7.f0384
-rw-r--r--gcc/testsuite/gfortran.dg/round_3.f0899
-rw-r--r--gcc/testsuite/gfortran.dg/scratch_1.f908
-rw-r--r--gcc/testsuite/gfortran.dg/trim_optimize_5.f9021
-rw-r--r--gcc/testsuite/gfortran.dg/trim_optimize_6.f9025
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_proc_22.f9049
-rw-r--r--gcc/testsuite/gfortran.dg/use_rename_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/whole_file_33.f9050
-rw-r--r--gcc/testsuite/gfortran.dg/whole_file_34.f9012
-rw-r--r--gcc/testsuite/gnat.dg/aggr17.adb28
-rw-r--r--gcc/testsuite/gnat.dg/aggr18.adb28
-rw-r--r--gcc/testsuite/gnat.dg/array14.adb35
-rw-r--r--gcc/testsuite/gnat.dg/array14.ads5
-rw-r--r--gcc/testsuite/gnat.dg/array14_pkg.ads16
-rw-r--r--gcc/testsuite/gnat.dg/array15.adb24
-rw-r--r--gcc/testsuite/gnat.dg/array15.ads5
-rw-r--r--gcc/testsuite/gnat.dg/array16.adb22
-rw-r--r--gcc/testsuite/gnat.dg/array16.ads31
-rw-r--r--gcc/testsuite/gnat.dg/array16_pkg.ads5
-rw-r--r--gcc/testsuite/gnat.dg/debug2.adb40
-rw-r--r--gcc/testsuite/gnat.dg/debug2.ads5
-rw-r--r--gcc/testsuite/gnat.dg/debug2_pkg.ads19
-rw-r--r--gcc/testsuite/gnat.dg/debug3.adb31
-rw-r--r--gcc/testsuite/gnat.dg/debug3.ads5
-rw-r--r--gcc/testsuite/gnat.dg/derived_type2.adb40
-rw-r--r--gcc/testsuite/gnat.dg/discr26.adb19
-rw-r--r--gcc/testsuite/gnat.dg/discr26.ads16
-rw-r--r--gcc/testsuite/gnat.dg/discr26_pkg.ads5
-rw-r--r--gcc/testsuite/gnat.dg/discr27.adb33
-rw-r--r--gcc/testsuite/gnat.dg/discr27.ads5
-rw-r--r--gcc/testsuite/gnat.dg/discr28.adb25
-rw-r--r--gcc/testsuite/gnat.dg/discr28.ads19
-rw-r--r--gcc/testsuite/gnat.dg/discr28_pkg.ads5
-rw-r--r--gcc/testsuite/gnat.dg/discr29.adb8
-rw-r--r--gcc/testsuite/gnat.dg/discr29.ads27
-rw-r--r--gcc/testsuite/gnat.dg/discr30.adb50
-rw-r--r--gcc/testsuite/gnat.dg/limited_with2.adb12
-rw-r--r--gcc/testsuite/gnat.dg/limited_with2.ads11
-rw-r--r--gcc/testsuite/gnat.dg/limited_with2_pkg1.ads9
-rw-r--r--gcc/testsuite/gnat.dg/limited_with2_pkg2.ads9
-rw-r--r--gcc/testsuite/gnat.dg/opt15.adb12
-rw-r--r--gcc/testsuite/gnat.dg/opt15_pkg.adb13
-rw-r--r--gcc/testsuite/gnat.dg/opt15_pkg.ads6
-rw-r--r--gcc/testsuite/gnat.dg/opt16.adb33
-rw-r--r--gcc/testsuite/gnat.dg/return3.adb9
-rw-r--r--gcc/testsuite/gnat.dg/specs/aggr2.ads14
-rw-r--r--gcc/testsuite/gnat.dg/specs/elab2.ads20
-rw-r--r--gcc/testsuite/gnat.dg/specs/elab2_pkg.ads18
-rw-r--r--gcc/testsuite/gnat.dg/volatile5.adb16
-rw-r--r--gcc/testsuite/gnat.dg/volatile5_pkg.ads11
-rw-r--r--gcc/testsuite/go.test/go-test.exp151
-rw-r--r--gcc/testsuite/go.test/test/append.go227
-rw-r--r--gcc/testsuite/go.test/test/arm-pass.txt488
-rw-r--r--gcc/testsuite/go.test/test/bench/Makefile14
-rwxr-xr-xgcc/testsuite/go.test/test/bench/clean.bash4
-rw-r--r--gcc/testsuite/go.test/test/bench/fannkuch-parallel.go2
-rw-r--r--gcc/testsuite/go.test/test/bench/fasta.c4
-rw-r--r--gcc/testsuite/go.test/test/bench/fasta.go47
-rw-r--r--gcc/testsuite/go.test/test/bench/k-nucleotide-parallel.go2
-rw-r--r--gcc/testsuite/go.test/test/bench/pidigits.go8
-rw-r--r--gcc/testsuite/go.test/test/bench/timing.log190
-rwxr-xr-xgcc/testsuite/go.test/test/bench/timing.sh35
-rw-r--r--gcc/testsuite/go.test/test/bugs/bug322.dir/lib.go15
-rw-r--r--gcc/testsuite/go.test/test/bugs/bug322.dir/main.go47
-rw-r--r--gcc/testsuite/go.test/test/bugs/bug322.go8
-rw-r--r--gcc/testsuite/go.test/test/bugs/bug324.dir/main.go48
-rw-r--r--gcc/testsuite/go.test/test/bugs/bug324.dir/p.go15
-rw-r--r--gcc/testsuite/go.test/test/bugs/bug324.go8
-rw-r--r--gcc/testsuite/go.test/test/chan/doubleselect.go36
-rw-r--r--gcc/testsuite/go.test/test/chan/nonblock.go153
-rw-r--r--gcc/testsuite/go.test/test/chan/perm.go46
-rw-r--r--gcc/testsuite/go.test/test/chan/select3.go39
-rw-r--r--gcc/testsuite/go.test/test/chan/select4.go25
-rw-r--r--gcc/testsuite/go.test/test/chan/select5.go482
-rw-r--r--gcc/testsuite/go.test/test/chan/sendstmt.go37
-rw-r--r--gcc/testsuite/go.test/test/closedchan.go241
-rw-r--r--gcc/testsuite/go.test/test/closure.go11
-rw-r--r--gcc/testsuite/go.test/test/cmp1.go54
-rw-r--r--gcc/testsuite/go.test/test/cmp6.go49
-rw-r--r--gcc/testsuite/go.test/test/cmplxdivide.c2
-rw-r--r--gcc/testsuite/go.test/test/const1.go2
-rw-r--r--gcc/testsuite/go.test/test/const3.go6
-rw-r--r--gcc/testsuite/go.test/test/copy.go61
-rw-r--r--gcc/testsuite/go.test/test/ddd1.go18
-rw-r--r--gcc/testsuite/go.test/test/defer.go2
-rw-r--r--gcc/testsuite/go.test/test/env.go10
-rw-r--r--gcc/testsuite/go.test/test/eof.go9
-rw-r--r--gcc/testsuite/go.test/test/eof1.go9
-rwxr-xr-xgcc/testsuite/go.test/test/errchk101
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug001.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug016.go6
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug055.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug069.go6
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug076.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug077.go5
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug081.go8
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug091.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug137.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug140.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug1515.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug178.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug179.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug219.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug226.dir/y.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug234.go1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug242.go1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug243.go38
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug252.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug260.go (renamed from gcc/testsuite/go.test/test/bugs/bug260.go)18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug274.go3
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug305.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p1.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p2.go8
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug306.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug307.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug308.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug309.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug310.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug311.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug312.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug313.dir/a.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug313.dir/b.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug313.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug314.go31
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug315.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug316.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug317.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug318.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug319.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug320.go45
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug321.go30
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug323.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug325.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug326.go41
-rw-r--r--gcc/testsuite/go.test/test/float_lit.go211
-rw-r--r--gcc/testsuite/go.test/test/garbage/Makefile4
-rw-r--r--gcc/testsuite/go.test/test/garbage/parser.go48
-rw-r--r--gcc/testsuite/go.test/test/garbage/peano.go4
-rw-r--r--gcc/testsuite/go.test/test/garbage/stats.go44
-rw-r--r--gcc/testsuite/go.test/test/garbage/tree.go6
-rw-r--r--gcc/testsuite/go.test/test/golden-arm.out131
-rw-r--r--gcc/testsuite/go.test/test/golden.out26
-rwxr-xr-xgcc/testsuite/go.test/test/hashmap.go12
-rw-r--r--gcc/testsuite/go.test/test/if.go12
-rw-r--r--gcc/testsuite/go.test/test/if1.go20
-rw-r--r--gcc/testsuite/go.test/test/index.go4
-rw-r--r--gcc/testsuite/go.test/test/init.go18
-rw-r--r--gcc/testsuite/go.test/test/interface/embed.go23
-rw-r--r--gcc/testsuite/go.test/test/interface/embed2.go70
-rw-r--r--gcc/testsuite/go.test/test/ken/convert.go431
-rw-r--r--gcc/testsuite/go.test/test/ken/cplx2.go4
-rw-r--r--gcc/testsuite/go.test/test/ken/robif.go97
-rw-r--r--gcc/testsuite/go.test/test/label.go60
-rw-r--r--gcc/testsuite/go.test/test/label1.go85
-rw-r--r--gcc/testsuite/go.test/test/method.go24
-rw-r--r--gcc/testsuite/go.test/test/method2.go19
-rw-r--r--gcc/testsuite/go.test/test/named1.go12
-rw-r--r--gcc/testsuite/go.test/test/nilptr/arrayindex.go1
-rw-r--r--gcc/testsuite/go.test/test/nilptr/arrayindex1.go1
-rw-r--r--gcc/testsuite/go.test/test/nilptr/arraytoslice.go1
-rw-r--r--gcc/testsuite/go.test/test/nilptr/arraytoslice1.go1
-rw-r--r--gcc/testsuite/go.test/test/nilptr/arraytoslice2.go1
-rw-r--r--gcc/testsuite/go.test/test/nilptr/slicearray.go1
-rw-r--r--gcc/testsuite/go.test/test/nilptr/structfield.go1
-rw-r--r--gcc/testsuite/go.test/test/nilptr/structfield1.go1
-rw-r--r--gcc/testsuite/go.test/test/nilptr/structfield2.go1
-rw-r--r--gcc/testsuite/go.test/test/nilptr/structfieldaddr.go1
-rw-r--r--gcc/testsuite/go.test/test/nul1.go1
-rw-r--r--gcc/testsuite/go.test/test/recover3.go17
-rwxr-xr-xgcc/testsuite/go.test/test/run23
-rwxr-xr-xgcc/testsuite/go.test/test/run-arm102
-rw-r--r--gcc/testsuite/go.test/test/sigchld.go1
-rw-r--r--gcc/testsuite/go.test/test/stack.go27
-rw-r--r--gcc/testsuite/go.test/test/syntax/chan.go17
-rw-r--r--gcc/testsuite/go.test/test/syntax/chan1.go17
-rw-r--r--gcc/testsuite/go.test/test/syntax/if.go18
-rw-r--r--gcc/testsuite/go.test/test/syntax/typesw.go13
-rw-r--r--gcc/testsuite/lib/compat.exp24
-rw-r--r--gcc/testsuite/lib/gcc-gdb-test.exp14
-rw-r--r--gcc/testsuite/lib/lto.exp24
-rw-r--r--gcc/testsuite/lib/prune.exp5
-rw-r--r--gcc/testsuite/lib/scanasm.exp86
-rw-r--r--gcc/testsuite/lib/target-supports.exp117
-rw-r--r--gcc/testsuite/obj-c++.dg/dwarf-2.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/naming-1.mm11
-rw-r--r--gcc/testsuite/obj-c++.dg/naming-2.mm7
-rw-r--r--gcc/testsuite/obj-c++.dg/naming-3.mm15
-rw-r--r--gcc/testsuite/obj-c++.dg/naming-4.mm145
-rw-r--r--gcc/testsuite/objc-obj-c++-shared/objc-test-suite-next-encode-assist-impl.h2
-rw-r--r--gcc/testsuite/objc.dg/naming-4.m13
-rw-r--r--gcc/testsuite/objc.dg/naming-5.m9
-rw-r--r--gcc/testsuite/objc.dg/naming-6.m20
-rw-r--r--gcc/testsuite/objc.dg/naming-7.m145
-rw-r--r--gcc/testsuite/objc/execute/next_mapping.h2
1411 files changed, 23282 insertions, 4230 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 67ba0710e27..761b4af350d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,2345 @@
+2011-05-11 Alan Modra <amodra@gmail.com>
+
+ PR target/47755
+ * gcc.target/powerpc/pr47755-2.c: Require vsx_hw.
+
+2011-05-10 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/defaulted25.C: New.
+ * g++.dg/template/crash7.C: Adjust.
+
+ * g++.dg/cpp0x/variadic108.C: New.
+
+2011-05-10 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ * g++.dg/inherit/virtual9.C: Extend.
+
+2011-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/48857
+ * gcc.target/powerpc/pr48857.c: New file, make sure V2DI arguments
+ are passed and returned in vector registers.
+
+2011-05-10 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/ssa-fre-2.c: Disable forwprop.
+ * gcc.dg/tree-ssa/ssa-fre-3.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-4.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-5.c: Likewise.
+ * gcc.dg/tree-ssa/scev-cast.c: Adjust. Note what transformation
+ applies.
+
+2011-05-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48611
+ PR tree-optimization/48794
+ * gfortran.dg/gomp/pr48611.f90: New test.
+ * gfortran.dg/gomp/pr48794.f90: New test.
+
+ PR debug/48928
+ * gcc.dg/dfp/pr48928.c: New test.
+
+2011-05-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48522
+ * g++.dg/cpp0x/pr48522.C: New.
+
+2011-05-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48735
+ * g++.dg/cpp0x/sfinae21.C: New.
+
+2011-05-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * g++.dg/template/sfinae28.C: Rename to...
+ * g++.dg/cpp0x/sfinae19.C: ... this.
+ * g++.dg/template/sfinae29.C: Rename to...
+ * g++.dg/cpp0x/sfinae20.C: ... this.
+
+2011-05-09 Jeff Law <law@redhat.com>
+
+ * lib/gcc-gdb-test.exp (gdb-test): Reorder matchers to give more
+ consistent results.
+
+2011-05-09 Fabien Chêne <fabien@gcc.gnu.org>
+
+ PR c++/20039
+ * g++.dg/init/pr20039.C: New.
+
+2011-05-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48737
+ PR c++/48744
+ * g++.dg/template/sfinae28.C: New.
+ * g++.dg/template/sfinae29.C: Likewise.
+
+2011-05-09 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/template/nontype23.C: New.
+
+2011-05-07 Fabien Chêne <fabien@gcc.gnu.org>
+ PR c++/48859
+ * g++.dg/init/pr48859.C: New.
+
+2011-05-09 Jason Merrill <jason@redhat.com>
+
+ * gcc.dg/gcc.dg/uninit-D.c: Move to c-c++-common.
+ * gcc.dg/gcc.dg/uninit-D-O0.c: Move to c-c++-common.
+ * gcc.dg/gcc.dg/uninit-E.c: Move to c-c++-common.
+ * gcc.dg/gcc.dg/uninit-E-O0.c: Move to c-c++-common.
+ * gcc.dg/gcc.dg/uninit-F.c: Move to c-c++-common.
+ * gcc.dg/gcc.dg/uninit-F-O0.c: Move to c-c++-common.
+ * gcc.dg/gcc.dg/uninit-G.c: Move to c-c++-common.
+ * gcc.dg/gcc.dg/uninit-G-O0.c: Move to c-c++-common.
+
+2011-05-08 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ * g++.dg/inherit/virtual9.C: New.
+
+2011-05-09 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/48574
+ * g++.dg/template/dependent-expr8.C: New test case.
+
+2011-05-07 Zdenek Dvorak <ook@ucw.cz>
+
+ PR tree-optimization/48837
+ * gcc.dg/pr48837.c: New testcase.
+
+2011-05-06 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/constexpr-condition2.C: New.
+
+ * g++.dg/cpp0x/constexpr-missing.C: New.
+
+2011-05-06 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ * gfortran.dg/coarray/this_image_2.f90: New.
+
+2011-05-06 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48858
+ PR fortran/48820
+ * gfortran.dg/bind_c_usage_22.f90: New.
+ * gfortran.dg/bind_c_usage_23.f90: New.
+ * gfortran.dg/bind_c_usage_24.f90: New.
+ * gfortran.dg/bind_c_usage_24_c.c: New.
+
+2011-05-06 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/48838
+ * g++.dg/template/member9.C: New test case.
+
+2011-05-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/discr29.ad[sb]: New test.
+ * gnat.dg/discr30.adb: Likewise.
+
+2011-05-05 Julian Brown <julian@codesourcery.com>
+
+ * gcc.target/arm/neon-vset_lanes8.c: New test.
+
+2011-05-05 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/init/new32.C: New.
+
+2011-05-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gfortran.dg/fmt_g0_6.f08: Use dg-options "-ffloat-store".
+ Fix typo.
+
+2011-05-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/48381
+ * gcc.c-torture/compile/pr48381.c: New test.
+
+2011-05-05 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/opt-1.c: Add --param min-insn-to-prefetch -ratio=0
+ to dg-options.
+ * gcc.target/i386/opt-1.c: Ditto.
+
+2011-05-04 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/conversion/base1.C: New.
+
+2011-05-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/48787
+ * gfortran.dg/round_3.f08: Add more checks to test case.
+
+2011-05-04 Hans-Peter Nilsson <hp@axis.com>
+
+ * gfortran.dg/pr47878.f90, gfortran.dg/endfile_3.f90,
+ gfortran.dg/endfile_4.f90, gfortran.dg/ftell_3.f90,
+ gfortran.dg/fmt_cache_1.f, gfortran.dg/namelist_66.f90:
+ Gate test on effective_target fd_truncate.
+
+2011-05-04 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/recip-vec-divf.c: Decrease array sizes.
+ * gcc.target/i386/recip-vec-sqrtf.c: Ditto.
+ * gcc.target/i386/recip-vec-divf-avx.c: Increase array sizes.
+ * gcc.target/i386/recip-vec-sqrtf-avx.c: Ditto. Update scan times.
+ * gcc.target/i386/ssefn-1.c: Add -mno-sse2 to dg-options.
+ * gcc.target/i386/pr38824.c: Ditto.
+ * gcc.target/i386/vecinit-1.c: Add -mno-sse4 to dg-options.
+ * gcc.target/i386/vecinit-2.c: Ditto.
+ * gcc.target/i386/sse-19.c: Add -mno-ssse3 to dg-options.
+ * gcc.target/i386/parity-1.c: Add -mno-popcnt to dg-options.
+ * gcc.target/i386/parity-2.c: Ditto.
+ * gcc.target/i386/incoming-8.c: Add -mno-avx to dg-options.
+
+2011-05-04 Stuart Henderson <shenders@gcc.gnu.org>
+
+ * gcc.target/bfin/mcpu-bf512.c: Update to latest silicon revision and
+ remove duplication.
+ * gcc.target/bfin/mcpu-bf514.c: Likewise.
+ * gcc.target/bfin/mcpu-bf516.c: Likewise.
+ * gcc.target/bfin/mcpu-bf518.c: Likewise.
+
+2011-05-03 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ * gfortran.dg/coarray/this_image_1.f90: Remove dg-options.
+
+2011-05-03 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ * gfortran.dg/coarray/this_image_1.f90: New.
+
+2011-05-03 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ * gfortran.dg/coarray/caf.dg: New.
+ * gfortran.dg/coarray/image_index_1.f90: New, copied
+ from ../coarray_16.f90.
+
+2011-05-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/28501
+ * g++.dg/ext/complex9.C: New.
+
+2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>
+
+ From Mike Frysinger
+ * gcc.target/bfin/mcpu-bf542.c: Check SILICON_REVISION is 0x0004.
+ * gcc.target/bfin/mcpu-bf544.c, gcc.target/bfin/mcpu-bf547.c,
+ gcc.target/bfin/mcpu-bf548.c, gcc.target/bfin/mcpu-bf549.c: Likewise.
+
+2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>
+
+ * gcc.target/bfin/builtins: Created.
+ * gcc.target/bfin/hisilh-O0.c: Deleted.
+ * gcc.target/bfin/hisilh.c: Moved to...
+ * gcc.target/bfin/builtins/hisilh.c: ...here.
+ * gcc.target/bfin/builtins/shl_fr1x16-6.c: New test.
+ * gcc.target/bfin/builtins/shr_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x32-9.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x32-4.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x32-8.c: Ditto.
+ * gcc.target/bfin/builtins/lshl_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/abs_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-1.c: Ditto.
+ * gcc.target/bfin/builtins/shrl_fr1x16-3.c: Ditto.
+ * gcc.target/bfin/builtins/norm_fr1x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/bfin-builtins.exp: Ditto.
+ * gcc.target/bfin/builtins/norm16-2.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-5.c: Ditto.
+ * gcc.target/bfin/builtins/norm_fr1x16-3.c: Ditto.
+ * gcc.target/bfin/builtins/mult_fr1x32x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/norm16-6.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-9.c: Ditto.
+ * gcc.target/bfin/builtins/mult_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/dspsubaddsat_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/min_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/max_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-10.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr2x16-3.c: Ditto.
+ * gcc.target/bfin/builtins/mulhisihh_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/diff_hl_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr2x16-7.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/mulhisilh_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/lshl_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/cpmlx_mul_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/negate_fr1x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/negate_fr1x16-3.c: Ditto.
+ * gcc.target/bfin/builtins/abs_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shrl_fr2x16-4.c: Ditto.
+ * gcc.target/bfin/builtins/mult_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/max_fr1x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/min_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/max_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x16-3.c: Ditto.
+ * gcc.target/bfin/builtins/add_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x32-6.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x32.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x16-7.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x32-5.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x32-9.c: Ditto.
+ * gcc.target/bfin/builtins/abs_fr1x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/lshl_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/abs_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/cpmlx_msu_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-2.c: Ditto.
+ * gcc.target/bfin/builtins/shrl_fr1x16-4.c: Ditto.
+ * gcc.target/bfin/builtins/norm16-3.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-6.c: Ditto.
+ * gcc.target/bfin/builtins/norm16-7.c: Ditto.
+ * gcc.target/bfin/builtins/mult_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/min_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/add_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-11.c: Ditto.
+ * gcc.target/bfin/builtins/sub_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr2x16-4.c: Ditto.
+ * gcc.target/bfin/builtins/mulhisihh_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/diff_lh_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr2x16-8.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr2x16-3.c: Ditto.
+ * gcc.target/bfin/builtins/mulhisilh_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/lshl_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shrl_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/mult_fr1x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/min_fr1x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/dspaddsubsat_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/mult_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/max_fr1x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/min_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x32.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x32-3.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x16-4.c: Ditto.
+ * gcc.target/bfin/builtins/sub_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/add_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x32-7.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x16-8.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x16-3.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x32-6.c: Ditto.
+ * gcc.target/bfin/builtins/circptr.c: Ditto.
+ * gcc.target/bfin/builtins/negate_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/abs_fr1x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/multr_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/sum_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shrl_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/cpmlx_msu_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-3.c: Ditto.
+ * gcc.target/bfin/builtins/norm_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/norm16-4.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-7.c: Ditto.
+ * gcc.target/bfin/builtins/norm16-8.c: Ditto.
+ * gcc.target/bfin/builtins/add_fr1x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/add_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr2x16-5.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-12.c: Ditto.
+ * gcc.target/bfin/builtins/sub_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/diff_lh_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/mulhisihl_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr2x16-4.c: Ditto.
+ * gcc.target/bfin/builtins/mulhisill_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/negate_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/multr_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shrl_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/mult_fr1x32x32NS-1.c: Ditto.
+ * gcc.target/bfin/builtins/mult_fr1x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/min_fr1x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/dspaddsubsat_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/sub_fr1x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x32-4.c: Ditto.
+ * gcc.target/bfin/builtins/sub_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x16-5.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x32-8.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x32-3.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x16-4.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr1x32-7.c: Ditto.
+ * gcc.target/bfin/builtins/negate_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/multr_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/sum_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shrl_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/norm_fr1x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/norm16-1.c: Ditto.
+ * gcc.target/bfin/builtins/norm_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/mult_fr1x32x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-4.c: Ditto.
+ * gcc.target/bfin/builtins/norm16-5.c: Ditto.
+ * gcc.target/bfin/builtins/norm32-8.c: Ditto.
+ * gcc.target/bfin/builtins/dspsubaddsat_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/max_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/add_fr1x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr2x16-6.c: Ditto.
+ * gcc.target/bfin/builtins/diff_hl_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shr_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/mulhisihl_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/negate_fr1x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/cpmlx_mul_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/multr_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/mulhisill_fr2x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/negate_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/abs_fr2x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shrl_fr2x16-3.c: Ditto.
+ * gcc.target/bfin/builtins/mult_fr1x32x32NS-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x32-1.c: Ditto.
+ * gcc.target/bfin/builtins/max_fr1x16-1.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x16-2.c: Ditto.
+ * gcc.target/bfin/builtins/sub_fr1x32-2.c: Ditto.
+ * gcc.target/bfin/builtins/shl_fr1x32-5.c: Ditto.
+
+2011-05-03 Bernd Schmidt <bernds@codesourcery.com>
+
+ * gcc.target/arm/cold-lc.c: New test.
+
+2011-05-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/48774
+ * gcc.dg/pr48774.c: New test.
+
+2011-05-03 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/large-size-array-5.c: New testcase.
+
+2011-05-03 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * gcc.dg/vect/vect-strided-u16-i3.c: New test.
+
+2011-05-03 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * lib/target-supports.exp (check_effective_target_vect_strided):
+ Replace with...
+ (check_effective_target_vect_strided2)
+ (check_effective_target_vect_strided3)
+ (check_effective_target_vect_strided4)
+ (check_effective_target_vect_strided8): ...these new functions.
+
+ * gcc.dg/vect/O3-pr39675-2.c: Update accordingly.
+ * gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c: Likewise.
+ * gcc.dg/vect/fast-math-slp-27.c: Likewise.
+ * gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c: Likewise.
+ * gcc.dg/vect/pr37539.c: Likewise.
+ * gcc.dg/vect/slp-11a.c: Likewise.
+ * gcc.dg/vect/slp-11b.c: Likewise.
+ * gcc.dg/vect/slp-11c.c: Likewise.
+ * gcc.dg/vect/slp-12a.c: Likewise.
+ * gcc.dg/vect/slp-12b.c: Likewise.
+ * gcc.dg/vect/slp-18.c: Likewise.
+ * gcc.dg/vect/slp-19a.c: Likewise.
+ * gcc.dg/vect/slp-19b.c: Likewise.
+ * gcc.dg/vect/slp-21.c: Likewise.
+ * gcc.dg/vect/slp-23.c: Likewise.
+ * gcc.dg/vect/vect-cselim-1.c: Likewise.
+
+ * gcc.dg/vect/fast-math-vect-complex-3.c: Use vect_stridedN
+ instead of vect_interleave && vect_extract_even_odd.
+ * gcc.dg/vect/no-scevccp-outer-10a.c: Likewise.
+ * gcc.dg/vect/no-scevccp-outer-10b.c: Likewise.
+ * gcc.dg/vect/no-scevccp-outer-20.c: Likewise.
+ * gcc.dg/vect/vect-1.c: Likewise.
+ * gcc.dg/vect/vect-10.c: Likewise.
+ * gcc.dg/vect/vect-98.c: Likewise.
+ * gcc.dg/vect/vect-107.c: Likewise.
+ * gcc.dg/vect/vect-strided-a-mult.c: Likewise.
+ * gcc.dg/vect/vect-strided-a-u16-i2.c: Likewise.
+ * gcc.dg/vect/vect-strided-a-u16-i4.c: Likewise.
+ * gcc.dg/vect/vect-strided-a-u16-mult.c: Likewise.
+ * gcc.dg/vect/vect-strided-a-u32-mult.c: Likewise.
+ * gcc.dg/vect/vect-strided-a-u8-i2-gap.c: Likewise.
+ * gcc.dg/vect/vect-strided-a-u8-i8-gap2.c: Likewise.
+ * gcc.dg/vect/vect-strided-a-u8-i8-gap7.c: Likewise.
+ * gcc.dg/vect/vect-strided-float.c: Likewise.
+ * gcc.dg/vect/vect-strided-mult-char-ls.c: Likewise.
+ * gcc.dg/vect/vect-strided-mult.c: Likewise.
+ * gcc.dg/vect/vect-strided-same-dr.c: Likewise.
+ * gcc.dg/vect/vect-strided-u16-i2.c: Likewise.
+ * gcc.dg/vect/vect-strided-u16-i4.c: Likewise.
+ * gcc.dg/vect/vect-strided-u32-i4.c: Likewise.
+ * gcc.dg/vect/vect-strided-u32-i8.c: Likewise.
+ * gcc.dg/vect/vect-strided-u32-mult.c: Likewise.
+ * gcc.dg/vect/vect-strided-u8-i2-gap.c: Likewise.
+ * gcc.dg/vect/vect-strided-u8-i2.c: Likewise.
+ * gcc.dg/vect/vect-strided-u8-i8-gap2.c: Likewise.
+ * gcc.dg/vect/vect-strided-u8-i8-gap4.c: Likewise.
+ * gcc.dg/vect/vect-strided-u8-i8-gap7.c: Likewise.
+ * gcc.dg/vect/vect-strided-u8-i8.c: Likewise.
+ * gcc.dg/vect/vect-vfa-03.c: Likewise.
+
+ * gcc.dg/vect/no-scevccp-outer-18.c: Add vect_stridedN to the
+ target condition.
+ * gcc.dg/vect/pr30843.c: Likewise.
+ * gcc.dg/vect/pr33866.c: Likewise.
+ * gcc.dg/vect/slp-reduc-6.c: Likewise.
+ * gcc.dg/vect/vect-strided-store-a-u8-i2.c: Likewise.
+ * gcc.dg/vect/vect-strided-store-u16-i4.c: Likewise.
+ * gcc.dg/vect/vect-strided-store-u32-i2.c: Likewise.
+
+2011-05-03 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * gcc.dg/vect/slp-11.c: Split into...
+ * gcc.dg/vect/slp-11a.c, gcc.dg/vect/slp-11b.c,
+ gcc.dg/vect/slp-11c.c: ...these tests.
+ * gcc.dg/vect/slp-12a.c: Split 4-stride loop into...
+ * gcc.dg/vect/slp-12c.c: ...this new test.
+ * gcc.dg/vect/slp-19.c: Split into...
+ * gcc.dg/vect/slp-19a.c, gcc.dg/vect/slp-19b.c,
+ gcc.dg/vect/slp-19c.c: ...these new tests.
+
+2011-05-03 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * lib/target-supports.exp
+ (check_effective_target_vect_extract_even_odd_wide): Delete.
+ (check_effective_target_vect_strided_wide): Likewise.
+ * gcc.dg/vect/O3-pr39675-2.c: Use the non-wide versions instead.
+ * gcc.dg/vect/fast-math-pr35982.c: Likewise.
+ * gcc.dg/vect/fast-math-vect-complex-3.c: Likewise.
+ * gcc.dg/vect/pr37539.c: Likewise.
+ * gcc.dg/vect/slp-11.c: Likewise.
+ * gcc.dg/vect/slp-12a.c: Likewise.
+ * gcc.dg/vect/slp-12b.c: Likewise.
+ * gcc.dg/vect/slp-19.c: Likewise.
+ * gcc.dg/vect/slp-23.c: Likewise.
+ * gcc.dg/vect/vect-1.c: Likewise.
+ * gcc.dg/vect/vect-98.c: Likewise.
+ * gcc.dg/vect/vect-107.c: Likewise.
+ * gcc.dg/vect/vect-strided-float.c: Likewise.
+
+2011-05-02 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/init/new31.C: New.
+
+2011-05-02 Simon Martin <simartin@users.sourceforge.net>
+
+ PR c/35445
+ * gcc.dg/pr35445.c: New test.
+
+2011-05-02 Jason Merrill <jason@redhat.com>
+
+ * c-c++-common/vla-1.c: New.
+
+2011-05-02 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48822
+ * gcc.dg/torture/pr48822.c: New testcase.
+
+2011-05-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/47969
+ * g++.dg/cpp0x/constexpr-47969.C: New.
+
+2011-05-02 Ira Rosen <ira.rosen@linaro.org>
+
+ PR testsuite/48498
+ * gcc.dg/vect/slp-3.c: Increase loop bound. Don't expect to fail
+ on vect_no_align targets.
+ * gcc.dg/vect/no-vfa-pr29145.c: Don't expect to fail on
+ vect_no_align targets.
+
+2011-05-01 Xinliang David Li <davidxl@google.com>
+
+ * gcc.dg/tree-ssa/integer-addr.c: New test.
+ * gcc.dg/tree-ssa/alias_bug.c: New test.
+
+2011-05-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/48787
+ * gfortran.dg/round_3.f08: Add more checks.
+
+2011-04-30 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48821
+ * gfortran.dg/import9.f90: New, proper test.
+ * gfortran.dg/interface_37.f90: Remove bogus
+ test (bogus copy of interface_36.f90).
+
+2011-04-30 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48821
+ * gfortran.dg/interface_37.f90: New.
+
+2011-04-30 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/48746
+ * gfortran.dg/realloc_on_assign_7.f03: Test bounds.
+
+2011-04-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48809
+ * gcc.c-torture/execute/pr48809.c: New test.
+
+2011-04-29 Jeff Law <law@redhat.com>
+
+ * gcc.dg/tree-ssa/ssa-dom-thread-4.c: New test.
+
+2011-04-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48606
+ * g++.dg/init/ctor10.C: New.
+
+2011-04-29 Le-Chun Wu <lcwu@google.com>
+
+ * g++.dg/warn/Wconversion-null-2.C: Do not expect a NULL
+ warning in implicitly instantiated templates.
+
+2011-04-29 Le-Chun Wu <lcwu@google.com>
+
+ * g++.dg/warn/Wnull-conversion-1.C: New.
+ * g++.dg/warn/Wnull-conversion-2.C: New.
+
+2011-04-29 Diego Novillo <dnovillo@google.com>
+
+ * g++.old-deja/g++.other/null3.C: Expect warning about
+ converting boolean to a pointer.
+
+2011-04-29 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/48462
+ * gfortran.dg/realloc_on_assign_7.f03: Modify to test for lhs
+ being a target.
+
+ PR fortran/48746
+ * gfortran.dg/realloc_on_assign_7.f03: Add subroutine pr48746.
+
+2011-04-29 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48810
+ * gfortran.dg/typebound_proc_22.f90: New.
+
+ PR fortran/48800
+ * gfortran.dg/interface_36.f90: New.
+
+2011-04-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/48488
+ PR libgfortran/48602
+ PR libgfortran/48615
+ PR libgfortran/48684
+ PR libgfortran/48787
+ * gfortran.dg/fmt_g.f: Adjust test.
+ * gfortran.dg/fmt_g0_1.f08: Adjust test.
+ * gfortran.dg/round_3.f08: New test.
+ * gfortran.dg/namelist_print_1.f: Adjust test.
+ * gfortran.dg/char4_iunit_1.f03: Adjust test.
+ * gfortran.dg/f2003_io_5.f03: Adjust test.
+ * gfortran.dg/coarray_15.f90: Adjust test.
+ * gfortran.dg/namelist_65.f90: Adjust test.
+ * gfortran.dg/fmt_cache_1.f: Adjust test.
+ * gfortran.dg/char4_iunit_2.f03: Adjust test.
+ * gfortran.dg/real_const_3.f90: Adjust test.
+
+2011-04-28 Xinliang David Li <davidxl@google.com>
+
+ * testsuite/gcc.dg/tree-prof/prof-robust-1.c: New test.
+ * testsuite/g++.dg/prof-robust-1.C: New test.
+
+2011-04-28 Ira Rosen <ira.rosen@linaro.org>
+
+ PR tree-optimization/48765
+ * gcc.dg/vect/pr48765.c: New.
+
+2011-04-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR tree-optimization/48775
+ * gcc.dg/pr48616.c: Also add -fno-common on alpha*-dec-osf*.
+
+2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48798
+ * g++.dg/inherit/pr48798.C: New.
+ * g++.old-deja/g++.other/base1.C: Adjust.
+
+2011-04-28 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/48656
+ * g++.dg/template/inherit7.C: New test case.
+
+2011-04-28 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40052
+ PR tree-optimization/15347
+ * gcc.dg/tree-ssa/vrp57.c: New testcase.
+ * gcc.dg/pr15347.c: Likewise.
+
+2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48530
+ * g++.dg/cpp0x/sfinae18.C: New.
+
+2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48771
+ * g++.dg/ext/is_literal_type1.C: New.
+
+2011-04-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48112
+ PR fortran/48279
+ * gfortran.dg/interface_35.f90: New.
+ * gfortran.dg/erfc_scaled_1.f90: Don't compile with -pedantic.
+ * gfortran.dg/func_result_6.f90: Add dg-warning.
+ * gfortran.dg/bessel_1.f90: Ditto.
+ * gfortran.dg/hypot_1.f90: Ditto.
+ * gfortran.dg/proc_ptr_comp_20.f90: Ditto.
+ * gfortran.dg/proc_ptr_comp_21.f90: Ditto.
+ * gfortran.dg/interface_assignment_4.f90: Ditto.
+
+2011-04-27 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/ext/complex8.C: New.
+
+ * g++.dg/cpp0x/initlist49.C: New.
+ * g++.dg/init/new30.C: New.
+
+2011-04-27 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48788
+ * gfortran.dg/whole_file_34.f90: New.
+
+2011-04-27 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/tree-ssa/inline-9.c: New testcase.
+
+2011-04-27 Jason Merrill <jason@redhat.com>
+
+ * g++.old-deja/g++.oliva/overload1.C: Adjust.
+
+ * g++.dg/parse/ambig6.C: New.
+
+2011-04-27 Nick Clifton <nickc@redhat.com>
+
+ * gcc.dg/20020312-2.c: Add definition for RX.
+
+ * lib/target-supports.exp (add_options_for_ieee): Use -mnofpu
+ option with RX targets.
+
+ * gcc.target/rx/pack.c: Replace C++ style // comments with C style
+ /* */ comments.
+
+2011-04-27 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/pr23382.c: Remove.
+
+2011-04-27 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/48767
+ * gcc.c-torture/compile/pr48767.c: New test.
+
+2011-04-27 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48772
+ * g++.dg/pr48772.C: New testcase.
+
+2011-04-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/48742
+ * gcc.c-torture/compile/pr48742.c: New test.
+
+2011-04-26 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/lookup/koenig13.C: New.
+
+ * g++.dg/cpp0x/initlist48.C: New.
+
+2011-04-25 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/sfinae17.C: New.
+
+2011-03-23 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/48258
+ * gcc.target/powerpc/pr48258-1.c: New file.
+ * gcc.target/powerpc/pr48258-2.c: Ditto.
+
+2011-04-26 Xinliang David Li <davidxl@google.com>
+
+ * gcc.dg/uninit-suppress.c: New test.
+ * gcc.dg/uninit-suppress.c: New test.
+
+2011-04-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/48768
+ * gcc.dg/pr48768.c: New test.
+
+ PR tree-optimization/48734
+ * gcc.c-torture/compile/pr48734.c: New test.
+
+ PR testsuite/48753
+ * gcc.dg/tree-prof/val-prof-2.c: Adjust for 32-bit HWI.
+
+2011-04-26 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48731
+ * gcc.dg/torture/pr48731.c: New testcase.
+
+2011-04-26 Richard Guenther <rguenther@suse.de>
+
+ PR testsuite/48753
+ * gcc.dg/tree-prof/val-prof-2.c: Adjust.
+
+2011-04-26 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/48694
+ * gcc.dg/torture/pr48694-1.c: New testcase.
+ * gcc.dg/torture/pr48694-2.c: Likewise.
+
+2011-04-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * g++.dg/ext/underlying_type1.C: New.
+ * g++.dg/ext/underlying_type2.C: Likewise.
+ * g++.dg/ext/underlying_type3.C: Likewise.
+ * g++.dg/ext/underlying_type4.C: Likewise.
+ * g++.dg/ext/underlying_type5.C: Likewise.
+ * g++.dg/ext/underlying_type6.C: Likewise.
+ * g++.dg/ext/underlying_type7.C: Likewise.
+ * g++.dg/ext/underlying_type8.C: Likewise.
+ * g++.dg/ext/underlying_type9.C: Likewise.
+ * g++.dg/ext/underlying_type10.C: Likewise.
+
+2011-04-25 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/regress/template-const2.C: New.
+
+2011-04-25 Jeff Law <law@redhat.com>
+
+ * gcc.dg/tree-ssa/vrp56.c: new test.
+
+2011-04-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * go.test/go-test.exp (go-set-goarch): Accept mips*-*-*.
+
+2011-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/48740
+ * c-c++-common/raw-string-11.c: New test.
+
+2011-04-23 John David Anglin <dave.anglin@nrc-cnrc.ca>
+
+ * gcc.dg/pr48616.c (dg-options): Add -fno-common to options on
+ hppa*-*-hpux*.
+
+2011-04-23 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ * gfortran.dg/coarray_19.f90: New.
+
+2011-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/48685
+ * gcc.dg/pr48685.c: New test.
+
+2011-04-22 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/tree-ssa/pr38699.c: Fix testcase.
+
+2011-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48717
+ * gcc.c-torture/execute/pr48717.c: New test.
+
+2011-04-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/48723
+ * gcc.target/i386/pr48723.c: New test.
+
+2011-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/48716
+ * gcc.dg/gomp/pr48716.c: New test.
+ * g++.dg/gomp/pr48716.C: New test.
+
+2011-04-22 Alexander Monakov <amonakov@ispras.ru>
+
+ PR c/36750
+ * gcc.dg/missing-field-init-2.c: Update testcase.
+
+2011-04-22 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/ppc-pow.c: Allow for tail calls.
+
+2011-04-21 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/48405
+ * gfortran.dg/function_optimize_6.f90: New test.
+
+2011-04-21 Easwaran Raman <eraman@google.com>
+
+ * gcc.dg/stack-layout-2.c: New test.
+
+2011-04-21 Richard Guenther <rguenther@suse.de>
+
+ PR lto/48703
+ * g++.dg/lto/pr48207-2_0.C: New testcase.
+ * g++.dg/lto/pr48207-3_0.C: Likewise.
+
+2011-04-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/volatile5.adb: New test.
+ * gnat.dg/volatile5_pkg.ads: New helper.
+
+2011-04-21 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/48708
+ * gcc.target/i386/pr48708.c: New test.
+
+2011-04-21 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * gcc.dg/vect/vect-119.c: New test.
+
+2011-04-21 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * gcc.dg/vect/vect.exp: Run the main tests twice, one with -flto
+ and once without.
+
+2011-04-21 Richard Earnshaw <rearnsha@arm.com>
+ Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR target/46329
+ * gcc.target/arm/pr46329.c: New test.
+
+2011-04-21 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ * gfortran.dg/coarray_18.f90: New.
+
+2011-04-20 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/initlist47.C: New.
+
+ * g++.dg/init/dtor4.C: New.
+
+2011-04-20 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/48678
+ * gcc.target/i386/sse2-pinsrw.c: New test.
+ * gcc.target/i386/avx-vpinsrw.c: Ditto.
+ * gcc.target/i386/sse4_1-insvqi.c: Ditto.
+ * gcc.target/i386/sse2-insvhi.c: Ditto.
+ * gcc.target/i386/sse4_1-insvsi.c: Ditto.
+ * gcc.target/i386/sse4_1-insvdi.c: Ditto.
+
+2011-04-20 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/template/const4.C: New.
+
+2011-04-20 Easwaran Raman <eraman@google.com>
+
+ * gcc.dg/stack-layout-1.c: New test.
+
+2011-04-20 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * gcc.dg/vect/vect-shift-3.c, gcc.dg/vect/vect-shift-4.c: New.
+ * lib/target-supports.exp (check_effective_target_vect_shift_char): New
+ function.
+
+2011-04-20 Kai Tietz <ktietz@redhat.com>
+
+ * gcc.dg/binop-xor1.c: New test.
+ * gcc.dg/binop-xor2.c: New test.
+ * gcc.dg/binop-xor3.c: New test.
+ * gcc.dg/binop-xor4.c: New test.
+ * gcc.dg/binop-xor5.c: New test.
+
+2011-04-20 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/47892
+ * gcc.dg/vect/fast-math-ifcvt-1.c: New testcase.
+
+2011-04-20 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/48695
+ * g++.dg/torture/pr48695.C: New testcase.
+
+2011-04-20 Georg-Johann Lay <avr@gjlay.de>
+
+ * gcc.dg/pr42629.c: Add dg-require-effective-target int32plus
+ * gcc.c-torture/execute/cmpsi-2.c: Ditto
+ * gcc.c-torture/execute/pr45262.c: Ditto
+ * gcc.dg/torture/pr43165.c: Ditto.
+ * gcc.dg/torture/pr47228.c: Ditto.
+ * gcc.dg/tree-ssa/pr45144.c: Ditto.
+ * gcc.dg/ipa/pr45644.c: Ditto.
+ * gcc.c-torture/compile/pr43191.c: Ditto. Remove dg-skip-if for
+ PDP11.
+
+2011-04-19 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/ext/complex7.C: New.
+
+ * g++.dg/ext/attrib41.C: New.
+
+2011-04-19 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR testsuite/48676
+ * gcc.dg/torture/pr37868.c: Skip on sh*-*-*.
+
+2011-04-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/48678
+ * gcc.target/i386/pr48678.c: New test.
+
+2011-04-19 Martin Jambor <mjambor@suse.cz>
+
+ * g++.dg/opt/devirt1.C: Bump to -O2, remove XFAIL.
+ * g++.dg/opt/devirt2.C: New test.
+ * g++.dg/ipa/devirt-g-1.C: Likewise.
+
+2011-04-19 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48588
+ * gfortran.dg/whole_file_33.f90: New.
+
+2011-04-19 Martin Jambor <mjambor@suse.cz>
+
+ * g++.dg/ipa/devirt-7.C: New test.
+
+2011-04-19 Richard Guenther <rguenther@suse.de>
+
+ PR lto/48207
+ * g++.dg/lto/pr48207_0.C: New testcase.
+
+2011-04-18 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/init/void1.C: New.
+
+ * g++.dg/cpp0x/union4.C: New.
+
+2011-04-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/48661
+ * g++.dg/torture/pr48661.C: New test.
+
+ PR c++/48632
+ * g++.dg/gomp/pr48632.C: New test.
+
+2011-04-18 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/sse2-maskmovdqu.c: New test.
+ * gcc.target/i386/avx-vmaskmovdqu.c: Ditto.
+
+2011-04-18 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ * gfortran.dg/coarray_17.f90: New.
+ * gfortran.dg/coarray_10.f90: Update dg-error.
+
+2011-04-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR testsuite/48251
+ * gcc.dg/guality/guality.exp: Disable on alpha*-dec-osf*.
+ * gfortran.dg/guality/guality.exp: Likewise.
+
+2011-04-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gfortran.dg/fmt_g0_5.f08: Use dg-add-options ieee.
+
+2011-04-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.dg/vect/pr48377.c: Remove dg-do run.
+
+2011-04-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.dg/ipa/pr48195.c: Add dg-require-effective-target lto.
+
+2011-04-18 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/46364
+ * g++.dg/torture/pr46364.C: New testcase.
+
+2011-04-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * obj-c++.dg/dwarf-2.mm: Skip on alpha*-dec-osf*.
+
+2011-04-18 Alexander Monakov <amonakov@ispras.ru>
+
+ * gcc.dg/pr48235.c: Add dg-require-effective-target freorder.
+
+2011-04-18 Ulrich Weigand <ulrich.weigand@linaro.org>
+ Ira Rosen <ira.rosen@linaro.org>
+
+ PR target/48252
+ * gcc.target/arm/pr48252.c: New test.
+
+2011-04-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48616
+ * gcc.dg/pr48616.c: New test.
+
+2011-04-18 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ * gfortran.dg/coarray_16.f90: New.
+
+2011-04-18 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/48462
+ * gfortran.dg/realloc_on_assign_7.f03: New test.
+
+2011-04-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/48602
+ * gfortran.dg/fmt_g0_6.f08: New test.
+
+2011-04-17 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/sfinae16.C: New.
+
+2011-04-17 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.target/mips/reg-var-1.c: New test.
+
+2011-04-17 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/winline-5.c: Update testcase.
+
+2011-04-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/discr27.ad[sb]: Move dg directive.
+ * gnat.dg/discr28.ad[sb]: New test.
+ * gnat.dg/discr28_pkg.ads: New helper.
+
+2011-04-17 Michael Matz <matz@suse.de>
+
+ PR tree-optimization/48622
+ PR lto/48645
+ * gcc.dg/lto/pr48622_0.c: New test.
+
+2011-04-16 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/avx256-unaligned-load-1.c: Update scan patterns.
+ * gcc.target/i386/avx256-unaligned-load-2.c: Ditto.
+ * gcc.target/i386/avx256-unaligned-load-3.c: Ditto.
+ * gcc.target/i386/avx256-unaligned-store-1.c: Ditto.
+ * gcc.target/i386/avx256-unaligned-store-2.c: Ditto.
+ * gcc.target/i386/avx256-unaligned-store-3.c: Ditto.
+
+2011-04-15 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/range-for17.C: New.
+
+2011-04-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
+
+ * g++.dg/cpp0x/range-for2.C: Correct for declaration.
+ * g++.dg/cpp0x/range-for3.C: Likewise.
+ * g++.dg/cpp0x/range-for9.C: Correct error message.
+ * g++.dg/cpp0x/range-for11.C: New.
+ * g++.dg/cpp0x/range-for12.C: New.
+ * g++.dg/cpp0x/range-for13.C: New.
+ * g++.dg/cpp0x/range-for14.C: New.
+ * g++.dg/cpp0x/range-for15.C: New.
+ * g++.dg/cpp0x/range-for16.C: New.
+
+2011-04-15 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ * gfortran.dg/coarray_15.f90: Change to dg-do run.
+
+2011-04-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc.dg/naming-4.m: Updated.
+ * objc.dg/naming-5.m: Updated.
+ * objc.dg/naming-6.m: New.
+ * objc.dg/naming-7.m: New.
+ * obj-c++.dg/naming-1.mm: Updated.
+ * obj-c++.dg/naming-2.mm: Updated.
+ * obj-c++.dg/naming-3.mm: New.
+ * obj-c++.dg/naming-4.mm: New.
+
+2011-04-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/48589
+ * gfortran.dg/fmt_g0_5.f08: New test.
+
+2011-04-15 Richard Guenther <rguenther@suse.de>
+
+ PR testsuite/48286
+ * gfortran.dg/cray_pointers_8.f90: Use -ffloat-store.
+
+2011-04-15 Georg-Johann Lay <avr@gjlay.de>
+
+ * gcc.target/avr/torture/pr41885.c (dg-options): Change
+ -finline-limit=0 to -fno-inline
+
+2011-04-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/48614
+ * gcc.target/i386/pr46084.c: Require avx_runtime instead of
+ just avx.
+
+2011-04-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/48605
+ * gcc.target/i386/sse4_1-insertps-3.c: New test.
+ * gcc.target/i386/sse4_1-insertps-4.c: New test.
+ * gcc.target/i386/avx-insertps-3.c: New test.
+ * gcc.target/i386/avx-insertps-4.c: New test.
+
+2011-04-14 Georg-Johann Lay <avr@gjlay.de>
+
+ * gcc.target/avr/torture/pr41885.c (dg-options): Add
+ -finline-limit=0
+
+2011-04-14 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/46779
+ PR target/45291
+ PR target/41894
+ * gcc.target/avr/pr46779-1.c: New test case
+ * gcc.target/avr/pr46779-2.c: New test case
+
+2011-04-14 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/sfinae15.C: New.
+
+ * g++.dg/cpp0x/sfinae14.C: New.
+
+ * g++.dg/ext/vla10.C: New.
+
+2011-04-14 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/ssa-dse-14.c: New testcase.
+
+2011-04-14 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/fold-bitand-4.c: Move ...
+ * c-c++-common/fold-bitand-4.c: ... here. Adjust slightly.
+
+2011-04-14 Georg-Johann Lay <avr@gjlay.de>
+
+ * gcc.target/avr/trivial.c: Fix line endings. Make PROGMEM
+ variables const.
+ * gcc.target/avr/torture/trivial.c: Ditto.
+
+2011-04-13 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/template/operator11.C: New.
+
+2011-04-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/48591
+ * gcc.dg/gomp/pr48591.c: New test.
+
+ PR c++/48570
+ * g++.dg/cpp0x/constexpr-wstring1.C: New test.
+ * g++.dg/cpp0x/constexpr-wstring2.C: New test.
+
+2011-04-13 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/48574
+ * g++.dg/template/dependent-expr7.C: New test case.
+
+2011-04-13 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/sfinae13.C: New.
+
+2011-04-13 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/sse2-init-v2di-2.c: Update scan pattern.
+
+2011-04-12 Janis Johnson <janisjo@codesourcery.com>
+
+ * gcc.target/arm/pr43698.c: Remove -march option.
+
+2011-04-12 Janis Johnson <janisjo@codesourcery.com>
+
+ * gcc.target/arm/sync-1.c: Limit to sync_int_long, do not use
+ -march option.
+
+2011-04-12 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/48360
+ PR fortran/48456
+ * gfortran.dg/realloc_on_assign_6.f03: New test.
+
+2011-04-12 Kai Tietz <ktietz@redhat.com>
+
+ * g++.dg/ext/bitfield2.C: Add for i?86/x86_64-*-mingw*
+ targets the additional -mno-ms-bitfields and
+ -Wno-packed-bitfield-compat options.
+ * g++.dg/ext/bitfield3.C: Likewise.
+ * g++.dg/ext/bitfield4.C: Likewise.
+ * g++.dg/ext/bitfield5.C: Likewise.
+ * gcc.dg/bitfld-15.c: Likewise.
+ * gcc.dg/bitfld-16.c: Likewise.
+ * gcc.dg/bitfld-17.c: Likewise.
+ * gcc.dg/bitfld-18.c: Likewise.
+
+2011-04-12 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * gcc.target/arm/neon-vld3-1.c: New test.
+ * gcc.target/arm/neon-vst3-1.c: New test.
+ * gcc.target/arm/neon/v*.c: Regenerate.
+
+2011-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/48549
+ * g++.dg/opt/pr48549.C: New test.
+
+2011-04-12 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/46076
+ * gcc.dg/tree-ssa/pr46076.c: Un-XFAIL.
+
+2011-04-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR testsuite/21164
+ * lib/compat.exp (compat-execute): Declare unsupported after
+ stripping path from src1.
+ * lib/lto.exp (lto-execute): Likewise.
+
+2011-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/48552
+ * gcc.dg/pr48552-1.c: New test.
+ * gcc.dg/pr48552-2.c: New test.
+
+2011-04-11 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/sfinae12.C: New.
+
+ * g++.dg/cpp0x/enum10.C: New.
+
+ * g++.dg/cpp0x/lambda/lambda-this4.C: New.
+
+ * g++.dg/cpp0x/rv-func.C: New.
+
+2011-04-11 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.dg/torture/pr47917.c: Define _ISO_C_SOURCE=19990L for
+ alpha*-dec-osf5*.
+
+2011-04-11 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/48195
+ * gcc.dg/ipa/pr48195.c: New test.
+
+2011-04-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/return3.adb: Remove unused switch.
+
+2011-04-08 Mike Stump <mikestump@comcast.net>
+
+ PR testsuite/48506
+ * gcc.dg/tree-ssa/ssa-ccp-17.c: Robustify against ports that
+ default to fno-common.
+
+2011-04-08 Georg-Johann Lay <avr@gjlay.de>
+
+ * gcc.dg/sibcall-3.c: Don't xfail on AVR.
+ * gcc.dg/sibcall-4.c: Don't xfail on AVR.
+
+2011-04-08 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/48448
+ * gfortran.dg/function_optimize_5.f90: New test.
+
+2011-04-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/aggr17.adb: New test.
+ * gnat.dg/aggr18.adb: Likewise.
+
+2011-04-08 Michael Matz <matz@suse.de>
+
+ PR middle-end/48389
+ * gcc.target/i386/pr48389.c: New test.
+
+2011-04-08 Andrey Belevantsev <abel@ispras.ru>
+
+ PR rtl-optimization/48272
+ * g++.dg/opt/pr48272.C: New.
+
+2011-04-08 Dmitry Melnik <dm@ispras.ru>
+
+ PR rtl-optimization/48235
+ * gcc.dg/pr48235.c: New.
+
+2011-04-08 Alexander Monakov <amonakov@ispras.ru>
+
+ PR rtl-optimization/48302
+ * g++.dg/opt/pr48302.C: New.
+
+2011-04-08 Alexander Monakov <amonakov@ispras.ru>
+
+ PR target/48273
+ * g++.dg/opt/pr48273.C: New.
+
+2011-04-08 Alexander Monakov <amonakov@ispras.ru>
+
+ PR rtl-optimization/48442
+ * gcc.dg/pr48442.c: New.
+
+2011-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48377
+ * gcc.dg/vect/pr48377.c: New test.
+
+2011-04-07 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/regress/call1.C: New.
+
+ * g++.dg/cpp0x/variadic107.C: New.
+
+ * g++.dg/cpp0x/sfinae11.C: New.
+ * g++.dg/cpp0x/noexcept02.C: Fix.
+
+ * g++.dg/cpp0x/sfinae10.C: New.
+
+ * g++.dg/cpp0x/sfinae9.C: New.
+
+ * c-c++-common/Wcast-qual-1.c: Move here from...
+ * gcc.dg/cast-qual-3.c: ...here, and...
+ * g++.dg/warn/Wcast-qual2.C: ...here.
+
+ * g++.dg/cpp0x/sfinae8.C: New.
+
+ * g++.dg/cpp0x/sfinae7.C: New.
+
+ * g++.dg/cpp0x/enum9.C: New.
+
+2011-04-07 Mike Stump <mikestump@comcast.net>
+
+ * gcc.dg/torture/stackalign/non-local-goto-5.c: Fix for targets
+ with no trampolines.
+
+2011-04-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/48117
+ * gfortran.dg/gomp/pr48117.f90: New test.
+
+ PR debug/48343
+ * gcc.dg/torture/pr48343.c: New test.
+
+2011-04-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.target/i386/asm-6.c: Remove dg-xfail-if.
+
+2011-04-07 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ * gcc.dg/lto/20090210_0.c: Require tls_runtime target.
+
+2011-04-07 Tom de Vries <tom@codesourcery.com>
+
+ PR target/43920
+ * lib/scanasm.exp (object-size): New proc.
+ * gcc.target/arm/pr43920-2.c: New test.
+
+2011-04-06 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ PR fortran/48477
+ * gfortran.dg/coarray_13.f90: Avoid out-of-bounds access.
+
+2011-04-06 Steve Ellcey <sje@cup.hp.com>
+
+ * gcc.dg/mtune.c: Prune note from output.
+
+2011-04-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/48466
+ * gcc.dg/guality/pr36977.c: New test.
+ * gcc.dg/guality/pr48466.c: New test.
+
+2011-04-06 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ * gcc.target/arm/pr43920-1.c: Fix accidental duplication.
+
+2011-04-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/return3.adb: New test.
+
+2011-04-06 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/47663
+ * gcc.dg/tree-ssa/inline-8.c: New testcase.
+
+2011-04-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/torture/pr47917.c: Add -D_XOPEN_SOURCE=500 to dg-options for
+ Solaris 8 and 9 as well.
+
+2011-04-05 Tom de Vries <tom@codesourcery.com>
+
+ PR target/43920
+ * gcc.target/arm/pr43920-1.c: New test.
+
+2011-04-04 Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * g++.dg/abi/arm_cxa_vec1.C (__ARM_EABI__): Fix typo.
+ (cctor): Actually return the value.
+ (main): Cast return values.
+
+2010-04-04 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * gfortran.dg/character_comparison_8.f90: New test.
+
+2010-04-04 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * frontend-passes: (optimize_lexical_comparison): New function.
+ (optimize_expr): Call it.
+ (optimize_comparison): Also handle lexical comparison functions.
+ Return false instad of -2 for unequal comparison.
+
+2011-04-04 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/48412
+ * function_optimize_4.f90: New test.
+
+2011-04-04 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/18918
+ * gfortran.dg/coarray_10.f90: Add coarray descriptor diagnostic check.
+ * gfortran.dg/coarray_13.f90: Add checks for run-time cobounds.
+ * gfortran.dg/coarray_15.f90: New.
+
+2011-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gfortran.dg/bessel_6.f90: Use dg-add-options ieee.
+ * gfortran.dg/bessel_7.f90: Likewise.
+
+2011-04-03 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/bessel_6.f90: Reduce mymax for Tru64.
+
+2011-04-03 Richard Guenther <rguenther@suse.de>
+ Ira Rosen <ira.rosen@linaro.org>
+
+ * gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c: New test.
+ * gcc.dg/vect/vect.exp: Run if-cvt-stores-vect* tests with
+ -ftree-loop-if-convert-stores.
+
+2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/aggr2.ads: New test.
+
+2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/debug2.ad[sb]: New test.
+ * gnat.dg/debug2_pkg.ads: New helper.
+ * gnat.dg/debug3.ad[sb]: New test.
+
+2011-04-01 Uros Bizjak <ubizjak@gmail.com>
+
+ * go.test/go-test.exp (go-set-goarch): Recognize alpha*-*-*.
+
+2011-04-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/48335
+ * gcc.c-torture/compile/pr48335-1.c: New test.
+ * gcc.dg/pr48335-1.c: New test.
+ * gcc.dg/pr48335-2.c: New test.
+ * gcc.dg/pr48335-3.c: New test.
+ * gcc.dg/pr48335-4.c: New test.
+ * gcc.dg/pr48335-5.c: New test.
+ * gcc.dg/pr48335-6.c: New test.
+ * gcc.dg/pr48335-7.c: New test.
+ * gcc.dg/pr48335-8.c: New test.
+ * gcc.target/i386/pr48335-1.c: New test.
+
+2011-04-01 Vincent Lefevre <vincent+gcc@vinc17.org>
+
+ PR c/36299
+ * gcc.dg/Waddress.c: New test.
+
+2011-04-01 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/48352
+ * gfortran.dg/function_optimize_3.f90: New test.
+
+2011-04-01 Bernd Schmidt <bernds@codesourcery.com>
+
+ * gcc.c-torture/compile/20110401-1.c: New test.
+
+ * g++.dg/lto/20091002-1_0.C: Use "dg-require-effective-target fpic".
+ * g++.dg/lto/20091002-2_0.C: Likewise.
+ * g++.dg/lto/20090303_0.c: Likewise.
+ * g++.dg/lto/20091004-1_0.C: Likewise.
+ * g++.dg/lto/20091002-3_0.C: Likewise.
+ * g++.dg/lto/20091004-2_0.C: Likewise.
+ * g++.dg/lto/20081123_0.C: Likewise.
+ * g++.dg/lto/20090313_0.C: Likewise.
+ * g++.dg/lto/20081109-1_0.C: Likewise.
+ * g++.dg/lto/20081219_0.C: Likewise.
+ * g++.dg/lto/20081204-1_0.C: Likewise.
+ * g++.dg/lto/20090302_0.C: Likewise.
+ * g++.dg/lto/20081119-1_0.C: Likewise.
+ * g++.dg/lto/20081118_0.C: Likewise.
+ * gcc.dg/lto/20091020-2_0.c: Likewise.
+ * gcc.dg/lto/20090210_0.c: Likewise.
+ * gcc.dg/lto/20081204-1_0.c: Likewise.
+ * gcc.dg/lto/20081224_0.c: Likewise.
+ * gcc.dg/lto/20090219_0.c: Likewise.
+ * gcc.dg/lto/20091014-1_0.c: Likewise.
+ * gcc.dg/lto/20091016-1_0.c: Likewise.
+ * gcc.dg/lto/20090206-2_0.c: Likewise.
+ * gcc.dg/lto/20090116_0.c: Likewise.
+ * gcc.dg/lto/20091013-1_0.c: Likewise.
+ * gcc.dg/lto/20091015-1_0.c: Likewise.
+ * gcc.dg/lto/20090126-2_0.c: Likewise.
+
+2011-03-31 Ian Lance Taylor <iant@google.com>
+
+ * go.test/go-test.exp (go-set-goarch): Recognize MIPS ABIs.
+
+2011-03-31 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt16.adb: New test.
+
+2011-03-31 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/defaulted24.C: New.
+
+2011-03-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR target/16292
+ * gfortran.dg/g77/cabs.f: Only xfail execution on mips-sgi-irix6*
+ with -O0.
+
+2011-03-31 Eric Botcazou <ebotcazou@adacore.com>
+
+ * g++.dg/other/i386-9.C: New test.
+
+2011-03-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * go.test/go-test.exp (go-set-goarch): Use sparc64 for 64-bit SPARC.
+
+2011-03-30 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/regress/error-recovery1.C: New.
+
+ * g++.dg/cpp0x/regress/isnan.C: New.
+
+ * g++.dg/cpp0x/initlist46.C: New.
+
+2011-03-30 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR target/47551
+ * gcc.target/arm/neon-modes-2.c: New test.
+
+2011-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/48305
+ * gcc.c-torture/compile/pr48305.c: New test.
+
+2011-03-29 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/regress/value-dep1.C: New.
+
+2011-03-29 Steve Ellcey <sje@cup.hp.com>
+
+ * gcc.dg/torture/pr47917.c: Use -std=gnu99 on HP-UX.
+
+2011-03-29 Ian Lance Taylor <iant@google.com>
+
+ * go.test/go-test.exp: Handle the test lines used in several new
+ tests.
+ (errchk): Add opts parameter. Change all callers. Handle parens
+ in regexps.
+
+2011-03-29 Peter Bergner <bergner@vnet.ibm.com>
+ Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ * gcc.dg/stack-usage-1.c (SIZE): Provide proper values for __ppc64__
+ and __APPLE__ && __PPC__ && __ALTIVEC__.
+
+2011-03-29 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/dependent1.C: New.
+
+ * g++.dg/cpp0x/constexpr-48089.C: Adjust.
+
+ * g++.dg/cpp0x/constexpr-memfn1.C: New.
+
+ * g++.dg/cpp0x/constexpr-diag1.C: Adjust error locations.
+
+2011-03-29 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/48095
+ * gfortran.dg/module_md5_1.f90: Modified MD5 sum.
+ * gfortran.dg/proc_ptr_comp_32.f90: New.
+
+2011-03-29 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * gfortran.dg/function_optimize_1.f90: Add -Warray-temporaries,
+ check for corresponding warning.
+
+2011-03-28 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/rv-deduce2.C: New.
+
+2011-03-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/48203
+ * gcc.dg/pr48203.c: New test.
+
+2011-03-28 Jeff Law <law@redhat.com>
+
+ * gcc.dg/tree-ssa/ssa-dom-thread-3.c: New test.
+
+2011-03-28 Peter Bergner <bergner@vnet.ibm.com>
+
+ * gcc.dg/stack-usage-1.c (SIZE): Provide proper values for __PPC64__
+ and __PPC__ && __ALTIVEC__.
+
+2011-03-28 Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ PR testsuite/48238
+ * gcc.dg/debug/dwarf2/pr47939-1.c: Generalize scan-assembler regex.
+ * gcc.dg/debug/dwarf2/pr47939-2.c: Likewise.
+ * gcc.dg/debug/dwarf2/pr47939-3.c: Likewise.
+ * gcc.dg/debug/dwarf2/pr47939-4.c: Likewise.
+
+2011-03-28 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/initlist-array2.C: New.
+
+ * g++.dg/cpp0x/initlist-array1.C: New.
+
+ * g++.dg/cpp0x/constexpr-compound.C: New.
+
+ * g++.dg/cpp0x/constexpr-using.C: New.
+
+ * g++.dg/cpp0x/constexpr-noexcept.C: New.
+
+2011-03-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR testsuite/48276
+ * gcc.target/i386/pr47502-2.c: Add -fno-pic.
+
+2011-03-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/slp-1.c: New test.
+
+2011-03-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gcc.target/i386/avx256-unaligned-load-1.c: New.
+ * gcc.target/i386/avx256-unaligned-load-2.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-load-3.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-load-4.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-load-5.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-load-6.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-load-7.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-store-1.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-store-2.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-store-3.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-store-4.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-store-5.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-store-6.c: Likewise.
+ * gcc.target/i386/avx256-unaligned-store-7.c: Likewise.
+
+2011-03-27 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/47065
+ * gfortran.dg/trim_optimize_5.f90: New test.
+ * gfortran.dg/trim_optimize_6.f90: New test.
+
+2011-03-27 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR target/38598
+ * gcc.target/mips/madd-7.c: Remove -mlong32.
+ * gcc.target/mips/msub-7.c: Likewise.
+
+2011-03-27 Ira Rosen <ira.rosen@linaro.org>
+
+ * gcc.dg/vect/vect-outer-5.c: Reduce the distance between data
+ accesses to preserve the meaning of the test for doubleword vectors.
+ * gcc.dg/vect/no-vfa-pr29145.c: Likewise.
+ * gcc.dg/vect/slp-3.c: Reduce the loop bound for the same reason.
+
+2011-03-26 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/48291
+ * gfortran.dg/class_42.f03: New.
+
+2011-03-26 Ira Rosen <ira.rosen@linaro.org>
+
+ * gcc.dg/vect/vect-cselim-1.c: Fail on targets that don't support
+ strided accesses.
+
+2011-03-26 Andrey Belevantsev <abel@ispras.ru>
+
+ PR rtl-optimization/48144
+ * gcc.dg/pr48144.c: New test.
+
+2011-03-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/discr27.ad[sb]: New test.
+
+2011-03-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/limited_with2.ad[sb]: New test.
+ * gnat.dg/limited_with2_pkg1.ads: New helper.
+ * gnat.dg/limited_with2_pkg2.ads: Likewise.
+
+2011-03-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt15.adb: New test.
+ * gnat.dg/opt15_pkg.ad[sb]: New helper.
+
+2011-03-25 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/48174
+ PR fortran/45304
+ * gfortran.dg/ishft_4.f90: Adapt scan-tree-dump-times.
+ * gfortran.dg/leadz_trailz_3.f90: Ditto
+
+2011-03-25 Martin Jambor <mjambor@suse.cz>
+
+ * gcc.c-torture/compile/pr44686.c: Do not explicitely specify -O2.
+
+2011-03-25 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/defaulted22.C: New.
+ * g++.dg/cpp0x/defaulted23.C: New.
+ * g++.dg/cpp0x/defaulted15.C: Adjust.
+
+2011-03-25 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/move1.C: New.
+
+2011-03-25 Ira Rosen <ira.rosen@linaro.org>
+
+ PR target/48287
+ * gcc.dg/vect/vect-cselim-1.c: Fail for vect_no_align.
+
+2011-03-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.dg/torture/pr47917.c: Add -D_XOPEN_SOURCE=500 to dg-options
+ for mips-sgi-irix6.5.
+ Replace snprintf prototype by <stdio.h>.
+
+2011-03-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR testsuite/48283
+ * gcc.dg/graphite/block-3.c: Add dg-require-effective-target
+ run_expensive_tests.
+ * gcc.dg/graphite/block-4.c: Likewise.
+ * gcc.dg/graphite/block-7.c: Likewise.
+ * gcc.dg/graphite/block-8.c: Likewise.
+
+2011-03-25 Richard Guenther <rguenther@suse.de>
+
+ * g++.dg/tree-ssa/pr41186.C: Scan the appropriate FRE dump.
+ * g++.dg/tree-ssa/pr8781.C: Likewise.
+ * gcc.dg/ipa/ipa-pta-13.c: Likewise.
+ * gcc.dg/ipa/ipa-pta-3.c: Likewise.
+ * gcc.dg/ipa/ipa-pta-4.c: Likewise.
+ * gcc.dg/tree-ssa/20041122-1.c: Likewise.
+ * gcc.dg/tree-ssa/alias-18.c: Likewise.
+ * gcc.dg/tree-ssa/foldstring-1.c: Likewise.
+ * gcc.dg/tree-ssa/forwprop-10.c: Likewise.
+ * gcc.dg/tree-ssa/forwprop-9.c: Likewise.
+ * gcc.dg/tree-ssa/fre-vce-1.c: Likewise.
+ * gcc.dg/tree-ssa/loadpre6.c: Likewise.
+ * gcc.dg/tree-ssa/pr21574.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-dom-cse-1.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-1.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-11.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-12.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-fre-15.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-16.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-17.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-18.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-19.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-2.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-21.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-22.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-23.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-24.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-25.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-26.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-27.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-3.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-4.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-5.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-6.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-7.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-8.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-9.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-10.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-26.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-7.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-8.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-9.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-sccvn-1.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-sccvn-2.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-sccvn-3.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-sccvn-4.c: Likewise.
+ * gcc.dg/tree-ssa/struct-aliasing-1.c: Likewise.
+ * gcc.dg/tree-ssa/struct-aliasing-2.c: Likewise.
+ * c-c++-common/pr46562-2.c: Likewise.
+ * gfortran.dg/pr42108.f90: Likewise.
+ * gcc.dg/torture/pta-structcopy-1.c: Scan ealias dump, force
+ foo to be inlined even at -O1.
+ * gcc.dg/tree-ssa/ssa-dce-4.c: Disable FRE.
+ * gcc.dg/ipa/ipa-pta-14.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-fre-1.c: Adjust.
+ * gcc.dg/matrix/matrix.exp: Disable FRE.
+
+2011-03-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/48204
+ * gcc.dg/dfp/pr48204.c: New test.
+
+2011-03-24 Steve Ellcey <sje@cup.hp.com>
+
+ PR target/48209
+ * gcc.c-torture/execute/pr47917.c: Move this...
+ * gcc.dg/torture/pr47917.c: to here and add xfails.
+
+2011-03-24 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/array16.ad[sb]: New test.
+ * gnat.dg/array16.ads: New helper.
+
+2011-03-24 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/derived_type2.adb: New test.
+
+2011-03-24 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48271
+ * g++.dg/torture/pr48271.C: New testcase.
+
+2011-03-24 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/array15.ad[sb]: New test.
+
+2011-03-24 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/48237
+ * gcc.target/i386/pr48237.c: New test.
+
+2011-03-24 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/48269
+ * gcc.dg/builtin-object-size-10.c: New testcase.
+
+2011-03-24 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/46562
+ * c-c++-common/pr46562-2.c: New testcase.
+ * c-c++-common/pr46562.c: Likewise.
+
+2011-03-24 Ira Rosen <ira.rosen@linaro.org>
+
+ * gcc.dg/vect/vect-cselim-1.c: New test.
+ * gcc.dg/vect/vect-cselim-2.c: New test.
+
+2011-03-23 Chung-Lin Tang <cltang@codesourcery.com>
+
+ * gcc.target/arm/pr46934.c: New.
+
+2011-03-23 Ian Lance Taylor <iant@google.com>
+
+ * go.test/go-test.exp (errchk): Ignore lines containing ////.
+
+2011-03-23 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/struct: Remove directory and contents.
+
+2011-03-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR testsuite/48251
+ * g++.dg/guality/guality.exp: Disable on alpha*-dec-osf*.
+
+2011-03-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/discr26.ad[sb]: New test.
+ * gnat.dg/discr26_pkg.ads: New helper.
+
+2011-03-23 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR target/47553
+ * gcc.target/arm/neon-vld-1.c: New test.
+
+2011-03-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/array14.ad[sb]: New test.
+ * gnat.dg/array14_pkg.ads: New helper.
+
+2011-03-22 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.c-torture/execute/920501-8.x: Remove.
+ * gcc.c-torture/execute/930513-1.x: Remove.
+ * gcc.c-torture/execute/960312-1.x: Remove.
+ * gcc.c-torture/compile/20000804-1.c,
+ gcc.c-torture/compile/20001205-1.c,
+ gcc.c-torture/compile/20001226-1.c,
+ gcc.c-torture/compile/20010518-2.c,
+ gcc.c-torture/compile/20020312-1.c,
+ gcc.c-torture/compile/20020604-1.c,
+ gcc.c-torture/compile/920501-12.c,
+ gcc.c-torture/compile/920501-4.c,
+ gcc.c-torture/compile/920520-1.c,
+ gcc.c-torture/compile/980506-1.c,
+ gcc.c-torture/execute/980709-1.x,
+ gcc.c-torture/execute/990826-0.x: Don't XFAIL or use special
+ options for m68hc11.
+ * gcc.dg/cpp/assert4.c: Don't handle ARC.
+ * gcc.dg/sibcall-3.c, gcc.dg/sibcall-4.c: Don't XFAIL for arc or
+ m68hc11.
+
+2011-03-22 Nick Clifton <nickc@redhat.com>
+
+ * lib/target-supports.exp (check_profiling_available): Add MN10300
+ to the list of targets that do not support profiling. Restore
+ alpha sorting to this list.
+
+2011-03-22 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * gcc.dg/torture/vector-1.c: On powerpc add -fabi=altivec to avoid
+ failure on 32-bit systems.
+ * gcc.dg/torture/vector-2.c: Ditto.
+
+2011-03-22 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48228
+ * gcc.dg/Wstrict-overflow-23.c: New testcase.
+
+2011-03-21 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * gcc.dg/torture/va-arg-25.c: Add -mabi=altivec -maltivec for
+ powerpc.
+
+ PR target/48226
+ * gcc.target/powerpc/pr48226.c: New file.
+
+2011-03-21 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ * lib/prune.exp (prune_gcc_output): Prune "could not create
+ compact unwind for" warnings.
+
+2011-03-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/42544
+ PR c/48197
+ * gcc.c-torture/execute/pr42544.c: New test.
+ * gcc.c-torture/execute/pr48197.c: New test.
+
+2011-03-21 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR preprocessor/48192
+ * gcc.target/powerpc/pr48192.c: New file.
+
+ PR target/48053
+ * gcc.target/powerpc/pr48053-3.c: New file, add test case for
+ split problem of 0 being loaded in a VSX register.
+
+2011-03-21 Richard Guenther <rguenther@suse.de>
+
+ PR c/47939
+ * gcc.dg/debug/dwarf2/pr47939-1.c: New testcase.
+ * gcc.dg/debug/dwarf2/pr47939-2.c: Likewise.
+ * gcc.dg/debug/dwarf2/pr47939-3.c: Likewise.
+ * gcc.dg/debug/dwarf2/pr47939-4.c: Likewise.
+
+2011-03-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/48213
+ * gcc.dg/pr48213.c: New test.
+
+2011-03-21 Kai Tietz <ktietz@redhat.com>
+
+ PR target/12171
+ * g++.dg/plugin/attribute_plugin.c: Adjust test.
+
+2011-03-21 Chung-Lin Tang <cltang@codesourcery.com>
+
+ * gcc.target/arm/xor-and.c: New.
+
+2010-03-21 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/22572
+ * gfortran.dg/function_optimize_1.f90: New test.
+ * gfortran.dg/function_optimize_2.f90: New test.
+
+2011-03-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR rtl-optimization/47502
+ * gcc.target/i386/pr47502-1.c: New.
+ * gcc.target/i386/pr47502-2.c: Likewise.
+
+2011-03-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/48156
+ * gcc.dg/pr48156.c: New test.
+
+2011-03-19 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR libfortran/47439
+ * gfortran.dg/scratch_1.f90: Adjust test.
+
+2011-03-19 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR libfortran/47439
+ * gfortran.dg/scratch_1.f90: New test.
+
+2011-03-18 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/c1x-typedef-1.c: Expect errors for redefinitions of
+ variably modified typedefs.
+ * gcc.dg/c1x-typedef-2.c: Remove.
+
+2011-03-18 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/c1x-anon-struct-1.c: Don't test use of typedefs.
+ * gcc.dg/c1x-anon-struct-3.c: New test.
+ * gcc.dg/anon-struct-11.c: Update.
+
+2011-03-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.dg/vect/slp-multitypes-2.c: Replace dg-do run with
+ dg-xfail-run-if.
+ Only xfail with gas.
+
+2011-03-18 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/template/fn-ptr1.C: New.
+
+ * g++.dg/overload/volatile1.C: New.
+
+ * g++.dg/opt/pr23372.C: New.
+
+ * g++.dg/ext/attrib32.C: Expect errors on the two-names case.
+
+2011-03-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR middle-end/47405
+ * gcc.dg/torture/20090618-1.c: Skip on mips-sgi-irix*.
+
+2011-03-18 Chung-Lin Tang <cltang@codesourcery.com>
+
+ * gcc.target/arm/unsigned-extend-1.c: New.
+
+2011-03-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR bootstrap/48161
+ * gcc.c-torture/compile/pr48161.c: New test.
+
+2011-03-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR middle-end/47725
+ * gcc.dg/torture/pr47725.c: New.
+
+2011-03-17 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/constexpr-overflow2.C: New.
+ * g++.dg/cpp0x/constexpr-data2.C: Remove FIXME.
+
+2011-03-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/elab2.ads: New test.
+ * gnat.dg/specs/elab2_pkg.ads: New helper.
+
+2011-03-17 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/decltype-1212.C: New.
+ * g++.dg/cpp0x/rv-return.C: Adjust expected type.
+
+2011-03-17 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/parse/memfnquals1.C: New.
+
+2011-03-17 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/48134
+ * gcc.dg/pr48134.c: New testcase.
+
+2011-03-17 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/48165
+ * g++.dg/torture/pr48165.C: New testcase.
+
+2011-03-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/48141
+ * gcc.dg/pr48141.c: New test.
+
+2011-03-16 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/constexpr-48089.C: New.
+
+ * g++.dg/cpp0x/constexpr-abi1.C: New.
+
+ * g++.dg/cpp0x/constexpr-46336.C: New.
+ * g++.dg/parse/friend5.C: Adjust expected errors.
+
+ * g++.dg/cpp0x/constexpr-47570.C: New.
+
+2011-03-16 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/47510
+ * ++.dg/debug/dwarf2/typedef6.C: New test.
+
+2011-03-16 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/elision2.C: New.
+
+ * g++.dg/cpp0x/constexpr-array3.C: New.
+
+2011-03-16 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/sfinae6.C: New.
+ * gcc/testsuite/g++.dg/cpp0x/initlist38.C: Adjust expected error.
+ * gcc/testsuite/g++.dg/cpp0x/pr45908.C: Likewise.
+ * gcc/testsuite/g++.dg/cpp0x/sfinae6.C: Likewise.
+ * gcc/testsuite/g++.old-deja/g++.jason/conversion11.C: Likewise.
+ * gcc/testsuite/g++.old-deja/g++.law/arg11.C: Likewise.
+
+2011-03-16 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/template/incomplete6.C: New.
+
+2011-03-16 Jeff Law <law@redhat.com>
+
+ * gcc.dg/tree-ssa/vrp55.c: New test.
+
+2011-03-16 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/auto22.C: New.
+
+2011-03-16 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/guality/vla-1.c (main): Use result of f1 to avoid
+ optimizing it away if promoted to const.
+
+2011-03-16 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48149
+ * gcc.dg/fold-complex-1.c: New testcase.
+
+2011-03-16 Richard Guenther <rguenther@suse.de>
+
+ PR testsuite/48147
+ * gcc.dg/guality/pr45882.c: Really make sure no inlining
+ or cloning happens.
+
+2011-03-16 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/26134
+ * gcc.dg/tree-ssa/complex-6.c: New testcase.
+
+2011-03-16 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48146
+ * gcc.dg/torture/pr48146.c: New testcase.
+
+2011-03-16 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/pr14814.c: Adjust.
+ * gcc.dg/tree-ssa/ssa-ccp-19.c: Likewise.
+
+2011-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/48136
+ * gcc.c-torture/compile/pr48136.c: New test.
+
+ * g++.dg/debug/dwarf2/icf.C: Adjust for -fenable-icf-debug removal.
+
+ PR debug/45882
+ * gcc.dg/guality/pr45882.c: New test.
+
+2011-03-15 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/constexpr-recursion.C: New.
+
+ * g++.dg/cpp0x/implicit11.C: New.
+
+2011-03-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
+
+ * g++.dg/cpp0x/constexpr-attribute.C: New.
+
+2011-03-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ * g++.dg/parse/pr34758.C: New.
+
+2011-03-15 Xinliang David Li <davidxl@google.com>
+
+ PR c/47837
+ * gcc.dg/uninit-pred-7_d.c: New test.
+ * gcc.dg/uninit-pred-8_d.c: New test.
+
+2011-03-15 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ PR target/46788
+ * gcc.target/arm/pr46788.c: New.
+
+2011-03-15 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/47650
+ * gfortran.dg/c_f_pointer_tests_3.f90: Adjust.
+ * gfortran.dg/ishft_4.f90: Likewise.
+ * gfortran.dg/leadz_trailz_3.f90: Likewise.
+
+2011-03-15 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/13954
+ * g++.dg/tree-ssa/pr13954.C: New testcase.
+
+2011-03-15 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48037
+ * gcc.target/i386/pr48037-1.c: New testcase.
+
+2011-03-15 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/41490
+ * gcc.dg/tree-ssa/ssa-sink-6.c: New testcase.
+ * gcc.dg/tree-ssa/ssa-sink-7.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-sink-8.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-sink-9.c: Likewise.
+ * g++.dg/tree-ssa/pr33604.C: Adjust.
+
+2011-03-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/47917
+ * gcc.c-torture/execute/pr47917.c: New test.
+ * gcc.dg/pr47917.c: New test.
+
+ PR middle-end/38878
+ * gcc.dg/tree-ssa/foldaddr-1.c: Remove xfail.
+
+2011-03-14 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/sse4_1-floor-vec.c: New test.
+ * gcc.target/i386/sse4_1-ceil-vec.c: Ditto.
+ * gcc.target/i386/sse4_1-trunc-vec.c: Ditto.
+ * gcc-target/i386/sse4_1-rint-vec.c: Ditto.
+ * gcc.target/i386/sse4_1-floorf-vec.c: Ditto.
+ * gcc.target/i386/sse4_1-ceilf-vec.c: Ditto.
+ * gcc.target/i386/sse4_1-truncf-vec.c: Ditto.
+ * gcc.target/i386/sse4_1-rintf-vec.c: Ditto.
+ * gcc.target/i386/avx-floor-vec.c: Ditto.
+ * gcc.target/i386/avx-ceil-vec.c: Ditto.
+ * gcc.target/i386/avx-trunc-vec.c: Ditto.
+ * gcc.target/i386/avx-rint-vec.c: Ditto.
+ * gcc.target/i386/avx-floorf-vec.c: Ditto.
+ * gcc.target/i386/avx-ceilf-vec.c: Ditto.
+ * gcc.target/i386/avx-truncf-vec.c: Ditto.
+ * gcc.target/i386/avx-rintf-vec.c: Ditto.
+
+2011-03-14 Tom Tromey <tromey@redhat.com>
+
+ * gcc.dg/Woverlength-strings-pedantic-c90-asm.c: New file.
+ * gcc.dg/Woverlength-strings-pedantic-c89-asm.c: New file.
+ * gcc.dg/Woverlength-strings-pedantic-c99-asm.c: New file.
+
+2011-03-14 Tom Tromey <tromey@redhat.com>
+
+ * gcc.dg/Woverlength-strings-pedantic-c89-ext.c: New file.
+ * gcc.dg/Woverlength-strings-pedantic-c90-ext.c: New file.
+ * gcc.dg/Woverlength-strings-pedantic-c99-ext.c: New file.
+
+2011-03-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gcc.target/i386/builtin-copysign.c: Remove __LP64__ check.
+
2011-03-14 Richard Sandiford <richard.sandiford@linaro.org>
PR rtl-optimization/47166
@@ -11,8 +2353,8 @@
2011-03-12 Peter Bergner <bergner@vnet.ibm.com>
PR target/48053
- * gcc/testsuite/gcc.target/powerpc/pr48053-1.c: New test.
- * gcc/testsuite/gcc.target/powerpc/pr48053-2.c: Likewise.
+ * gcc.target/powerpc/pr48053-1.c: New test.
+ * gcc.target/powerpc/pr48053-2.c: Likewise.
2011-03-12 Thomas Koenig <tkoenig@gcc.gnu.org>
@@ -843,6 +3185,13 @@
PR fortran/47775
* gfortran.dg/func_result_6.f90: New.
+2011-02-18 Michael Matz <matz@suse.de>
+
+ PR fortran/45586
+ * gfortran.dg/lto/pr45586_0.f90: New test.
+ * gfortran.dg/typebound_proc_20.f90: Ditto.
+ * gfortran.dg/typebound_proc_21.f90: Ditto.
+
2011-02-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/47795
diff --git a/gcc/testsuite/ada/acats/tests/c4/c460011.a b/gcc/testsuite/ada/acats/tests/c4/c460011.a
index 56e4c0c4ec2..78038a2bcd4 100644
--- a/gcc/testsuite/ada/acats/tests/c4/c460011.a
+++ b/gcc/testsuite/ada/acats/tests/c4/c460011.a
@@ -37,7 +37,7 @@
-- and greater than the value of the mod.
-- Declare a generic test procedure and instantiate it for each of the
-- unsigned types for each operand type.
--- Check that the the operand is properly rounded during the conversion.
+-- Check that the operand is properly rounded during the conversion.
--
-- APPLICABILITY CRITERIA:
-- This test is applicable to all implementations which support
diff --git a/gcc/testsuite/ada/acats/tests/c9/c954013.a b/gcc/testsuite/ada/acats/tests/c9/c954013.a
index a9de8c56b12..70ea3f55970 100644
--- a/gcc/testsuite/ada/acats/tests/c9/c954013.a
+++ b/gcc/testsuite/ada/acats/tests/c9/c954013.a
@@ -363,7 +363,7 @@ procedure C954013 is
-- Show that this message did pass through the Distributor Task
Transaction.TC_Thru_Dist := true;
- -- Pass this transaction on the the appropriate computation
+ -- Pass this transaction on the appropriate computation
-- task
case Transaction.Code is
when Credit =>
diff --git a/gcc/testsuite/g++.dg/warn/Wcast-qual2.C b/gcc/testsuite/c-c++-common/Wcast-qual-1.c
index 88fdcfb38f5..640e4f0b683 100644
--- a/gcc/testsuite/g++.dg/warn/Wcast-qual2.C
+++ b/gcc/testsuite/c-c++-common/Wcast-qual-1.c
@@ -1,11 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-Wcast-qual" } */
-/* The files gcc.dg/cast-qual-3.c and g++.dg/warn/Wcast-qual2.c are
- duals. they are intended to show that gcc -Wcast-qual and g++
- -Wcast-qual emit warnings in the same cases. If you change this
- file, please also change the other one. */
-
void
f1 (void *bar)
{
diff --git a/gcc/testsuite/gcc.dg/fold-bitand-4.c b/gcc/testsuite/c-c++-common/fold-bitand-4.c
index acb0ce9af9b..f4bfe2fcfe2 100644
--- a/gcc/testsuite/gcc.dg/fold-bitand-4.c
+++ b/gcc/testsuite/c-c++-common/fold-bitand-4.c
@@ -38,8 +38,8 @@ int f5 (int i)
return 3 & (__SIZE_TYPE__)&c16[i];
}
-/* { dg-final { scan-tree-dump-times "return 12" 1 "original" } } */
+/* { dg-final { scan-tree-dump-times "return \[^\n0-9\]*12;" 1 "original" } } */
/* { dg-final { scan-tree-dump-times "\& 15" 1 "original" } } */
-/* { dg-final { scan-tree-dump-times "return 0" 2 "original" } } */
+/* { dg-final { scan-tree-dump-times "return \[^\n0-9\]*0;" 2 "original" } } */
/* { dg-final { scan-tree-dump-times "\& 7" 1 "original" } } */
/* { dg-final { cleanup-tree-dump "original" } } */
diff --git a/gcc/testsuite/c-c++-common/pr46562-2.c b/gcc/testsuite/c-c++-common/pr46562-2.c
new file mode 100644
index 00000000000..45bf5cf7195
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr46562-2.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fno-tree-ccp -fno-tree-forwprop -fdump-tree-fre1" } */
+
+static const int a[4] = {};
+int foo(void)
+{
+ int i = 1;
+ const int *p = &a[i];
+ return *p;
+}
+
+/* { dg-final { scan-tree-dump "= 0;" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/c-c++-common/pr46562.c b/gcc/testsuite/c-c++-common/pr46562.c
new file mode 100644
index 00000000000..30659070f01
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr46562.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-ccp1" } */
+
+static const int a[4] = {};
+int foo(void)
+{
+ int i = 1;
+ const int *p = &a[i];
+ return *p;
+}
+
+/* { dg-final { scan-tree-dump "return 0;" "ccp1" } } */
+/* { dg-final { cleanup-tree-dump "ccp1" } } */
diff --git a/gcc/testsuite/c-c++-common/raw-string-11.c b/gcc/testsuite/c-c++-common/raw-string-11.c
new file mode 100644
index 00000000000..49ceba225b3
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/raw-string-11.c
@@ -0,0 +1,13 @@
+// PR preprocessor/48740
+// { dg-options "-std=gnu99 -trigraphs -save-temps" { target c } }
+// { dg-options "-std=c++0x -save-temps" { target c++ } }
+// { dg-do run }
+
+int main ()
+{
+ return __builtin_memcmp (R"raw(foo%sbar%sfred%sbob?????)raw",
+ "foo%sbar%sfred%sbob?""?""?""?""?",
+ sizeof ("foo%sbar%sfred%sbob?""?""?""?""?"));
+}
+
+// { dg-final { cleanup-saved-temps } }
diff --git a/gcc/testsuite/gcc.dg/uninit-D-O0.c b/gcc/testsuite/c-c++-common/uninit-D-O0.c
index e63cb80aee0..e63cb80aee0 100644
--- a/gcc/testsuite/gcc.dg/uninit-D-O0.c
+++ b/gcc/testsuite/c-c++-common/uninit-D-O0.c
diff --git a/gcc/testsuite/gcc.dg/uninit-D.c b/gcc/testsuite/c-c++-common/uninit-D.c
index ea957e49e98..ea957e49e98 100644
--- a/gcc/testsuite/gcc.dg/uninit-D.c
+++ b/gcc/testsuite/c-c++-common/uninit-D.c
diff --git a/gcc/testsuite/gcc.dg/uninit-E-O0.c b/gcc/testsuite/c-c++-common/uninit-E-O0.c
index 2cc2459663d..2cc2459663d 100644
--- a/gcc/testsuite/gcc.dg/uninit-E-O0.c
+++ b/gcc/testsuite/c-c++-common/uninit-E-O0.c
diff --git a/gcc/testsuite/gcc.dg/uninit-E.c b/gcc/testsuite/c-c++-common/uninit-E.c
index eb356c3ee0d..eb356c3ee0d 100644
--- a/gcc/testsuite/gcc.dg/uninit-E.c
+++ b/gcc/testsuite/c-c++-common/uninit-E.c
diff --git a/gcc/testsuite/gcc.dg/uninit-F-O0.c b/gcc/testsuite/c-c++-common/uninit-F-O0.c
index 737cc65007e..737cc65007e 100644
--- a/gcc/testsuite/gcc.dg/uninit-F-O0.c
+++ b/gcc/testsuite/c-c++-common/uninit-F-O0.c
diff --git a/gcc/testsuite/gcc.dg/uninit-F.c b/gcc/testsuite/c-c++-common/uninit-F.c
index 1dbb365e5b7..1dbb365e5b7 100644
--- a/gcc/testsuite/gcc.dg/uninit-F.c
+++ b/gcc/testsuite/c-c++-common/uninit-F.c
diff --git a/gcc/testsuite/gcc.dg/uninit-G-O0.c b/gcc/testsuite/c-c++-common/uninit-G-O0.c
index d6edffede66..d6edffede66 100644
--- a/gcc/testsuite/gcc.dg/uninit-G-O0.c
+++ b/gcc/testsuite/c-c++-common/uninit-G-O0.c
diff --git a/gcc/testsuite/gcc.dg/uninit-G.c b/gcc/testsuite/c-c++-common/uninit-G.c
index 08f5f532116..08f5f532116 100644
--- a/gcc/testsuite/gcc.dg/uninit-G.c
+++ b/gcc/testsuite/c-c++-common/uninit-G.c
diff --git a/gcc/testsuite/c-c++-common/vla-1.c b/gcc/testsuite/c-c++-common/vla-1.c
new file mode 100644
index 00000000000..401c4e05511
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/vla-1.c
@@ -0,0 +1,21 @@
+/* Test that changes to a variable are reflected in a VLA later in the
+ expression. */
+/* { dg-options "" } */
+
+#ifdef __cplusplus
+extern "C"
+#endif
+void abort();
+
+int i = 4;
+int f()
+{
+ return i;
+}
+
+int main()
+{
+ if (i+=2, sizeof(*(int(*)[f()])0) != 6*sizeof(int))
+ abort();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C b/gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C
index b681a1fcbd9..4c462d5f3a4 100644
--- a/gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C
+++ b/gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C
@@ -3,10 +3,12 @@
#include <cxxabi.h>
-#ifdef ___ARM_EABI__
-static void cctor (void * a, void * b)
+#ifdef __ARM_EABI__
+using namespace __cxxabiv1;
+static __cxa_cdtor_return_type cctor (void * a, void * b)
{
- *(char *) a = *(char *) b
+ *(char *) a = *(char *) b;
+ return a;
}
int main()
@@ -15,10 +17,10 @@ int main()
char data2;
char *p;
- p = __cxa_vec_ctor (&data, 1, 1, NULL, NULL);
+ p = (char *) __cxa_vec_ctor (&data, 1, 1, NULL, NULL);
if (p != &data)
return 1;
- p = __cxa_vec_cctor (&data2, &data, 1, 1, cctor, NULL);
+ p = (char *) __cxa_vec_cctor (&data2, &data, 1, 1, cctor, NULL);
if (p != &data2)
return 1;
diff --git a/gcc/testsuite/g++.dg/conversion/base1.C b/gcc/testsuite/g++.dg/conversion/base1.C
new file mode 100644
index 00000000000..e236504ae87
--- /dev/null
+++ b/gcc/testsuite/g++.dg/conversion/base1.C
@@ -0,0 +1,20 @@
+// PR c++/48749
+
+struct Tuple3
+{
+ float x;
+};
+
+struct Pos: virtual Tuple3 { };
+
+struct TexCoords
+{
+ Pos pos;
+};
+
+template <class T>
+void eval (const TexCoords &coords)
+{
+ const Pos &pos = coords.pos;
+ pos.x;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto22.C b/gcc/testsuite/g++.dg/cpp0x/auto22.C
new file mode 100644
index 00000000000..66630e5367f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/auto22.C
@@ -0,0 +1,21 @@
+// PR c++/47999
+// { dg-options -std=c++0x }
+
+int& identity(int& i)
+{
+ return i;
+}
+
+// In a function template, auto type deduction works incorrectly.
+template <typename = void>
+void f()
+{
+ int i = 0;
+ auto&& x = identity(i); // Type of x should be `int&`, but it is `int&&`.
+}
+
+int main (int argc, char* argv[])
+{
+ f();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-46336.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-46336.C
new file mode 100644
index 00000000000..3c51c2cbf54
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-46336.C
@@ -0,0 +1,14 @@
+// PR c++/46336
+// { dg-options -std=c++0x }
+
+extern "C" {
+ enum A { };
+ inline constexpr A
+ f(A a, A b) // { dg-error "previous declaration" }
+ { return A(static_cast<int>(a) & static_cast<int>(b)); }
+ enum B { };
+ inline constexpr B
+ f(B a, B b) // { dg-error "C function" }
+ { return B(static_cast<int>(a) & static_cast<int>(b)); }
+}
+
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-47570.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-47570.C
new file mode 100644
index 00000000000..c60ba865862
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-47570.C
@@ -0,0 +1,25 @@
+// PR c++/47570
+// { dg-options -std=c++0x }
+
+unsigned int constexpr one()
+{ return 1; }
+
+int constexpr one_B()
+{ return 1; }
+
+int main()
+{
+ // FAIL TO COMPILE:
+ static bool constexpr SC_huh1 = ((unsigned int)one()) >= ((unsigned int)0);
+ static bool constexpr SC_huh2 = one() >= ((unsigned int)0);
+ static bool constexpr SC_huh3 = one() >= 0;
+
+ // COMPILE OK:
+ static bool constexpr SC_huh4 = ((one() == 0) || (one() > 0));
+ static bool constexpr SC_huh5 = one() == 0;
+ static bool constexpr SC_huh6 = one() > 0;
+ static bool constexpr SC_huh7 = one_B() >= 0;
+ static bool constexpr SC_huh8 = one() >= 1;
+
+ return SC_huh3;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C
new file mode 100644
index 00000000000..c950a3642fe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C
@@ -0,0 +1,11 @@
+// PR c++/47969
+// { dg-options -std=c++0x }
+
+struct A
+{
+ // constexpr operator int () { return 1; }
+};
+
+constexpr A a = A();
+
+int ar[a]; // { dg-error "has non-integral type" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C
new file mode 100644
index 00000000000..fc69cfef678
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C
@@ -0,0 +1,24 @@
+// PR c++/48089
+// { dg-options -std=c++0x }
+
+// bang is ill-formed (diagnostic required) because its initializer is
+// non-constant, because it uses the value of an uninitialized object.
+
+// s() is ill-formed (no diagnostic required) because there is no set of
+// arguments that would produce a constant expression.
+
+// R() is well-formed because i is initialized before j.
+
+struct s {
+ constexpr s() : v(v) { } // { dg-message "" }
+ int v;
+};
+
+constexpr s bang; // { dg-error "" }
+
+struct R {
+ int i,j;
+ constexpr R() : i(42),j(i) { } // { dg-bogus "" "" { xfail *-*-* } }
+};
+
+constexpr R r; // { dg-bogus "" "" { xfail *-*-* } }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-abi1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-abi1.C
new file mode 100644
index 00000000000..e83f142300a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-abi1.C
@@ -0,0 +1,16 @@
+// PR c++/47301
+// { dg-options "-std=c++0x -fabi-version=1" }
+
+struct A
+{
+ constexpr operator int ()
+ {
+ return 1;
+ }
+};
+
+template < int > struct B
+{
+ static constexpr A a = A();
+ int ar[a];
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array3.C
new file mode 100644
index 00000000000..145a4307e36
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array3.C
@@ -0,0 +1,14 @@
+// PR c++/48132
+// { dg-options -std=c++0x }
+
+struct C
+{
+ constexpr C (int x) : c (x) {}
+ int c;
+};
+
+void
+foo ()
+{
+ C a[] = { C (0) };
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-attribute.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-attribute.C
new file mode 100644
index 00000000000..ac85c076d3e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-attribute.C
@@ -0,0 +1,63 @@
+// { dg-options -std=c++0x }
+
+//A few constexpr's
+constexpr int foo() { return __alignof__(int); }
+
+template<typename T>
+constexpr int fooT() { return __alignof__(T); }
+
+template<int N>
+constexpr int fooN() { return N; }
+
+//Now the attributes
+
+//with normal variables,
+int a __attribute__((aligned(foo())));
+int b __attribute__((aligned(fooT<int>())));
+int c __attribute__((aligned(fooN<__alignof__(int)>())));
+
+//with variables inside a template,
+template <typename T>
+void fun()
+{
+ T a __attribute__((aligned(foo())));
+ T b __attribute__((aligned(fooT<T>())));
+ T c __attribute__((aligned(fooN<__alignof__(T)>())));
+ T d __attribute__((aligned(fooT<int>())));
+ T e __attribute__((aligned(fooN<__alignof__(int)>())));
+}
+
+//instantiate it,
+void bar()
+{
+ fun<int>();
+}
+
+//with classes
+struct __attribute__((aligned(foo()))) S0
+{
+ char dummy;
+};
+S0 s0;
+
+struct __attribute__((aligned(fooT<int>()))) S1
+{
+ char dummy;
+};
+S1 s1;
+
+//and class templates
+template <typename T>
+struct __attribute__((aligned(foo()))) S2
+{
+ char dummy;
+};
+
+S2<int> s2;
+
+template <typename T>
+struct __attribute__((aligned(fooT<T>()))) S3
+{
+ char dummy;
+};
+S3<int> s3;
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-compound.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-compound.C
new file mode 100644
index 00000000000..81fcc54b3e6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-compound.C
@@ -0,0 +1,9 @@
+// { dg-options "-std=c++0x -pedantic-errors" }
+
+constexpr int f()
+{
+ { // { dg-error "" }
+ return 1;
+ }
+ { } // { dg-error "" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-condition2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-condition2.C
new file mode 100644
index 00000000000..243409669bf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-condition2.C
@@ -0,0 +1,18 @@
+// PR c++/48909
+// { dg-options -std=c++0x }
+
+#define SA(X) static_assert((X),#X)
+
+constexpr int const * is_sorted_until(int const * first, int const * last)
+{
+ return first == last || first + 1 == last ? last
+ : (*(first + 1) < *first) != false ? first + 1
+ : is_sorted_until(first + 1, last);
+}
+
+int main()
+{
+ static constexpr int array[2] = {0, 1};
+ constexpr int const * last = is_sorted_until(array, array + 2);
+ SA(last==array+2);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-data2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-data2.C
index 598cae6a44f..2d614ec32ed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-data2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-data2.C
@@ -44,5 +44,4 @@ extern template struct A3<int, 510>;
// Use.
A3<int, 1111> a31;
-// FIXME should this be an error?
A3<char, 9999> a32; // { dg-warning "overflow" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C
index a3706d6ec80..183d3f768fa 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C
@@ -1,12 +1,11 @@
// Test that we explain why a template instantiation isn't constexpr
// { dg-options -std=c++0x }
-// { dg-prune-output "not a constexpr function" }
template <class T>
struct A
{
T t;
- constexpr int f() { return 42; }
+ constexpr int f() { return 42; } // { dg-error "enclosing class" }
};
struct B { B(); operator int(); };
@@ -14,8 +13,8 @@ struct B { B(); operator int(); };
constexpr A<int> ai = { 42 };
constexpr int i = ai.f();
-constexpr int b = A<B>().f(); // { dg-error "enclosing class" }
+constexpr int b = A<B>().f(); // { dg-error "not a constexpr function" }
template <class T>
-constexpr int f (T t) { return 42; }
-constexpr int x = f(B()); // { dg-error "parameter" }
+constexpr int f (T t) { return 42; } // { dg-error "parameter" }
+constexpr int x = f(B()); // { dg-error "constexpr function" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C
new file mode 100644
index 00000000000..4646f82b904
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C
@@ -0,0 +1,18 @@
+// PR c++/48296
+// { dg-options -std=c++0x }
+
+struct X
+{
+ constexpr X() { }
+ constexpr X f(X x) { return x; }
+ constexpr X g(X x);
+};
+
+constexpr X X::g(X x) { return x; }
+
+struct Y
+{
+ Y() { }
+ constexpr Y f(Y y); // { dg-error "constexpr" }
+ static constexpr Y g(Y y); // { dg-error "constexpr" }
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-missing.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-missing.C
new file mode 100644
index 00000000000..547f552e377
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-missing.C
@@ -0,0 +1,39 @@
+// PR c++/48911
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+#define SA(X) static_assert((X),#X)
+
+struct A
+{
+ constexpr A () : a (6) {}
+ int a;
+};
+
+int
+main ()
+{
+ constexpr int a[2] = { 42 };
+ constexpr int i = a[1];
+ SA(i==0);
+ constexpr int b[1] = { };
+ constexpr int j = b[0];
+ SA(j==0);
+ constexpr char c[2] = "a";
+ constexpr char k = c[1];
+ SA(k==0);
+ constexpr char d[2] = "";
+ constexpr char l = d[1];
+ SA(l==0);
+ constexpr wchar_t e[2] = L"a";
+ constexpr wchar_t m = e[1];
+ SA(m==0);
+ constexpr wchar_t f[2] = L"";
+ constexpr wchar_t n = f[1];
+ SA(n==0);
+ constexpr A g[2] = { A () };
+ constexpr A o = g[0];
+ SA(o.a == 6);
+ constexpr A p = g[1];
+ SA(p.a == 6);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept5.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept5.C
new file mode 100644
index 00000000000..7bf961b3c45
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept5.C
@@ -0,0 +1,15 @@
+// { dg-options -std=c++0x }
+
+struct booleable {
+ bool data;
+ constexpr explicit operator bool() { return data; }
+};
+
+constexpr booleable truthy_func() { return {true}; }
+
+void funky() noexcept(truthy_func()) {}
+
+int main() {
+ funky();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-overflow2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-overflow2.C
new file mode 100644
index 00000000000..5d5749ce2c3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-overflow2.C
@@ -0,0 +1,8 @@
+// PR c++/47504
+// { dg-options -std=c++0x }
+
+char constexpr sub(char arg)
+{ return char(arg - char(1)); }
+
+int main()
+{ static char constexpr m = sub(-1); }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-recursion.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-recursion.C
new file mode 100644
index 00000000000..2f9b4887df6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-recursion.C
@@ -0,0 +1,5 @@
+// Test that we catch excessive recursion.
+// { dg-options "-std=c++0x -fconstexpr-depth=5" }
+// { dg-prune-output "in constexpr expansion" }
+constexpr int f (int i) { return f (i-1); }
+constexpr int i = f(42); // { dg-error "constexpr evaluation depth" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-using.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-using.C
new file mode 100644
index 00000000000..fc794e9abdf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-using.C
@@ -0,0 +1,27 @@
+// Core issue 898
+// { dg-options -std=c++0x }
+
+namespace N { const int i = 42; }
+namespace M { const int j = 42; }
+
+constexpr int g() {
+ using namespace N;
+ using M::j;
+ static_assert (i == 42, "i == 42");
+ return i + j;
+}
+
+template <class T>
+constexpr int h() {
+ using namespace N;
+ using M::j;
+ static_assert (i == 42, "i == 42");
+ return i + j;
+}
+
+constexpr int i = g();
+constexpr int i2 = h<int>();
+
+static_assert (i == 84, "i == 84");
+static_assert (i2 == 84, "i2 == 84");
+
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring1.C
new file mode 100644
index 00000000000..059977bfff9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring1.C
@@ -0,0 +1,34 @@
+// PR c++/48570
+// { dg-do run }
+// { dg-options "-std=c++0x" }
+
+extern "C" void abort ();
+constexpr wchar_t foo (int i) { return L"0123"[i]; }
+constexpr char16_t bar (int i) { return u"0123"[i]; }
+constexpr char32_t baz (int i) { return U"0123"[i]; }
+const wchar_t foo0 = foo (0);
+const wchar_t foo1 = foo (1);
+const wchar_t foo2 = foo (2);
+const wchar_t foo3 = foo (3);
+const wchar_t foo4 = foo (4);
+const char16_t bar0 = bar (0);
+const char16_t bar1 = bar (1);
+const char16_t bar2 = bar (2);
+const char16_t bar3 = bar (3);
+const char16_t bar4 = bar (4);
+const char32_t baz0 = baz (0);
+const char32_t baz1 = baz (1);
+const char32_t baz2 = baz (2);
+const char32_t baz3 = baz (3);
+const char32_t baz4 = baz (4);
+
+int
+main ()
+{
+ if (foo0 != L'0' || foo1 != L'1' || foo2 != L'2' || foo3 != L'3' || foo4 != L'\0')
+ abort ();
+ if (bar0 != u'0' || bar1 != u'1' || bar2 != u'2' || bar3 != u'3' || bar4 != u'\0')
+ abort ();
+ if (baz0 != U'0' || baz1 != U'1' || baz2 != U'2' || baz3 != U'3' || baz4 != U'\0')
+ abort ();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C
new file mode 100644
index 00000000000..4fc8980ef96
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C
@@ -0,0 +1,7 @@
+// PR c++/48570
+// { dg-do compile }
+// { dg-options -std=c++0x }
+
+constexpr wchar_t c1 = L"hi"[3]; // { dg-error "out of bound" }
+constexpr char16_t c2 = u"hi"[3]; // { dg-error "out of bound" }
+constexpr char32_t c3 = U"hi"[3]; // { dg-error "out of bound" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype-1212.C b/gcc/testsuite/g++.dg/cpp0x/decltype-1212.C
new file mode 100644
index 00000000000..38393d3b874
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype-1212.C
@@ -0,0 +1,11 @@
+// Core 1212
+// { dg-options -std=c++0x }
+
+template <class T, class U> struct assert_same_type;
+template <class T> struct assert_same_type<T,T> {};
+
+int main()
+{
+ int i;
+ assert_same_type<int&&,decltype(static_cast<int&&>(i))>();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted15.C b/gcc/testsuite/g++.dg/cpp0x/defaulted15.C
index 4c5b11c9e19..0a47c20f778 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted15.C
@@ -54,5 +54,5 @@ struct G: public F
struct H
{
- virtual ~H() = default; // { dg-error "declared virtual" }
+ virtual ~H() = default;
};
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted22.C b/gcc/testsuite/g++.dg/cpp0x/defaulted22.C
new file mode 100644
index 00000000000..61e9d320521
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted22.C
@@ -0,0 +1,23 @@
+// Test that a virtual defaulted constructor is still virtual.
+// { dg-do run }
+// { dg-options -std=c++0x }
+
+int r = 1;
+
+struct A
+{
+ virtual ~A() = default;
+};
+
+struct B: A
+{
+ ~B() noexcept { r = 0; }
+};
+
+A* ap = new B();
+
+int main()
+{
+ delete ap;
+ return r;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted23.C b/gcc/testsuite/g++.dg/cpp0x/defaulted23.C
new file mode 100644
index 00000000000..5b4438ddd02
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted23.C
@@ -0,0 +1,27 @@
+// Test for checking of exception specifications on defaulted fns
+// { dg-options -std=c++0x }
+
+struct A
+{
+ A() noexcept = default;
+};
+
+struct B
+{
+ B() throw (int) = default; // { dg-error "exception-specification that differs from the implicit declaration" }
+};
+
+struct C
+{
+ C() throw (int) { }
+};
+
+struct D: C
+{
+ D() throw (int) = default;
+};
+
+struct E
+{
+ E() = default;
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted24.C b/gcc/testsuite/g++.dg/cpp0x/defaulted24.C
new file mode 100644
index 00000000000..307bf94ab85
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted24.C
@@ -0,0 +1,6 @@
+// PR c++/48280
+// { dg-options -std=c++0x }
+
+struct S {
+ template < typename > S (const S &) = default; // { dg-error "" }
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted25.C b/gcc/testsuite/g++.dg/cpp0x/defaulted25.C
new file mode 100644
index 00000000000..2a38fedb248
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted25.C
@@ -0,0 +1,10 @@
+// PR c++/48930
+// { dg-options -std=c++0x }
+// { dg-prune-output "note" }
+
+struct A
+{
+ A(const A&) = default;
+};
+
+A a; // { dg-error "no match" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/dependent1.C b/gcc/testsuite/g++.dg/cpp0x/dependent1.C
new file mode 100644
index 00000000000..1ceeeafd78d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/dependent1.C
@@ -0,0 +1,25 @@
+// PR c++/48319
+// { dg-options -std=c++0x }
+// We were failing to recognize declval<_Args1> as dependent.
+
+template<typename Tp> Tp declval() noexcept;
+
+template<typename _Tp>
+class __is_constructible_helper
+{
+ typedef char __one;
+ typedef struct { char __arr[2]; } __two;
+
+ template<typename _Tp1, typename... _Args1>
+ static decltype(_Tp1(declval<_Args1>()...), __one()) __test(int);
+
+ template<typename, typename...>
+ static __two __test(...);
+
+public:
+ static const bool __value = sizeof(__test<_Tp>(0)) == 1;
+};
+
+int main() {
+ return __is_constructible_helper<int>::__value;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/elision2.C b/gcc/testsuite/g++.dg/cpp0x/elision2.C
new file mode 100644
index 00000000000..216b1b59d16
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/elision2.C
@@ -0,0 +1,13 @@
+// Core 1148: should be able to move from value parameter on return
+// { dg-options -std=c++0x }
+
+struct A
+{
+ A(const A&) = delete;
+ A(A&&);
+};
+
+A f (A a)
+{
+ return a;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum10.C b/gcc/testsuite/g++.dg/cpp0x/enum10.C
new file mode 100644
index 00000000000..55a1ab46be1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/enum10.C
@@ -0,0 +1,9 @@
+// PR c++/48534
+// { dg-options -std=c++0x }
+
+enum class OpSE : bool;
+
+int main()
+{
+ return static_cast<bool>(OpSE());
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum9.C b/gcc/testsuite/g++.dg/cpp0x/enum9.C
new file mode 100644
index 00000000000..10e510bcd25
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/enum9.C
@@ -0,0 +1,5 @@
+// { dg-options -std=c++0x }
+
+enum class E { };
+E f();
+bool b2 = static_cast<bool>(f());
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit11.C b/gcc/testsuite/g++.dg/cpp0x/implicit11.C
new file mode 100644
index 00000000000..7ec8e95dcb6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit11.C
@@ -0,0 +1,17 @@
+// Test that we consider base dtors in determining whether
+// a derived ctor is deleted even if the ctor is trivial.
+// { dg-options -std=c++0x }
+
+struct A
+{
+ ~A() = delete; // { dg-error "declared here" }
+};
+
+struct B: A { }; // { dg-error "deleted" }
+
+extern B eb;
+int main()
+{
+ B* b1 = new B; // { dg-error "use of deleted function" "" { xfail *-*-* } }
+ B* b2 = new B(eb); // { dg-error "use of deleted function" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-array2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-array2.C
new file mode 100644
index 00000000000..19eec33acf7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-array2.C
@@ -0,0 +1,12 @@
+// { dg-options -std=c++0x }
+
+typedef int IA[2];
+typedef double DA[2];
+
+void f(const IA&) { }
+void f(const DA&);
+
+int main()
+{
+ f({1,2});
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-arrray1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-arrray1.C
new file mode 100644
index 00000000000..25113d770b0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-arrray1.C
@@ -0,0 +1,5 @@
+// { dg-options -std=c++0x }
+
+typedef int IRT[2];
+
+const IRT& ir = IRT{1,2};
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist38.C b/gcc/testsuite/g++.dg/cpp0x/initlist38.C
index 818d69ad654..32e20d591c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist38.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist38.C
@@ -17,5 +17,5 @@ int main()
f({});
B b0 = { };
B b1 { }; // OK, uses #1
- B b2 { 1 }; // { dg-error "conversion" }
+ B b2 { 1 }; // { dg-error "could not convert" }
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist46.C b/gcc/testsuite/g++.dg/cpp0x/initlist46.C
new file mode 100644
index 00000000000..2b9f07dbdc9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist46.C
@@ -0,0 +1,14 @@
+// PR c++/48281
+// { dg-options "-std=c++0x -O2" }
+// { dg-do run }
+
+#include <initializer_list>
+
+typedef std::initializer_list<int> int1;
+typedef std::initializer_list<int1> int2;
+static int2 ib = {{42,2,3,4,5},{2,3,4,5,1},{3,4,5,2,1}};
+
+int main()
+{
+ return *(ib.begin()->begin()) != 42;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist47.C b/gcc/testsuite/g++.dg/cpp0x/initlist47.C
new file mode 100644
index 00000000000..b76fb58361f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist47.C
@@ -0,0 +1,9 @@
+// { dg-options -std=c++0x }
+
+struct A { ~A() = delete; }; // { dg-error "declared" }
+
+int main()
+{
+ typedef const A cA[2];
+ cA{}; // { dg-error "deleted" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist48.C b/gcc/testsuite/g++.dg/cpp0x/initlist48.C
new file mode 100644
index 00000000000..9eb451a8277
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist48.C
@@ -0,0 +1,11 @@
+// PR c++/48726
+// { dg-options -std=c++0x }
+
+#include <memory>
+
+struct Foo{
+ int i;
+};
+typedef std::unique_ptr<Foo> up;
+
+std::initializer_list<up> il{up{new Foo}, up{new Foo}};
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist49.C b/gcc/testsuite/g++.dg/cpp0x/initlist49.C
new file mode 100644
index 00000000000..752c4331afb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist49.C
@@ -0,0 +1,18 @@
+// Test for non-trivial list-initialization with array new.
+// { dg-options -std=c++0x }
+// { dg-do run }
+
+struct A
+{
+ enum E { c_string, number } e;
+ A(const char *): e(c_string) {}
+ A(int): e(number) {}
+};
+
+int main()
+{
+ A* ap = new A[2]{1, ""};
+ if (ap[0].e != A::number || ap[1].e != A::c_string)
+ return 1;
+ delete[] ap;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this4.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this4.C
new file mode 100644
index 00000000000..29cd2a97b3f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this4.C
@@ -0,0 +1,13 @@
+// PR c++/48523
+// { dg-options -std=c++0x }
+
+template<typename>
+struct X
+{
+ bool b;
+
+ void f()
+ {
+ [this]{ return b; };
+ }
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/move1.C b/gcc/testsuite/g++.dg/cpp0x/move1.C
new file mode 100644
index 00000000000..12e363a8cab
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/move1.C
@@ -0,0 +1,15 @@
+// { dg-options "-std=c++0x -pedantic-errors" }
+
+#include <utility>
+
+class A { };
+
+static void g ( A && ) { }
+
+template < class T > class B {
+public:
+ void f ( ) {
+ A a;
+ g ( std :: move ( a ) );
+ }
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept02.C b/gcc/testsuite/g++.dg/cpp0x/noexcept02.C
index be6fa00dd09..60015e75668 100644
--- a/gcc/testsuite/g++.dg/cpp0x/noexcept02.C
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept02.C
@@ -46,7 +46,9 @@ SA(!noexcept(f3(A())));
template <class T1, class T2>
void f (T1, T2) noexcept(noexcept(T1(), T2()));
-SA(noexcept(f3(1,1)));
+struct B { };
+
+SA(noexcept(f3(1,B())));
SA(!noexcept(f3(1,A())));
SA(!noexcept(f3(A(),1)));
SA(!noexcept(f3(A(),A())));
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr45908.C b/gcc/testsuite/g++.dg/cpp0x/pr45908.C
index 1a821e5d83b..3a8508890ee 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr45908.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr45908.C
@@ -14,5 +14,5 @@ struct vector {
class block {
vector v;
auto end() const -> decltype(v.begin())
- { return v.begin(); } // { dg-error "conversion" }
+ { return v.begin(); } // { dg-error "could not convert" }
};
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr48522.C b/gcc/testsuite/g++.dg/cpp0x/pr48522.C
new file mode 100644
index 00000000000..1543d8a281d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr48522.C
@@ -0,0 +1,24 @@
+// { dg-options "-std=c++0x" }
+
+template <typename T>
+struct Handle
+{
+ Handle(T& t);
+};
+
+template<class T>
+struct Class {
+ struct Struct {} data;
+ void f();
+ void g();
+};
+
+template<class T>
+void Class<T>::f() {
+ Handle< decltype((data)) > handle(data);
+}
+
+template<class T>
+void Class<T>::g() {
+ Handle< decltype((data)) > handle(data);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for11.C b/gcc/testsuite/g++.dg/cpp0x/range-for11.C
new file mode 100644
index 00000000000..d02519a2519
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for11.C
@@ -0,0 +1,40 @@
+// Test for range-based for loop
+// Test the loop with a custom iterator
+// with begin/end as member functions
+
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+struct iterator
+{
+ int x;
+ explicit iterator(int v) :x(v) {}
+ iterator &operator ++() { ++x; return *this; }
+ int operator *() { return x; }
+ bool operator != (const iterator &o) { return x != o.x; }
+};
+
+namespace foo
+{
+ struct container
+ {
+ int min, max;
+ container(int a, int b) :min(a), max(b) {}
+
+ iterator begin()
+ {
+ return iterator(min);
+ }
+ iterator end()
+ {
+ return iterator(max + 1);
+ }
+ };
+}
+
+int main()
+{
+ foo::container c(1,4);
+ for (int it : c)
+ ;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for12.C b/gcc/testsuite/g++.dg/cpp0x/range-for12.C
new file mode 100644
index 00000000000..9b405dc620a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for12.C
@@ -0,0 +1,116 @@
+// Test for range-based for loop with templates
+// and begin/end as member functions
+
+// { dg-do run }
+// { dg-options "-std=c++0x" }
+
+/* Preliminary declarations */
+namespace pre
+{
+ struct iterator
+ {
+ int x;
+ explicit iterator (int v) :x(v) {}
+ iterator &operator ++() { ++x; return *this; }
+ int operator *() { return x; }
+ bool operator != (const iterator &o) { return x != o.x; }
+ };
+
+ struct container
+ {
+ int min, max;
+ container(int a, int b) :min(a), max(b) {}
+ iterator begin() const
+ {
+ return iterator(min);
+ }
+ iterator end() const
+ {
+ return iterator(max);
+ }
+
+ };
+
+} //namespace pre
+
+using pre::container;
+extern "C" void abort(void);
+
+container run_me_just_once()
+{
+ static bool run = false;
+ if (run)
+ abort();
+ run = true;
+ return container(1,2);
+}
+
+/* Template with dependent expression. */
+template<typename T> int test1(const T &r)
+{
+ int t = 0;
+ for (int i : r)
+ t += i;
+ return t;
+}
+
+/* Template with non-dependent expression and dependent declaration. */
+template<typename T> int test2(const container &r)
+{
+ int t = 0;
+ for (T i : r)
+ t += i;
+ return t;
+}
+
+/* Template with non-dependent expression (array) and dependent declaration. */
+template<typename T> int test2(const int (&r)[4])
+{
+ int t = 0;
+ for (T i : r)
+ t += i;
+ return t;
+}
+
+/* Template with non-dependent expression and auto declaration. */
+template<typename T> int test3(const container &r)
+{
+ int t = 0;
+ for (auto i : r)
+ t += i;
+ return t;
+}
+
+/* Template with non-dependent expression (array) and auto declaration. */
+template<typename T> int test3(const int (&r)[4])
+{
+ int t = 0;
+ for (auto i : r)
+ t += i;
+ return t;
+}
+
+int main ()
+{
+ container c(1,5);
+ int a[4] = {5,6,7,8};
+
+ for (auto x : run_me_just_once())
+ ;
+
+ if (test1 (c) != 10)
+ abort();
+ if (test1 (a) != 26)
+ abort();
+
+ if (test2<int> (c) != 10)
+ abort();
+ if (test2<int> (a) != 26)
+ abort();
+
+ if (test3<int> (c) != 10)
+ abort();
+ if (test3<int> (a) != 26)
+ abort();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for13.C b/gcc/testsuite/g++.dg/cpp0x/range-for13.C
new file mode 100644
index 00000000000..7ebf0c563e8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for13.C
@@ -0,0 +1,103 @@
+// Test for errors in range-based for loops
+// with member begin/end
+
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+//These should not be used
+template<typename T> int *begin(T &t)
+{
+ T::fail;
+}
+template<typename T> int *end(T &t)
+{
+ T::fail;
+}
+
+struct container1
+{
+ int *begin();
+ //no end
+};
+
+struct container2
+{
+ int *end();
+ //no begin
+};
+
+struct container3
+{
+private:
+ int *begin(); // { dg-error "is private" }
+ int *end(); // { dg-error "is private" }
+};
+
+struct container4
+{
+ int *begin;
+ int *end;
+};
+
+struct container5
+{
+ typedef int *begin;
+ typedef int *end;
+};
+
+struct callable
+{
+ int *operator()();
+};
+
+struct container6
+{
+ callable begin;
+ callable end;
+};
+
+struct container7
+{
+ static callable begin;
+ static callable end;
+};
+
+struct container8
+{
+ static int *begin();
+ int *end();
+};
+
+struct private_callable
+{
+private:
+ int *operator()(); // { dg-error "is private" }
+};
+
+struct container9
+{
+ private_callable begin;
+ private_callable end;
+};
+
+struct container10
+{
+ typedef int *(*function)();
+
+ function begin;
+ static function end;
+};
+
+void test1()
+{
+ for (int x : container1()); // { dg-error "member but not" }
+ for (int x : container2()); // { dg-error "member but not" }
+ for (int x : container3()); // { dg-error "within this context" }
+ for (int x : container4()); // { dg-error "cannot be used as a function" }
+ for (int x : container5()); // { dg-error "invalid use of" }
+ for (int x : container6());
+ for (int x : container7());
+ for (int x : container8());
+ for (int x : container9()); // { dg-error "within this context" }
+ for (int x : container10());
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for14.C b/gcc/testsuite/g++.dg/cpp0x/range-for14.C
new file mode 100644
index 00000000000..26ae477d70e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for14.C
@@ -0,0 +1,95 @@
+// Test for other range-based for loops with
+// begin/end member functions
+
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+//These should not be used
+template<typename T> int *begin(T &t)
+{
+ T::fail;
+}
+template<typename T> int *end(T &t)
+{
+ T::fail;
+}
+
+//Test for defaults
+
+struct default1
+{
+ int *begin(int x); // { dg-message "note" }
+ int *end();
+};
+
+struct default2
+{
+ int *begin(int x=0);
+ int *end();
+};
+
+struct default3
+{
+ template <typename T> T *begin(); // { dg-message "note" }
+ int *end();
+};
+
+struct default4
+{
+ template <typename T=int> T *begin();
+ int *end();
+};
+
+struct default5
+{
+ template <typename T=int> T *begin(int x=0);
+ int *end();
+};
+
+void test1()
+{
+ for (int x : default1()); // { dg-error "no matching function|note" }
+ for (int x : default2());
+ for (int x : default3()); // { dg-error "no matching function|note" }
+ for (int x : default4());
+ for (int x : default5());
+}
+
+//Inheritance tests
+
+struct base_begin
+{
+ int *begin(); // { dg-error "" }
+};
+
+struct base_end
+{
+ int *end();
+};
+
+struct derived1 : base_begin, base_end
+{
+};
+
+struct base_begin2 : base_begin
+{
+};
+
+struct derived2 : base_begin, base_end, base_begin2 // { dg-warning "" }
+{
+};
+
+struct base_begin3 : virtual base_begin
+{
+};
+
+struct derived3 : virtual base_begin, base_end, base_begin3
+{
+};
+
+void test2()
+{
+ for (int x : derived1());
+ for (int x : derived2()); // { dg-error "is ambiguous" }
+ for (int x : derived3());
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for15.C b/gcc/testsuite/g++.dg/cpp0x/range-for15.C
new file mode 100644
index 00000000000..38f330771ea
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for15.C
@@ -0,0 +1,59 @@
+// Test for range-based for loop with templates
+// and begin/end as member (non-)virtual functions
+
+// { dg-do run }
+// { dg-options "-std=c++0x" }
+
+unsigned int g;
+
+struct A
+{
+ virtual int *begin()
+ {
+ g |= 1;
+ return 0;
+ }
+ int *end()
+ {
+ g |= 2;
+ return 0;
+ }
+};
+
+struct B : A
+{
+ virtual int *begin()
+ {
+ g |= 4;
+ return 0;
+ }
+ int *end()
+ {
+ g |= 8;
+ return 0;
+ }
+};
+
+extern "C" void abort(void);
+
+int main ()
+{
+ A a;
+ B b;
+ A &aa = b;
+
+ g = 0;
+ for (int x : a);
+ if (g != (1 | 2))
+ abort();
+
+ g = 0;
+ for (int x : b);
+ if (g != (4 | 8))
+ abort();
+
+ g = 0;
+ for (int x : aa);
+ if (g != (4 | 2))
+ abort();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for16.C b/gcc/testsuite/g++.dg/cpp0x/range-for16.C
new file mode 100644
index 00000000000..86cc2a828bf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for16.C
@@ -0,0 +1,21 @@
+// Test for range-based for loop with arrays of
+// incomplete type or unknown size
+
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+extern int a[10];
+extern int b[];
+
+struct S;
+extern S c[10];
+extern S d[];
+
+void test()
+{
+ for (int n : a);
+ for (int n : b); // { dg-error "incomplete type" }
+ for (S &n : c); // { dg-error "incomplete type" }
+ for (S &n : d); // { dg-error "incomplete type" }
+ for (int n : *c); // { dg-error "incomplete type" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for17.C b/gcc/testsuite/g++.dg/cpp0x/range-for17.C
new file mode 100644
index 00000000000..eb888d9ab62
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for17.C
@@ -0,0 +1,17 @@
+// { dg-options -std=c++0x }
+
+extern "C" int printf (const char *, ...);
+
+enum E { e1, e2, e3, X };
+E operator*(E e) { return e; }
+E begin(E e) { return e; }
+E end(E e) { return X; };
+E operator++(E& e) { return e = E(e+1); }
+
+int main()
+{
+ for (auto e: e1)
+ {
+ printf ("%d ", e);
+ }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for2.C b/gcc/testsuite/g++.dg/cpp0x/range-for2.C
index bfab37673a1..17eb41dba7b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/range-for2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for2.C
@@ -8,7 +8,7 @@
struct iterator
{
int x;
- iterator(int v) :x(v) {}
+ explicit iterator(int v) :x(v) {}
iterator &operator ++() { ++x; return *this; }
int operator *() { return x; }
bool operator != (const iterator &o) { return x != o.x; }
@@ -36,6 +36,6 @@ namespace foo
int main()
{
foo::container c(1,4);
- for (iterator it : c)
+ for (int it : c)
;
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for3.C b/gcc/testsuite/g++.dg/cpp0x/range-for3.C
index 947f01ced74..85115a38f5e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/range-for3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for3.C
@@ -8,7 +8,7 @@
struct iterator
{
int x;
- iterator(int v) :x(v) {}
+ explicit iterator(int v) :x(v) {}
iterator &operator ++() { ++x; return *this; }
int operator *() { return x; }
bool operator != (const iterator &o) { return x != o.x; }
@@ -36,7 +36,7 @@ namespace std
int main()
{
container c(1,4);
- for (iterator it : c)
+ for (int it : c)
{
}
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for9.C b/gcc/testsuite/g++.dg/cpp0x/range-for9.C
index 96e9cb61fd6..c51cbf99469 100644
--- a/gcc/testsuite/g++.dg/cpp0x/range-for9.C
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for9.C
@@ -6,6 +6,6 @@
void test()
{
int a[] = {0,1,2};
- for (int x : a) // { dg-error "range-based-for" }
+ for (int x : a) // { dg-error "range-based 'for'" }
;
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/regress/call1.C b/gcc/testsuite/g++.dg/cpp0x/regress/call1.C
new file mode 100644
index 00000000000..833318b0560
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/call1.C
@@ -0,0 +1,13 @@
+// PR c++/48500
+// { dg-options -std=c++0x }
+
+struct linked_ptr {
+};
+template <typename T> linked_ptr make_linked_ptr(T* ptr);
+struct Concrete;
+struct NewedClass {
+ NewedClass(const Concrete& req){}
+};
+template<typename ArgT> void AddObjToChange(const ArgT& req) {
+ linked_ptr p = make_linked_ptr(new NewedClass(req));
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/regress/error-recovery1.C b/gcc/testsuite/g++.dg/cpp0x/regress/error-recovery1.C
new file mode 100644
index 00000000000..2094d3e3ebe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/error-recovery1.C
@@ -0,0 +1,9 @@
+// PR c++/48212
+// { dg-options -std=c++0x }
+
+template < bool > void
+foo ()
+{
+ const bool b =; // { dg-error "" }
+ foo < b > (); // { dg-error "constant expression" }
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/regress/isnan.C b/gcc/testsuite/g++.dg/cpp0x/regress/isnan.C
new file mode 100644
index 00000000000..40d07e5deef
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/isnan.C
@@ -0,0 +1,9 @@
+// PR c++/48369
+// { dg-options -std=gnu++0x }
+
+extern "C" int isnan (double);
+
+void f(double d)
+{
+ bool b = isnan(d);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/regress/template-const2.C b/gcc/testsuite/g++.dg/cpp0x/regress/template-const2.C
new file mode 100644
index 00000000000..25354b3a54a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/template-const2.C
@@ -0,0 +1,14 @@
+// PR c++/48707
+// { dg-options -std=c++0x }
+
+struct A {
+ static int a();
+};
+
+template<typename X>
+struct B: A {
+ static int const b;
+};
+
+template<typename X>
+int const B<X>::b=B<X>::a();
diff --git a/gcc/testsuite/g++.dg/cpp0x/regress/value-dep1.C b/gcc/testsuite/g++.dg/cpp0x/regress/value-dep1.C
new file mode 100644
index 00000000000..112389d4a8e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/value-dep1.C
@@ -0,0 +1,7 @@
+// PR c++/48265
+// { dg-options -std=c++0x }
+
+template < int > struct S
+{
+ S () { const int i = i; i; };
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-deduce2.C b/gcc/testsuite/g++.dg/cpp0x/rv-deduce2.C
new file mode 100644
index 00000000000..160296f640f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-deduce2.C
@@ -0,0 +1,18 @@
+// PR c++/48313
+// { dg-options -std=c++0x }
+
+template<typename F>
+void f(F&&) { }
+
+void g() { }
+
+template<typename T> void h() { }
+
+int main()
+{
+ f( g ); // OK
+ void (&p)() = h<int>;
+ f( p ); // OK
+ f( h<int> ); // ???
+}
+
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-func.C b/gcc/testsuite/g++.dg/cpp0x/rv-func.C
new file mode 100644
index 00000000000..db142961128
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-func.C
@@ -0,0 +1,22 @@
+// PR c++/48457, Core 1238
+// { dg-options -std=c++0x }
+
+template<class T>
+T&& create();
+
+template<class T, class Arg>
+void test() {
+ T t(create<Arg>());
+ (void) t;
+}
+
+void f (void (&)());
+void f (void (&&)());
+
+int main() {
+ test<void(&)(), void()>();
+ test<void(&&)(), void()>();
+ // This call should choose the lvalue reference overload.
+ // { dg-final { scan-assembler-not "_Z1fOFvvE" } }
+ f(create<void()>());
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-return.C b/gcc/testsuite/g++.dg/cpp0x/rv-return.C
index e52101feae1..3ab659833ea 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-return.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-return.C
@@ -7,12 +7,12 @@ template<typename T> struct same_type<T, T> {};
int const f() { return 0; }
int &&r = f(); // binding "int&&" to "int" should succeed
-same_type<decltype(f()), int const> s1;
+same_type<decltype(f()), int> s1;
same_type<decltype(0,f()), int> s2;
template <class T>
T const g() { return 0; }
int &&r2 = g<int>();
-same_type<decltype(g<int>()), int const> s3;
+same_type<decltype(g<int>()), int> s3;
same_type<decltype(0,g<int>()), int> s4;
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae10.C b/gcc/testsuite/g++.dg/cpp0x/sfinae10.C
new file mode 100644
index 00000000000..ede8b704245
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae10.C
@@ -0,0 +1,18 @@
+// PR c++/48452
+// { dg-options -std=c++0x }
+namespace std {
+ template <class T> T&& declval();
+}
+
+template<class T, class... Args>
+decltype(T(std::declval<Args>()...), char()) f(int);
+
+template<class, class...>
+char (&f(...))[2];
+
+struct A { virtual ~A() = 0; };
+struct B {};
+
+static_assert(sizeof(f<A, int, int>(0)) != 1, "Error"); // a
+static_assert(sizeof(f<B, void, int>(0)) != 1, "Error"); // b
+static_assert(sizeof(f<void, int, int>(0)) != 1, "Error"); // c
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae11.C b/gcc/testsuite/g++.dg/cpp0x/sfinae11.C
new file mode 100644
index 00000000000..a3ffc34f9a3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae11.C
@@ -0,0 +1,56 @@
+// PR c++/48468
+// { dg-options -std=c++0x }
+// { dg-prune-output "note" }
+
+template<class T>
+T&& declval() noexcept;
+
+template< class T >
+inline void f1( T& x ) noexcept( noexcept( declval<T&>().foo() ) )
+{
+ x.foo();
+}
+
+template< class T,
+ bool Noexcept = noexcept( declval<T&>().foo() )
+>
+inline void f2( T& x ) noexcept( Noexcept )
+{
+ x.foo();
+}
+
+// a common and trivial mistake
+template< class T >
+inline void f3( T& x ) noexcept( declval<T&>().foo() )
+{
+ x.foo();
+}
+
+struct X
+{
+ void foo();
+};
+
+struct Y
+{
+ void foo() noexcept;
+};
+
+struct Z {};
+
+int main()
+{
+ X x; Y y; Z z;
+
+ static_assert( !noexcept( f1(x) ), "OK." );
+ static_assert( !noexcept( f2(x) ), "OK." );
+ // static_assert( !noexcept( f3(x) ), "shall be ill-formed(OK)." );
+
+ static_assert( noexcept( f1(y) ), "OK." );
+ static_assert( noexcept( f2(y) ), "OK." );
+ // static_assert( noexcept( f3(y) ), "shall be ill-formed(OK)." );
+
+ static_assert( noexcept( f1(z) ), "shall be ill-formed." ); // { dg-error "no match" }
+ static_assert( noexcept( f2(z) ), "shall be ill-formed." ); // { dg-error "no match" }
+ static_assert( !noexcept( f3(z) ), "shall be ill-formed." ); // { dg-error "no match" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae12.C b/gcc/testsuite/g++.dg/cpp0x/sfinae12.C
new file mode 100644
index 00000000000..114f1b42da8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae12.C
@@ -0,0 +1,18 @@
+// PR c++/48535
+// { dg-options -std=c++0x }
+
+template<class T,
+ class = decltype(T{})
+>
+char f(int);
+
+template<class>
+char (&f(...))[2];
+
+struct A { virtual ~A() = 0; };
+
+static_assert(sizeof(f<A>(0)) != 1, "Error"); // (a)
+static_assert(sizeof(f<void()>(0)) != 1, "Error"); // (b)
+static_assert(sizeof(f<int&>(0)) != 1, "Error"); // (d)
+static_assert(sizeof(f<const int&>(0)) == 1, "Error"); // (e)
+static_assert(sizeof(f<int[]>(0)) != 1, "Error"); // (f)
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae13.C b/gcc/testsuite/g++.dg/cpp0x/sfinae13.C
new file mode 100644
index 00000000000..465df2d8b8c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae13.C
@@ -0,0 +1,20 @@
+// PR c++/48581
+// { dg-options -std=c++0x }
+
+template<class T>
+T&& create();
+
+template<class T,
+ class = decltype(foo(create<T>()))
+>
+auto f(int) -> char;
+
+template<class>
+auto f(...) -> char (&)[2];
+
+struct S {};
+void foo(S);
+
+static_assert(sizeof(f<S>(0)) == 1, "Error"); // (#)
+
+int main() {}
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae14.C b/gcc/testsuite/g++.dg/cpp0x/sfinae14.C
new file mode 100644
index 00000000000..305f96eddca
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae14.C
@@ -0,0 +1,27 @@
+// PR c++/48557
+// { dg-options -std=c++0x }
+
+template<class T>
+struct add_rval_ref
+{
+ typedef T&& type;
+};
+
+template<>
+struct add_rval_ref<void>
+{
+ typedef void type;
+};
+
+template<class T>
+typename add_rval_ref<T>::type create();
+
+template<class T, class U,
+ class = decltype(create<T>() + create<U>())
+>
+char f(int);
+
+template<class, class>
+char (&f(...))[2];
+
+static_assert(sizeof(f<void, int>(0)) != 1, "Error"); // (a)
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae15.C b/gcc/testsuite/g++.dg/cpp0x/sfinae15.C
new file mode 100644
index 00000000000..595ca40b555
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae15.C
@@ -0,0 +1,12 @@
+// PR c++/48531
+// { dg-options -std=c++0x }
+
+template<class T,
+ class = decltype(T())
+>
+char f(int);
+
+template<class>
+char (&f(...))[2];
+
+static_assert(sizeof(f<int[]>(0)) != 1, "Error");
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae16.C b/gcc/testsuite/g++.dg/cpp0x/sfinae16.C
new file mode 100644
index 00000000000..6470567b7a2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae16.C
@@ -0,0 +1,17 @@
+// PR c++/48531
+// { dg-options -std=c++0x }
+
+template<class T,
+ class = decltype(T())
+>
+char f(int);
+
+template<class>
+double f(...);
+
+struct B2 {
+ B2(...);
+};
+
+#define SA(X) static_assert ((X), #X);
+SA(sizeof(f<B2[2]>(0)) != 1);
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae17.C b/gcc/testsuite/g++.dg/cpp0x/sfinae17.C
new file mode 100644
index 00000000000..dbbd9efe410
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae17.C
@@ -0,0 +1,31 @@
+// PR c++/48530
+// { dg-options -std=c++0x }
+
+template<class T,
+ class = decltype(T{})
+>
+char f(int);
+
+template<class>
+char (&f(...))[2];
+
+struct DelDtor {
+ ~DelDtor() = delete;
+};
+
+static_assert(sizeof(f<DelDtor[2]>(0)) != 1, "Error");
+
+struct A
+{
+ static DelDtor *p;
+};
+
+template<class T,
+ class = decltype(delete T::p, (T*)0)
+>
+char g(int);
+
+template<class>
+char (&g(...))[2];
+
+static_assert(sizeof(g<DelDtor>(0)) != 1, "Error");
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae18.C b/gcc/testsuite/g++.dg/cpp0x/sfinae18.C
new file mode 100644
index 00000000000..bb54335e6cc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae18.C
@@ -0,0 +1,17 @@
+// PR c++/48530
+// { dg-options -std=c++0x }
+
+template<class T,
+ class = decltype(T())
+>
+char f(int);
+
+template<class>
+char (&f(...))[2];
+
+struct DelDtor {
+ DelDtor() = default;
+ ~DelDtor() = delete;
+};
+
+static_assert(sizeof(f<DelDtor>(0)) != 1, "Error");
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae19.C b/gcc/testsuite/g++.dg/cpp0x/sfinae19.C
new file mode 100644
index 00000000000..be96983bf39
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae19.C
@@ -0,0 +1,13 @@
+// PR c++/48737
+// { dg-options "-std=c++0x" }
+
+template<class T>
+T&& create();
+
+template<class T, class... Args>
+decltype(T{create<Args>()...}, char()) f(int);
+
+template<class, class...>
+char (&f(...))[2];
+
+static_assert(sizeof(f<int[1], int, int>(0)) != 1, "Error");
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae20.C b/gcc/testsuite/g++.dg/cpp0x/sfinae20.C
new file mode 100644
index 00000000000..486064c3af7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae20.C
@@ -0,0 +1,23 @@
+// PR c++/48744
+// { dg-options "-std=c++0x" }
+
+template<class T>
+struct add_rval_ref {
+ typedef T&& type;
+};
+
+template<>
+struct add_rval_ref<void> {
+ typedef void type;
+};
+
+template<class T>
+typename add_rval_ref<T>::type create();
+
+template<class T, class Arg>
+decltype(T{create<Arg>()}, char()) f(int);
+
+template<class, class>
+char (&f(...))[2];
+
+static_assert(sizeof(f<int, void>(0)) != 1, "Error");
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae21.C b/gcc/testsuite/g++.dg/cpp0x/sfinae21.C
new file mode 100644
index 00000000000..4fba6eb82a1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae21.C
@@ -0,0 +1,14 @@
+// PR c++/48735
+// { dg-options "-std=c++0x" }
+
+template<class T,
+ class = decltype(T{})
+>
+char f(int);
+
+template<class>
+char (&f(...))[2];
+
+struct ND { ND() = delete; };
+
+static_assert(sizeof(f<ND[1]>(0)) != 1, "Error");
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae6.C b/gcc/testsuite/g++.dg/cpp0x/sfinae6.C
new file mode 100644
index 00000000000..401d5362d84
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae6.C
@@ -0,0 +1,31 @@
+// PR c++/48113
+// { dg-options -std=c++0x }
+
+template<typename T> T declval();
+
+struct tuple { };
+
+struct F1
+{
+ void operator()(tuple, int);
+};
+
+typedef void (*F2)(tuple, int);
+
+template<typename F, typename T>
+struct Bind
+{
+ template<typename A,
+ typename R = decltype( F()(declval<T&>(), A()) )>
+ R f(A);
+
+ template<typename A,
+ typename R = decltype( F()(declval<volatile T&>(), A()) )>
+ R f(A) volatile;
+};
+
+int main()
+{
+ Bind<F1, tuple>().f(0); // OK
+ Bind<F2, tuple>().f(0); // ERROR, should be OK
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae7.C b/gcc/testsuite/g++.dg/cpp0x/sfinae7.C
new file mode 100644
index 00000000000..0a95a9644c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae7.C
@@ -0,0 +1,20 @@
+// { dg-options -std=c++0x }
+
+struct A
+{
+ void f();
+ void f(int);
+ typedef int g;
+};
+
+template <class T> decltype (T::f) f();
+template <class T> void f();
+
+template <class T> decltype (T::g) g();
+template <class T> void g();
+
+int main()
+{
+ f<A>();
+ g<A>();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae8.C b/gcc/testsuite/g++.dg/cpp0x/sfinae8.C
new file mode 100644
index 00000000000..7f3012f94df
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae8.C
@@ -0,0 +1,14 @@
+// PR c++/48449
+// { dg-options -std=c++0x }
+
+template<class T, class = decltype(T())>
+char f(int);
+
+template<class>
+char (&f(...))[2];
+
+struct A { virtual ~A() = 0; };
+
+static_assert(sizeof(f<int&>(0)) != 1, "Error");
+static_assert(sizeof(f<void()>(0)) != 1, "Error");
+static_assert(sizeof(f<A>(0)) != 1, "Error");
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae9.C b/gcc/testsuite/g++.dg/cpp0x/sfinae9.C
new file mode 100644
index 00000000000..6f1de21d51d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/sfinae9.C
@@ -0,0 +1,24 @@
+// PR c++/48450
+// { dg-options -std=c++0x }
+
+namespace std {
+ template <class T> T&& declval();
+};
+
+template<class To, class From,
+ class = decltype(static_cast<To>(std::declval<From>()))
+>
+char f(int);
+
+template<class, class>
+char (&f(...))[2];
+
+struct A { virtual ~A() = 0; };
+struct B {};
+struct D : B {};
+
+static_assert(sizeof(f<A, int>(0)) != 1, "Error"); // a
+static_assert(sizeof(f<int*, const void*>(0)) != 1, "Error"); // b
+static_assert(sizeof(f<D*, const B*>(0)) != 1, "Error"); // c
+static_assert(sizeof(f<int B::*, const int D::*>(0)) != 1, "Error"); // d
+static_assert(sizeof(f<B, void>(0)) != 1, "Error"); // e
diff --git a/gcc/testsuite/g++.dg/cpp0x/union4.C b/gcc/testsuite/g++.dg/cpp0x/union4.C
new file mode 100644
index 00000000000..07050475d36
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/union4.C
@@ -0,0 +1,17 @@
+// PR c++/48537
+// { dg-options -std=c++0x }
+
+struct SFoo
+{
+ SFoo() =delete; // { dg-error "declared" }
+};
+
+union UFoo // { dg-error "deleted" }
+{
+ SFoo foo;
+};
+
+int main()
+{
+ UFoo(); // { dg-error "deleted" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic107.C b/gcc/testsuite/g++.dg/cpp0x/variadic107.C
new file mode 100644
index 00000000000..5c3f468515d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic107.C
@@ -0,0 +1,15 @@
+// PR c++/48451
+// { dg-options -std=c++0x }
+
+namespace std {
+ template <class T> T&& declval();
+}
+
+template<class T, class... Args,
+ class = decltype(T(std::declval<Args>()...))
+ >
+char f(int);
+
+struct From2Ints { From2Ints(int, int); };
+
+static_assert(sizeof(f<From2Ints, int, int>(0)) == 1, "Error"); // b
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic108.C b/gcc/testsuite/g++.dg/cpp0x/variadic108.C
new file mode 100644
index 00000000000..3ad5af45717
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic108.C
@@ -0,0 +1,10 @@
+// PR c++/48736
+// { dg-options -std=c++0x }
+
+template<class T>
+T&& create();
+
+template<class T, class... Args,
+ class = decltype(T{create<Args>()...}) // Line X
+>
+char f(int);
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/icf.C b/gcc/testsuite/g++.dg/debug/dwarf2/icf.C
index af2c112b654..ca73ab72479 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/icf.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/icf.C
@@ -1,6 +1,5 @@
-// Test support for ICF debugging.
// { dg-do compile }
-// { dg-options "-O0 -gdwarf-2 -fenable-icf-debug -dA" }
+// { dg-options "-O1 -gdwarf-2 -gno-strict-dwarf -fno-inline -dA" }
class A
{
@@ -37,14 +36,3 @@ test2(A* a)
b.work(a);
}
}
-
-// Verify that we get .debug_dcall and .debug_vcall tables generated
-// and that we see entries for both virtual calls.
-// { dg-final { scan-assembler "\\.section.*\.debug_dcall" } }
-// { dg-final { scan-assembler "\\.section.*\.debug_vcall" } }
-// { dg-final { scan-assembler "New caller" } }
-// { dg-final { scan-assembler "Caller DIE offset" } }
-// { dg-final { scan-assembler "Point of call" } }
-// { dg-final { scan-assembler "Callee DIE offset" } }
-// { dg-final { scan-assembler "0\[ \t\]+.*Vtable slot" } }
-// { dg-final { scan-assembler "0x1\[ \t\]+.*Vtable slot" } }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/typedef6.C b/gcc/testsuite/g++.dg/debug/dwarf2/typedef6.C
new file mode 100644
index 00000000000..8896446a7ed
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/typedef6.C
@@ -0,0 +1,30 @@
+// Origin PR debug/
+// { dg-options "-g -dA" }
+
+class C {
+public:
+ C() {}
+ ~C() {}
+};
+typedef struct {
+ C m;
+} t;
+typedef t s;
+s v;
+
+/*
+ We want to check that we have a DIE describing the typedef t like this:
+
+ .uleb128 0xc # (DIE (0xb8) DW_TAG_typedef)
+ .ascii "t\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../../prtests/test.cc)
+ .byte 0xb # DW_AT_decl_line
+ .long 0x78 # DW_AT_type
+
+ e.g, it should not haven any child DIE -- the bug here was that this
+ DIE had children DIEs. So we check that the last line is immediately
+ followed by a line containing the pattern "(DIE (", instead of a
+ line containing a DW_AT_sibling attribute.
+ */
+
+// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE \[^\n\r\]* DW_TAG_typedef\\)\[\n\r\]{1,2}\[^\n\r\].*\"t\\\\0\"\[^\n\r\]*DW_AT_name\[\n\r\]{1,2}\[^\n\r\]*\[\n\r\]{1,2}\[^\n\r\]*\[\n\r\]{1,2}\[^\n\r\]*DW_AT_type\[\n\r\]{1,2}\[^\n\r\]*\\(DIE" 1 } }
diff --git a/gcc/testsuite/g++.dg/ext/attrib32.C b/gcc/testsuite/g++.dg/ext/attrib32.C
index 77f71ded89d..e4dfe4e9f67 100644
--- a/gcc/testsuite/g++.dg/ext/attrib32.C
+++ b/gcc/testsuite/g++.dg/ext/attrib32.C
@@ -10,10 +10,10 @@ void bar()
foo(0);
}
-typedef union U1 { int i; } U2 __attribute__((transparent_union));
+typedef union U1 { int i; } U2 __attribute__((transparent_union)); // { dg-warning "ignored" }
-static void foo2(U1) {}
-static void foo2(U2) {}
+static void foo2(U1) {} // { dg-error "previously defined" }
+static void foo2(U2) {} // { dg-error "redefinition" }
void bar2(U1 u1, U2 u2)
{
diff --git a/gcc/testsuite/g++.dg/ext/attrib41.C b/gcc/testsuite/g++.dg/ext/attrib41.C
new file mode 100644
index 00000000000..368554a1b1d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/attrib41.C
@@ -0,0 +1,19 @@
+// PR c++/45267
+// { dg-options "-O" }
+
+template<typename T> struct Vector {
+ Vector(long long x);
+ inline Vector<T> operator<<(int x) const __attribute__((always_inline));
+};
+long long bar (long long);
+template<> inline Vector<int> Vector<int>::operator<<(int x) const {
+ return bar(x);
+}
+bool b;
+int main() {
+ Vector<int> a(1);
+ if ((a << 2), b) {
+ a << 2;
+ throw 1;
+ }
+}
diff --git a/gcc/testsuite/g++.dg/ext/bitfield2.C b/gcc/testsuite/g++.dg/ext/bitfield2.C
index 753492ce994..c288cec7c33 100644
--- a/gcc/testsuite/g++.dg/ext/bitfield2.C
+++ b/gcc/testsuite/g++.dg/ext/bitfield2.C
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* Remove pedantic. Allow the GCC extension to use char for bitfields. */
/* { dg-options "" } */
-/* { dg-options "-mno-ms-bitfields" { target i?86-*-netware } } */
+/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-netware i?86-*-mingw* x86_64-*-mingw* } } } */
struct t /* { dg-message "note: offset of packed bit-field 't::b' has changed in GCC 4.4" "" { target pcc_bitfield_type_matters } } */
{
diff --git a/gcc/testsuite/g++.dg/ext/bitfield3.C b/gcc/testsuite/g++.dg/ext/bitfield3.C
index 0a89bdab1ff..f9fb78cceee 100644
--- a/gcc/testsuite/g++.dg/ext/bitfield3.C
+++ b/gcc/testsuite/g++.dg/ext/bitfield3.C
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-Wno-packed-bitfield-compat" } */
-/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target i?86-*-netware } } */
+/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-netware i?86-*-mingw* x86_64-*-mingw* } } } */
struct t
{
diff --git a/gcc/testsuite/g++.dg/ext/bitfield4.C b/gcc/testsuite/g++.dg/ext/bitfield4.C
index 7bf85533130..8562686d6eb 100644
--- a/gcc/testsuite/g++.dg/ext/bitfield4.C
+++ b/gcc/testsuite/g++.dg/ext/bitfield4.C
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "" } */
-/* { dg-options "-mno-ms-bitfields" { target i?86-*-netware } } */
+/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-netware i?86-*-mingw* x86_64-*-mingw* } } } */
struct t /* { dg-message "note: offset of packed bit-field 't::b' has changed in GCC 4.4" "" { target pcc_bitfield_type_matters } } */
{
diff --git a/gcc/testsuite/g++.dg/ext/bitfield5.C b/gcc/testsuite/g++.dg/ext/bitfield5.C
index cb24c65d723..1d862d76975 100644
--- a/gcc/testsuite/g++.dg/ext/bitfield5.C
+++ b/gcc/testsuite/g++.dg/ext/bitfield5.C
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-Wno-packed-bitfield-compat" } */
-/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target i?86-*-netware } } */
+/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-netware i?86-*-mingw* x86_64-*-mingw* } } } */
struct t
{
diff --git a/gcc/testsuite/g++.dg/ext/complex7.C b/gcc/testsuite/g++.dg/ext/complex7.C
new file mode 100644
index 00000000000..9d5463f94dc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/complex7.C
@@ -0,0 +1,6 @@
+// { dg-options "" }
+
+class A
+{
+ static const _Complex double x = 1.0 + 2.0i;
+};
diff --git a/gcc/testsuite/g++.dg/ext/complex8.C b/gcc/testsuite/g++.dg/ext/complex8.C
new file mode 100644
index 00000000000..9b8ac1b186f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/complex8.C
@@ -0,0 +1,67 @@
+// PR libstdc++/48760
+// { dg-options -std=c++0x }
+// { dg-do run }
+
+constexpr _Complex int i{1,2};
+constexpr _Complex int j{3};
+
+#define SA(X) static_assert((X),#X)
+
+SA(__real i == 1);
+SA(__imag i == 2);
+SA(__real j == 3);
+SA(__imag j == 0);
+
+struct A
+{
+ _Complex int c;
+ constexpr A(int i, int j): c{i,j} { }
+ constexpr A(int i): c{i} { }
+};
+
+constexpr A a1(1,2);
+constexpr A a2(3);
+
+SA(__real a1.c == 1);
+SA(__imag a1.c == 2);
+SA(__real a2.c == 3);
+SA(__imag a2.c == 0);
+
+typedef _Complex int ci;
+
+SA((__real ci{1,2} == 1));
+SA((__imag ci{1,2} == 2));
+SA((__real ci{3} == 3));
+SA((__imag ci{3} == 0));
+
+struct B
+{
+ _Complex int c;
+ int i;
+};
+
+constexpr B b1 = { { 1,2 }, 42 };
+constexpr B b2 = { { 3 }, 24 };
+// No brace elision for complex.
+constexpr B b3 = { 5, 6 };
+
+SA(__real b1.c == 1);
+SA(__imag b1.c == 2);
+SA(b1.i == 42);
+SA(__real b2.c == 3);
+SA(__imag b2.c == 0);
+SA(b2.i == 24);
+SA(__real b3.c == 5);
+SA(__imag b3.c == 0);
+SA(b3.i == 6);
+
+int main()
+{
+ ci* p = new ci{1,2};
+ if (__real *p != 1 || __imag *p != 2)
+ return 1;
+ delete p;
+ p = new ci{3};
+ if (__real *p != 3 || __imag *p != 0)
+ return 1;
+}
diff --git a/gcc/testsuite/g++.dg/ext/complex9.C b/gcc/testsuite/g++.dg/ext/complex9.C
new file mode 100644
index 00000000000..5bb1625c9fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/complex9.C
@@ -0,0 +1,8 @@
+// PR c++/28501
+
+struct A
+{
+ operator int();
+};
+
+int i = __real__ A();
diff --git a/gcc/testsuite/g++.dg/ext/is_literal_type1.C b/gcc/testsuite/g++.dg/ext/is_literal_type1.C
new file mode 100644
index 00000000000..21570d2d6ec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/is_literal_type1.C
@@ -0,0 +1,11 @@
+// PR c++/48771
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+struct NonLiteral {
+ NonLiteral();
+ ~NonLiteral();
+};
+
+static_assert(__is_literal_type(NonLiteral&), "Error");
+static_assert(__is_literal_type(NonLiteral&&), "Error");
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type1.C b/gcc/testsuite/g++.dg/ext/underlying_type1.C
new file mode 100644
index 00000000000..a8f68d3d60a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/underlying_type1.C
@@ -0,0 +1,18 @@
+// { dg-do compile }
+
+struct B { };
+union U { };
+
+template<typename T>
+ struct underlying_type
+ { typedef __underlying_type(T) type; }; // { dg-error "not an enumeration" }
+
+__underlying_type(int) i1; // { dg-error "not an enumeration|invalid" }
+__underlying_type(A) i2; // { dg-error "expected" }
+__underlying_type(B) i3; // { dg-error "not an enumeration|invalid" }
+__underlying_type(U) i4; // { dg-error "not an enumeration|invalid" }
+
+underlying_type<int>::type i5;
+underlying_type<A>::type i6; // { dg-error "not declared|template|expected" }
+underlying_type<B>::type i7;
+underlying_type<U>::type i8;
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
new file mode 100644
index 00000000000..cb57407fe88
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -0,0 +1,32 @@
+// { dg-do run }
+// { dg-options "-std=c++0x" }
+
+#include <cassert>
+
+enum E1 : unsigned { E1_en = 1 };
+enum E2 : char { E2_en = 1 };
+enum class E3 { a = -1 };
+enum class E4 : unsigned char { c = 1 };
+enum class E5 : int { a = -1, b = 1 };
+enum class E6 : long { c = __LONG_MAX__ };
+
+template<typename T>
+ struct underlying_type
+ { typedef __underlying_type(T) type; };
+
+template<typename T>
+ void
+ test(T t, typename underlying_type<T>::type v)
+ {
+ assert( t == T(v) );
+ }
+
+int main()
+{
+ test(E1::E1_en, 1);
+ test(E2::E2_en, 1);
+ test(E3::a, -1);
+ test(E4::c, 1);
+ test(E5::a, -1);
+ test(E6::c, __LONG_MAX__);
+}
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type2.C b/gcc/testsuite/g++.dg/ext/underlying_type2.C
new file mode 100644
index 00000000000..0e4519876d2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/underlying_type2.C
@@ -0,0 +1,9 @@
+// { dg-do compile }
+
+enum E1 { };
+enum E2 { a = -1, b = 1 };
+enum E3 { c = __LONG_MAX__ };
+
+__underlying_type(E1) e1 = 0;
+__underlying_type(E2) e2 = b;
+__underlying_type(E3) e3 = __LONG_MAX__;
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type3.C b/gcc/testsuite/g++.dg/ext/underlying_type3.C
new file mode 100644
index 00000000000..b78cc7dd3f6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/underlying_type3.C
@@ -0,0 +1,33 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+template<typename T1, typename T2>
+ struct is_same
+ { static const bool value = false; };
+
+template<typename T>
+ struct is_same<T, T>
+ { static const bool value = true; };
+
+enum E1 : unsigned { };
+enum E2 : char { };
+enum class E3 { };
+enum class E4 : unsigned char { c = 1 };
+enum class E5 : int { a = -1, b = 1 };
+enum class E6 : long { c = __LONG_MAX__ };
+
+__underlying_type(E1) i1 = __INT_MAX__ * 2U + 1;
+__underlying_type(E2) i2 = (char(-1) < 0
+ ? __SCHAR_MAX__
+ : __SCHAR_MAX__ * 2U + 1);
+__underlying_type(E3) i3 = __INT_MAX__;
+__underlying_type(E4) i4 = __SCHAR_MAX__ * 2U + 1;
+__underlying_type(E5) i5 = int(E5::b);
+__underlying_type(E6) i6 = __LONG_MAX__;
+
+static_assert(is_same<__underlying_type(E1), unsigned>::value, "Error");
+static_assert(is_same<__underlying_type(E2), char>::value, "Error");
+static_assert(is_same<__underlying_type(E3), int>::value, "Error");
+static_assert(is_same<__underlying_type(E4), unsigned char>::value, "Error");
+static_assert(is_same<__underlying_type(E5), int>::value, "Error");
+static_assert(is_same<__underlying_type(E6), long>::value, "Error");
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
new file mode 100644
index 00000000000..b80ed57694b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -0,0 +1,25 @@
+// { dg-do compile }
+
+#include <tr1/type_traits>
+
+using namespace std::tr1;
+
+enum E1 { };
+enum E2 { a = -1, b = 1 };
+enum E3 { c = __LONG_MAX__ };
+
+typedef __underlying_type(E1) UTE1;
+typedef __underlying_type(E2) UTE2;
+typedef __underlying_type(E3) UTE3;
+
+template<typename T>
+ struct underlying_type
+ { typedef __underlying_type(T) type; };
+
+int test1[is_same<underlying_type<E1>::type, UTE1>::value ? 1 : -1];
+int test2[is_same<underlying_type<E2>::type, UTE2>::value ? 1 : -1];
+int test3[is_same<underlying_type<E3>::type, UTE3>::value ? 1 : -1];
+
+int test4[is_integral<underlying_type<E1>::type>::value ? 1 : -1];
+int test5[is_integral<underlying_type<E2>::type>::value ? 1 : -1];
+int test6[is_integral<underlying_type<E3>::type>::value ? 1 : -1];
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type5.C b/gcc/testsuite/g++.dg/ext/underlying_type5.C
new file mode 100644
index 00000000000..a9c19924b95
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/underlying_type5.C
@@ -0,0 +1,43 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+template<typename T1, typename T2>
+ struct is_same
+ { static const bool value = false; };
+
+template<typename T>
+ struct is_same<T, T>
+ { static const bool value = true; };
+
+enum E1 : unsigned { };
+enum E2 : char { };
+enum class E3 { };
+enum class E4 : unsigned char { c = 1 };
+enum class E5 : int { a = -1, b = 1 };
+enum class E6 : long { c = __LONG_MAX__ };
+
+typedef __underlying_type(E1) UTE1;
+typedef __underlying_type(E2) UTE2;
+typedef __underlying_type(E3) UTE3;
+typedef __underlying_type(E4) UTE4;
+typedef __underlying_type(E5) UTE5;
+typedef __underlying_type(E6) UTE6;
+
+template<typename T>
+ struct underlying_type
+ { typedef __underlying_type(T) type; };
+
+static_assert(is_same<underlying_type<E1>::type, UTE1>::value, "Error");
+static_assert(is_same<underlying_type<E2>::type, UTE2>::value, "Error");
+static_assert(is_same<underlying_type<E3>::type, UTE3>::value, "Error");
+static_assert(is_same<underlying_type<E4>::type, UTE4>::value, "Error");
+static_assert(is_same<underlying_type<E5>::type, UTE5>::value, "Error");
+static_assert(is_same<underlying_type<E6>::type, UTE6>::value, "Error");
+
+static_assert(is_same<underlying_type<E1>::type, unsigned>::value, "Error");
+static_assert(is_same<underlying_type<E2>::type, char>::value, "Error");
+static_assert(is_same<underlying_type<E3>::type, int>::value, "Error");
+static_assert(is_same<underlying_type<E4>::type,
+ unsigned char>::value, "Error");
+static_assert(is_same<underlying_type<E5>::type, int>::value, "Error");
+static_assert(is_same<underlying_type<E6>::type, long>::value, "Error");
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type6.C b/gcc/testsuite/g++.dg/ext/underlying_type6.C
new file mode 100644
index 00000000000..50f528856d7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/underlying_type6.C
@@ -0,0 +1,31 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+template<typename T1, typename T2>
+ struct is_same
+ { static const bool value = false; };
+
+template<typename T>
+ struct is_same<T, T>
+ { static const bool value = true; };
+
+enum E1 : unsigned { };
+enum E2 : char { };
+enum class E3 { };
+enum class E4 : unsigned char { c = 1 };
+enum class E5 : int { a = -1, b = 1 };
+enum class E6 : long { c = __LONG_MAX__ };
+
+template<typename T, typename U,
+ typename V = __underlying_type(T)>
+ struct test
+ {
+ static_assert(is_same<U, V>::value, "Error");
+ };
+
+template class test<E1, unsigned>;
+template class test<E2, char>;
+template class test<E3, int>;
+template class test<E4, unsigned char>;
+template class test<E5, int>;
+template class test<E6, long>;
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type7.C b/gcc/testsuite/g++.dg/ext/underlying_type7.C
new file mode 100644
index 00000000000..872fe52b00e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/underlying_type7.C
@@ -0,0 +1,24 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+enum E1 : unsigned { E1_en = 1 };
+enum E2 : char { E2_en = 1 };
+enum class E3 { a = -1 };
+enum class E4 : unsigned char { c = 1 };
+enum class E5 : int { a = -1, b = 1 };
+enum class E6 : long { c = __LONG_MAX__ };
+
+template<typename T>
+ void
+ test(T, __underlying_type(T)) // { dg-message "sorry, unimplemented: mangling" }
+ { }
+
+int main()
+{
+ test(E1::E1_en, 1);
+ test(E2::E2_en, 1);
+ test(E3::a, -1);
+ test(E4::c, 1);
+ test(E5::a, -1);
+ test(E6::c, __LONG_MAX__);
+}
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type8.C b/gcc/testsuite/g++.dg/ext/underlying_type8.C
new file mode 100644
index 00000000000..0bbed2b489c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/underlying_type8.C
@@ -0,0 +1,46 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+enum E1 : unsigned { E1_en = 1 };
+enum E2 : char { E2_en = 1 };
+enum class E3 { a = -1 };
+enum class E4 : unsigned char { c = 1 };
+enum class E5 : int { a = -1, b = 1 };
+enum class E6 : long { c = __LONG_MAX__ };
+
+template<typename T1, typename T2>
+ struct is_same
+ { static const bool value = false; };
+
+template<typename T>
+ struct is_same<T, T>
+ { static const bool value = true; };
+
+template<typename>
+ struct underlying_type;
+
+template<typename T, typename U>
+ void
+ test(T, U, typename underlying_type<T>::type);
+
+template<typename T>
+ struct underlying_type
+ { typedef __underlying_type(T) type; };
+
+template<typename T, typename U>
+ void
+ test(T, U, typename underlying_type<T>::type)
+ {
+ static_assert(is_same<typename underlying_type<T>::type, U>::value,
+ "Error");
+ }
+
+int main()
+{
+ test(E1::E1_en, unsigned(), 1);
+ test(E2::E2_en, char(), 1);
+ test(E3::a, int(), -1);
+ test(E4::c, (unsigned char)(1), 1);
+ test(E5::a, int(), -1);
+ test(E6::c, long(), __LONG_MAX__);
+}
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type9.C b/gcc/testsuite/g++.dg/ext/underlying_type9.C
new file mode 100644
index 00000000000..9ffd24439a4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/underlying_type9.C
@@ -0,0 +1,30 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+template<typename T1, typename T2>
+ struct is_same
+ { static const bool value = false; };
+
+template<typename T>
+ struct is_same<T, T>
+ { static const bool value = true; };
+
+enum E1 : unsigned { };
+enum E2 : char { };
+enum class E3 { };
+enum class E4 : unsigned char { c = 1 };
+enum class E5 : int { a = -1, b = 1 };
+enum class E6 : long { c = __LONG_MAX__ };
+
+template<typename T, typename U>
+ struct test
+ {
+ static_assert(is_same<T, U>::value, "Error");
+ };
+
+test<__underlying_type(E1), unsigned> t1;
+test<__underlying_type(E2), char> t2;
+test<__underlying_type(E3), int> t3;
+test<__underlying_type(E4), unsigned char> t4;
+test<__underlying_type(E5), int> t5;
+test<__underlying_type(E6), long> t6;
diff --git a/gcc/testsuite/g++.dg/ext/vla10.C b/gcc/testsuite/g++.dg/ext/vla10.C
new file mode 100644
index 00000000000..17cdb2f9f76
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/vla10.C
@@ -0,0 +1,32 @@
+// PR c++/48446
+// { dg-options "" }
+
+template<typename T>
+struct A
+{
+ ~A ();
+ T *operator-> () const;
+};
+
+struct B
+{
+ typedef A <B> P;
+ static P foo (int);
+};
+
+struct C
+{
+ typedef A<C> P;
+ static const int c = 80;
+};
+
+C::P bar ();
+
+void
+baz ()
+{
+ char z[bar ()->c];
+ {
+ B::P m = B::foo (sizeof (z));
+ }
+}
diff --git a/gcc/testsuite/g++.dg/gomp/pr48632.C b/gcc/testsuite/g++.dg/gomp/pr48632.C
new file mode 100644
index 00000000000..afa8b189336
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/pr48632.C
@@ -0,0 +1,22 @@
+// PR c++/48632
+// { dg-do compile }
+// { dg-options "-fopenmp" }
+
+template<typename T>
+void
+foo (T *x, T *y, unsigned z)
+{
+#pragma omp parallel for
+ for (T *p = x; p < y; p += z)
+ ;
+#pragma omp parallel for
+ for (T *p = y; p > x; p -= z)
+ ;
+}
+
+int
+main ()
+{
+ char buf[10];
+ foo (&buf[0], &buf[9], 1);
+}
diff --git a/gcc/testsuite/g++.dg/gomp/pr48716.C b/gcc/testsuite/g++.dg/gomp/pr48716.C
new file mode 100644
index 00000000000..2dccad2d90a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/pr48716.C
@@ -0,0 +1,24 @@
+// PR c/48716
+// { dg-do compile }
+// { dg-options "-fopenmp" }
+
+int
+main (void)
+{
+ #pragma omp parallel default(none)
+ {
+ static int s;
+ int t = 0;
+ #pragma omp atomic
+ s++;
+ t++;
+ }
+ #pragma omp task default(none)
+ {
+ static int s;
+ int t = 0;
+ #pragma omp atomic
+ s++;
+ t++;
+ }
+}
diff --git a/gcc/testsuite/g++.dg/guality/guality.exp b/gcc/testsuite/g++.dg/guality/guality.exp
index 9a1785036ef..749691dab7e 100644
--- a/gcc/testsuite/g++.dg/guality/guality.exp
+++ b/gcc/testsuite/g++.dg/guality/guality.exp
@@ -4,7 +4,8 @@ load_lib g++-dg.exp
load_lib gcc-gdb-test.exp
# Disable on darwin until radr://7264615 is resolved.
-if { [istarget *-*-darwin*] } {
+# Disable on Tru64 UNIX (PR testsuite/48251).
+if { [istarget *-*-darwin*] || [istarget alpha*-dec-osf*] } {
return
}
diff --git a/gcc/testsuite/g++.dg/inherit/pr48798.C b/gcc/testsuite/g++.dg/inherit/pr48798.C
new file mode 100644
index 00000000000..cc9921e69b8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/pr48798.C
@@ -0,0 +1,4 @@
+// PR c++/48798
+
+typedef struct A {} const t;
+struct B : t {};
diff --git a/gcc/testsuite/g++.dg/inherit/virtual9.C b/gcc/testsuite/g++.dg/inherit/virtual9.C
new file mode 100644
index 00000000000..83e04790873
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/virtual9.C
@@ -0,0 +1,60 @@
+// { dg-do compile }
+struct B
+{
+ virtual void f() final {}
+ virtual void g() {}
+ virtual void x() const {}
+};
+
+struct B2
+{
+ virtual void h() {}
+};
+
+struct D : B
+{
+ virtual void g() override final {} // { dg-error "overriding" }
+};
+
+template <class T> struct D2 : T
+{
+ void h() override {} // { dg-error "marked override, but does not override" }
+};
+
+template <class T> struct D3 : T
+{
+ void h() override {}
+};
+
+struct D4 : D
+{
+ void g() {} // { dg-error "virtual function" }
+};
+
+struct B3
+{
+ virtual void f() final final {} // { dg-error "duplicate virt-specifier" }
+};
+
+struct B4
+{
+ void f() final {} // { dg-error "marked final, but is not virtual" }
+};
+
+struct D5 : B
+{
+ void ff() override {} // { dg-error "marked override, but does not override" }
+ virtual void fff() override {} // { dg-error "marked override, but does not override" }
+ virtual void x() override {} // { dg-error "marked override, but does not override" }
+ void g() override;
+};
+
+void D5::g() override {} // { dg-error "not allowed outside a class definition" }
+void g() override {} // { dg-error "not allowed outside a class definition" }
+
+int main()
+{
+ D2<B> d;
+ D2<B2> d2;
+ D3<B2> d3;
+}
diff --git a/gcc/testsuite/g++.dg/init/ctor10.C b/gcc/testsuite/g++.dg/init/ctor10.C
new file mode 100644
index 00000000000..91cc2501209
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/ctor10.C
@@ -0,0 +1,9 @@
+// PR c++/48606
+// { dg-do compile }
+// { dg-options "-fkeep-inline-functions" }
+
+struct S
+{
+ int &ref;
+ S() : ref() {}; // { dg-error "value-initialization of" }
+};
diff --git a/gcc/testsuite/g++.dg/init/dtor4.C b/gcc/testsuite/g++.dg/init/dtor4.C
new file mode 100644
index 00000000000..4bca69e4a80
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/dtor4.C
@@ -0,0 +1,9 @@
+// { dg-final { scan-assembler-not "_ZN1AD2Ev" } }
+
+struct A { };
+
+int main()
+{
+ A a;
+ a.~A();
+}
diff --git a/gcc/testsuite/g++.dg/init/new30.C b/gcc/testsuite/g++.dg/init/new30.C
new file mode 100644
index 00000000000..24582d8fb1c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/new30.C
@@ -0,0 +1,15 @@
+// PR c++/40975
+
+struct data_type
+{
+ // constructor required to reproduce compiler bug
+ data_type() {}
+};
+
+struct ptr_type
+{
+ // array new as default argument required to reproduce compiler bug
+ ptr_type (data_type* ptr = new data_type[1]) { delete[] ptr; }
+};
+
+ptr_type obj;
diff --git a/gcc/testsuite/g++.dg/init/new31.C b/gcc/testsuite/g++.dg/init/new31.C
new file mode 100644
index 00000000000..33c94aaabaa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/new31.C
@@ -0,0 +1,18 @@
+// PR c++/48834
+// { dg-options -Wuninitialized }
+// { dg-do run }
+
+struct S
+{
+ S ():i (0)
+ {
+ }
+ int i;
+};
+
+int
+main ()
+{
+ S *s = new S[2];
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/init/new32.C b/gcc/testsuite/g++.dg/init/new32.C
new file mode 100644
index 00000000000..f82785749ce
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/new32.C
@@ -0,0 +1,16 @@
+// PR c++/48873
+
+#include <new>
+
+struct D {
+private:
+ ~D();
+};
+
+template<class T>
+T& create();
+
+void f()
+{
+ D* dp = new (((void*) 0)) D(create<D>()); // #
+}
diff --git a/gcc/testsuite/g++.dg/init/pr20039.C b/gcc/testsuite/g++.dg/init/pr20039.C
new file mode 100644
index 00000000000..9b0c12d6ea3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/pr20039.C
@@ -0,0 +1,19 @@
+// PR c++/20039
+// { dg-do compile }
+
+struct M
+{
+ M() : m(0) { }
+ int m;
+};
+
+struct X
+{
+ M m;
+};
+
+int mymain()
+{
+ const X *p = new const X[2]; // { dg-error "uninitialized const" }
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/init/pr48859.C b/gcc/testsuite/g++.dg/init/pr48859.C
new file mode 100644
index 00000000000..8ef5c2ee4a4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/pr48859.C
@@ -0,0 +1,14 @@
+// PR c++/48859
+// { dg-do compile }
+
+struct HasConstructor {
+ HasConstructor() {}
+};
+
+class ConstMember {
+ const HasConstructor empty_;
+};
+
+void foo() {
+ new ConstMember;
+}
diff --git a/gcc/testsuite/g++.dg/init/void1.C b/gcc/testsuite/g++.dg/init/void1.C
new file mode 100644
index 00000000000..ed41a90dea3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/void1.C
@@ -0,0 +1,6 @@
+// PR c++/48569
+
+int main()
+{
+ void();
+}
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-7.C b/gcc/testsuite/g++.dg/ipa/devirt-7.C
new file mode 100644
index 00000000000..ac147b57599
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/devirt-7.C
@@ -0,0 +1,87 @@
+/* Verify that IPA-CP can do devirtualization even if the virtual call
+ comes from a method that has been early-inlined into a descendant. */
+/* { dg-do run } */
+/* { dg-options "-O3 -fdump-ipa-cp" } */
+
+extern "C" void abort (void);
+
+class Distraction
+{
+public:
+ float f;
+ double d;
+ Distraction ()
+ {
+ f = 8.3;
+ d = 10.2;
+ }
+ virtual float bar (float z);
+};
+
+class A
+{
+public:
+ int data;
+ virtual int foo (int i);
+ int middleman_1 (int i);
+};
+
+
+class B : public Distraction, public A
+{
+public:
+ virtual int foo (int i);
+ int middleman_2 (int i);
+ __attribute__ ((noinline)) B();
+};
+
+float Distraction::bar (float z)
+{
+ f += z;
+ return f/2;
+}
+
+int A::foo (int i)
+{
+ return i + 1;
+}
+
+int B::foo (int i)
+{
+ return i + 2;
+}
+
+int __attribute__ ((noinline,noclone)) get_input(void)
+{
+ return 1;
+}
+
+int __attribute__ ((always_inline))
+A::middleman_1 (int i)
+{
+ return this->foo (i);
+}
+
+int __attribute__ ((noinline))
+B::middleman_2 (int i)
+{
+ return this->middleman_1 (i);
+}
+
+B::B ()
+{
+}
+
+int main (int argc, char *argv[])
+{
+ class B b;
+ int i;
+
+ for (i = 0; i < get_input(); i++)
+ if (b.middleman_2 (get_input ()) != 3)
+ abort ();
+ return 0;
+}
+
+/* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*B::foo" "cp" } } */
+/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-g-1.C b/gcc/testsuite/g++.dg/ipa/devirt-g-1.C
new file mode 100644
index 00000000000..175f24efbbd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/devirt-g-1.C
@@ -0,0 +1,24 @@
+// { dg-do compile }
+// { dg-options "-O2 -fdump-ipa-cp -fdump-tree-optimized" }
+
+struct S { S(); virtual void xyzzy(); void otherstuff(); };
+struct R { int a; S s; R(); };
+S s;
+R r;
+
+void S::xyzzy ()
+{
+ otherstuff ();
+ otherstuff ();
+}
+
+static void __attribute__ ((noinline)) foo(S *p) { p->xyzzy(); }
+void bar() {foo(&s); }
+
+static void __attribute__ ((noinline)) foh(S *p) { p->xyzzy(); }
+void bah() {foh(&r.s); }
+
+/* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*S::xyzzy" "cp" } } */
+/* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "optimized"} } */
+/* { dg-final { cleanup-ipa-dump "cp" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/g++.dg/lookup/koenig13.C b/gcc/testsuite/g++.dg/lookup/koenig13.C
new file mode 100644
index 00000000000..625a181f621
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/koenig13.C
@@ -0,0 +1,16 @@
+// PR c++/42687
+// DR 705
+
+namespace N
+{
+ struct S { };
+ void f(const S &) { }
+}
+
+void f(const N::S &) { }
+
+int main()
+{
+ N::S v;
+ (f)(v); // no ambiguity: ADL is prevented with (), only ::f is considered
+}
diff --git a/gcc/testsuite/g++.dg/lto/20081109-1_0.C b/gcc/testsuite/g++.dg/lto/20081109-1_0.C
index 474ceba79c9..711533600ed 100644
--- a/gcc/testsuite/g++.dg/lto/20081109-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081109-1_0.C
@@ -1,4 +1,5 @@
// { dg-lto-do link }
+// { dg-require-effective-target fpic }
// { dg-lto-options {{-fPIC -flto -flto-partition=1to1}} }
// { dg-extra-ld-options "-fPIC -flto -flto-partition=1to1 -r -nostdlib -fno-exceptions" }
void func(); class Foo { };
diff --git a/gcc/testsuite/g++.dg/lto/20081118_0.C b/gcc/testsuite/g++.dg/lto/20081118_0.C
index f11c76b67f5..7be32b6e2a7 100644
--- a/gcc/testsuite/g++.dg/lto/20081118_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081118_0.C
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r -nostdlib}} } */
/* We used to ICE because of dangling pointers. */
diff --git a/gcc/testsuite/g++.dg/lto/20081119-1_0.C b/gcc/testsuite/g++.dg/lto/20081119-1_0.C
index a2d5bd320a8..ca1455e49e7 100644
--- a/gcc/testsuite/g++.dg/lto/20081119-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081119-1_0.C
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r -nostdlib}} } */
#include "20081119-1.h"
diff --git a/gcc/testsuite/g++.dg/lto/20081123_0.C b/gcc/testsuite/g++.dg/lto/20081123_0.C
index 8817be8f0a9..4cbc25338dd 100644
--- a/gcc/testsuite/g++.dg/lto/20081123_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081123_0.C
@@ -1,4 +1,5 @@
// { dg-lto-do link }
+// { dg-require-effective-target fpic }
// { dg-lto-options {{-flto -flto-partition=1to1 -r -nostdlib -fPIC}} }
int
diff --git a/gcc/testsuite/g++.dg/lto/20081204-1_0.C b/gcc/testsuite/g++.dg/lto/20081204-1_0.C
index 0d24878897f..b87006a6bad 100644
--- a/gcc/testsuite/g++.dg/lto/20081204-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081204-1_0.C
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-flto -flto-partition=1to1 -fPIC -r -nostdlib}} } */
/* Tests for the absence during linking of:
diff --git a/gcc/testsuite/g++.dg/lto/20081219_0.C b/gcc/testsuite/g++.dg/lto/20081219_0.C
index 432a60c45f2..8f2c2e07edd 100644
--- a/gcc/testsuite/g++.dg/lto/20081219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081219_0.C
@@ -1,4 +1,5 @@
// { dg-lto-do link }
+// { dg-require-effective-target fpic }
// { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -O2}} }
// { dg-extra-ld-options "-O2 -fPIC -flto -flto-partition=1to1 -r -nostdlib" }
diff --git a/gcc/testsuite/g++.dg/lto/20090302_0.C b/gcc/testsuite/g++.dg/lto/20090302_0.C
index 76de7baf0fa..d65d490d3e5 100644
--- a/gcc/testsuite/g++.dg/lto/20090302_0.C
+++ b/gcc/testsuite/g++.dg/lto/20090302_0.C
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r -nostdlib}} } */
struct Foo {
bool Mumble();
diff --git a/gcc/testsuite/g++.dg/lto/20090313_0.C b/gcc/testsuite/g++.dg/lto/20090313_0.C
index 70029e65105..cba9d054fcb 100644
--- a/gcc/testsuite/g++.dg/lto/20090313_0.C
+++ b/gcc/testsuite/g++.dg/lto/20090313_0.C
@@ -1,4 +1,5 @@
// { dg-lto-do link }
+// { dg-require-effective-target fpic }
// { dg-lto-options {{-flto -flto-partition=1to1 -fPIC}} }
// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib" }
diff --git a/gcc/testsuite/g++.dg/lto/20091002-1_0.C b/gcc/testsuite/g++.dg/lto/20091002-1_0.C
index 050211ac355..c63b079d77b 100644
--- a/gcc/testsuite/g++.dg/lto/20091002-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091002-1_0.C
@@ -1,4 +1,5 @@
// { dg-lto-do link }
+// { dg-require-effective-target fpic }
// { dg-lto-options {{-fPIC -flto}} }
// { dg-extra-ld-options "-fPIC -r -nostdlib" }
diff --git a/gcc/testsuite/g++.dg/lto/20091002-2_0.C b/gcc/testsuite/g++.dg/lto/20091002-2_0.C
index c150e977d14..bf936bf53a3 100644
--- a/gcc/testsuite/g++.dg/lto/20091002-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091002-2_0.C
@@ -1,4 +1,5 @@
// { dg-lto-do link }
+// { dg-require-effective-target fpic }
// { dg-lto-options {{-fPIC}} }
// { dg-extra-ld-options "-fPIC -r -nostdlib" }
diff --git a/gcc/testsuite/g++.dg/lto/20091002-3_0.C b/gcc/testsuite/g++.dg/lto/20091002-3_0.C
index 3c77f4b596f..4bff78b4937 100644
--- a/gcc/testsuite/g++.dg/lto/20091002-3_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091002-3_0.C
@@ -1,4 +1,5 @@
// { dg-lto-do link }
+// { dg-require-effective-target fpic }
// { dg-lto-options {{-fPIC}} }
// { dg-extra-ld-options "-fPIC -r -nostdlib" }
diff --git a/gcc/testsuite/g++.dg/lto/20091004-1_0.C b/gcc/testsuite/g++.dg/lto/20091004-1_0.C
index d65cf29fff1..649e35cb80d 100644
--- a/gcc/testsuite/g++.dg/lto/20091004-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091004-1_0.C
@@ -1,4 +1,5 @@
// { dg-lto-do link }
+// { dg-require-effective-target fpic }
// { dg-lto-options {{-fPIC -O -flto}} }
typedef double Real;
diff --git a/gcc/testsuite/g++.dg/lto/20091004-2_0.C b/gcc/testsuite/g++.dg/lto/20091004-2_0.C
index 321e50bc28d..cc1204e6f7e 100644
--- a/gcc/testsuite/g++.dg/lto/20091004-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091004-2_0.C
@@ -1,4 +1,5 @@
// { dg-lto-do link }
+// { dg-require-effective-target fpic }
// { dg-lto-options {{-fPIC -O -flto}} }
typedef double Real;
diff --git a/gcc/testsuite/g++.dg/lto/pr48207-2_0.C b/gcc/testsuite/g++.dg/lto/pr48207-2_0.C
new file mode 100644
index 00000000000..6801b85a862
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/pr48207-2_0.C
@@ -0,0 +1,10 @@
+// { dg-lto-do link }
+// { dg-lto-options { { -flto -g } } }
+
+namespace {
+ typedef struct {
+ int x;
+ } Foo;
+}
+
+int main () {}
diff --git a/gcc/testsuite/g++.dg/lto/pr48207-3_0.C b/gcc/testsuite/g++.dg/lto/pr48207-3_0.C
new file mode 100644
index 00000000000..ef02dda8400
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/pr48207-3_0.C
@@ -0,0 +1,12 @@
+// { dg-lto-do link }
+// { dg-lto-options { { -flto -g } } }
+
+void bar(void) {}
+
+void foo(void)
+{
+ typedef enum { ABC } DEF;
+ bar();
+}
+
+int main () {}
diff --git a/gcc/testsuite/g++.dg/lto/pr48207_0.C b/gcc/testsuite/g++.dg/lto/pr48207_0.C
new file mode 100644
index 00000000000..e66cb491b49
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/pr48207_0.C
@@ -0,0 +1,13 @@
+// { dg-lto-do link }
+// { dg-lto-options { { -flto -g } } }
+
+void bar(int) {}
+
+void foo(void)
+{
+ typedef enum { ABC } DEF;
+ DEF a;
+ bar((int)a);
+}
+
+int main() {}
diff --git a/gcc/testsuite/g++.dg/opt/devirt1.C b/gcc/testsuite/g++.dg/opt/devirt1.C
index 0a825c2a590..f9b4dc2fc31 100644
--- a/gcc/testsuite/g++.dg/opt/devirt1.C
+++ b/gcc/testsuite/g++.dg/opt/devirt1.C
@@ -1,6 +1,6 @@
// { dg-do compile }
-// { dg-options "-O" }
-// { dg-final { scan-assembler "xyzzy" { xfail *-*-* } } }
+// { dg-options "-O2" }
+// { dg-final { scan-assembler "xyzzy" } }
struct S { S(); virtual void xyzzy(); };
inline void foo(S *s) { s->xyzzy(); }
diff --git a/gcc/testsuite/g++.dg/opt/devirt2.C b/gcc/testsuite/g++.dg/opt/devirt2.C
new file mode 100644
index 00000000000..087dd179115
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/devirt2.C
@@ -0,0 +1,11 @@
+// { dg-do compile }
+// { dg-options "-O2" }
+// { dg-final { scan-assembler-times "xyzzy" 2 } }
+
+struct S { S(); virtual void xyzzy(); };
+struct R { int a; S s; R(); };
+S s;
+R r;
+inline void foo(S *p) { p->xyzzy(); }
+void bar() {foo(&s);}
+void bah() {foo(&r.s);}
diff --git a/gcc/testsuite/g++.dg/opt/pr23372.C b/gcc/testsuite/g++.dg/opt/pr23372.C
new file mode 100644
index 00000000000..9be4c9c568d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr23372.C
@@ -0,0 +1,15 @@
+// PR c++/23372
+// { dg-options -fdump-tree-gimple }
+
+// There shouldn't be an assignment to a temporary in the GIMPLE,
+// as that represents a redundant copy.
+// { dg-final { scan-tree-dump-not "=" gimple } }
+
+struct A {
+ int a[1000];
+ //A(A const &);
+};
+void f(A);
+void g(A *a) { f(*a); }
+
+// { dg-final { cleanup-tree-dump gimple } }
diff --git a/gcc/testsuite/g++.dg/opt/pr48272.C b/gcc/testsuite/g++.dg/opt/pr48272.C
new file mode 100644
index 00000000000..cb28a1bb4e3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr48272.C
@@ -0,0 +1,130 @@
+// { dg-do compile }
+// { dg-options "-O3 -ftracer -fsched-pressure -Wno-unused-parameter -Wno-return-type" }
+
+extern "C"
+{
+ namespace std
+ {
+ class exception
+ {
+ virtual const char *what () const throw ();
+ };
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default")))
+{
+ template < typename _Alloc > class allocator;
+ template < class _CharT > struct char_traits;
+ template < typename _CharT, typename _Traits =
+ char_traits < _CharT >, typename _Alloc =
+ allocator < _CharT > >class basic_string;
+ typedef basic_string < char >string;
+ template < typename _CharT, typename _Traits =
+ char_traits < _CharT > >class basic_ios;
+ typedef basic_ios < char >ios;
+}
+
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
+{
+ template < typename _Tp > class new_allocator
+ {
+ };
+}
+
+namespace std __attribute__ ((__visibility__ ("default")))
+{
+template < typename _Tp > class allocator:public __gnu_cxx::new_allocator <
+ _Tp >
+ {
+ };
+}
+
+typedef int _Atomic_word;
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
+{
+ static inline _Atomic_word
+ __attribute__ ((__unused__)) __exchange_and_add_dispatch (_Atomic_word *
+ __mem,
+ int __val)
+ {
+ }
+}
+
+namespace std __attribute__ ((__visibility__ ("default")))
+{
+ template < typename _CharT, typename _Traits,
+ typename _Alloc > class basic_string
+ {
+ typedef _Alloc allocator_type;
+ private:struct _Rep_base
+ {
+ _Atomic_word _M_refcount;
+ };
+ struct _Rep:_Rep_base
+ {
+ void _M_dispose (const _Alloc & __a)
+ {
+ if (__builtin_expect (this != &_S_empty_rep (), false))
+ {
+ if (__gnu_cxx::
+ __exchange_and_add_dispatch (&this->_M_refcount, -1) <= 0)
+ {
+ _M_destroy (__a);
+ }
+ }
+ }
+ void _M_destroy (const _Alloc &) throw ();
+ };
+ struct _Alloc_hider:_Alloc
+ {
+ _CharT *_M_p;
+ };
+ private:mutable _Alloc_hider _M_dataplus;
+ _CharT *_M_data () const
+ {
+ return _M_dataplus._M_p;
+ }
+ _Rep *_M_rep () const
+ {
+ return &((reinterpret_cast < _Rep * >(_M_data ()))[-1]);
+ }
+ static _Rep & _S_empty_rep ()
+ {
+ }
+ public: basic_string ():_M_dataplus (_S_empty_rep ()._M_refdata (),
+ _Alloc ())
+ {
+ }
+ basic_string (const _CharT * __s, const _Alloc & __a = _Alloc ());
+ ~basic_string ()
+ {
+ _M_rep ()->_M_dispose (this->get_allocator ());
+ }
+ allocator_type get_allocator () const
+ {
+ }
+ };
+ class ios_base
+ {
+ public:class failure:public exception
+ {
+ public:explicit failure (const string & __str) throw ();
+ };
+ };
+template < typename _CharT, typename _Traits > class basic_ios:public
+ ios_base
+ {
+ };
+ namespace iostreams
+ {
+ class zlib_error:public std::ios::failure
+ {
+ public:explicit zlib_error (int error);
+ private:int error_;
+ };
+ zlib_error::zlib_error (int error):std::ios::failure ("zlib error"),
+ error_ (error)
+ {
+ }
+ }
+}
diff --git a/gcc/testsuite/g++.dg/opt/pr48273.C b/gcc/testsuite/g++.dg/opt/pr48273.C
new file mode 100644
index 00000000000..4c5108bdd26
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr48273.C
@@ -0,0 +1,10 @@
+// { dg-do compile { target x86_64-*-* } }
+// { dg-options "-fschedule-insns2 -fsel-sched-pipelining -fselective-scheduling2 -funroll-all-loops -march=core2" }
+
+void bar ();
+
+void foo ()
+{
+ for (;;)
+ bar ();
+}
diff --git a/gcc/testsuite/g++.dg/opt/pr48302.C b/gcc/testsuite/g++.dg/opt/pr48302.C
new file mode 100644
index 00000000000..fd51ba412e1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr48302.C
@@ -0,0 +1,21 @@
+// { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } }
+// { dg-options "-O -fcrossjumping -fgcse -fschedule-insns2 -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops -fselective-scheduling2 --param lim-expensive=320 --param min-crossjump-insns=1" }
+
+struct S
+{
+ int i, j;
+ S *s;
+ ~S();
+};
+
+S *gs;
+
+void foo ()
+{
+restart:
+ for (S *s = gs; s; s = s->s)
+ if (s->j && s->j != (s->i & 1)) {
+ delete s;
+ goto restart;
+ }
+}
diff --git a/gcc/testsuite/g++.dg/opt/pr48549.C b/gcc/testsuite/g++.dg/opt/pr48549.C
new file mode 100644
index 00000000000..30799ee93f2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr48549.C
@@ -0,0 +1,63 @@
+// PR rtl-optimization/48549
+// { dg-do compile }
+// { dg-options "-fcompare-debug -O2" }
+
+void
+foo (void *from, void *to)
+{
+ long offset = reinterpret_cast <long>(to) - reinterpret_cast <long>(from);
+ if (offset != static_cast <int>(offset))
+ *(int *) 0xC0DE = 0;
+ reinterpret_cast <int *>(from)[1] = offset;
+}
+struct A
+{
+ A () : a () {}
+ A (void *x) : a (x) {}
+ void *bar () { return a; }
+ void *a;
+};
+struct C;
+struct D;
+struct E : public A
+{
+ C m1 (int);
+ D m2 ();
+ E () {}
+ E (A x) : A (x) {}
+};
+struct C : public E
+{
+ C () {}
+ C (void *x) : E (x) {}
+};
+struct D : public E
+{
+ D (void *x) : E (x) {}
+};
+C
+E::m1 (int x)
+{
+ return (reinterpret_cast <char *>(bar ()) + x);
+}
+D
+E::m2 ()
+{
+ return reinterpret_cast <char *>(bar ());
+}
+struct B
+{
+ E a;
+ unsigned b : 16;
+ unsigned c : 1;
+};
+void
+baz (B *x)
+{
+ for (unsigned i = 0; i < 64; i++)
+ {
+ D d = x[i].a.m2 ();
+ C c = x[i].a.m1 (x[i].c);
+ foo (d.bar (), c.bar ());
+ }
+}
diff --git a/gcc/testsuite/g++.dg/other/i386-9.C b/gcc/testsuite/g++.dg/other/i386-9.C
new file mode 100644
index 00000000000..79640579142
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/i386-9.C
@@ -0,0 +1,12 @@
+// PR target/48142
+// Testcase by Zdenek Sojka <zsojka@seznam.cz>
+
+// { dg-do run { target i?86-*-* x86_64-*-* } }
+// { dg-options "-Os -mpreferred-stack-boundary=5 -fstack-check -fno-omit-frame-pointer" }
+
+int main()
+{
+ try { throw 0; }
+ catch (...) {}
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/overload/volatile1.C b/gcc/testsuite/g++.dg/overload/volatile1.C
new file mode 100644
index 00000000000..baf467d8182
--- /dev/null
+++ b/gcc/testsuite/g++.dg/overload/volatile1.C
@@ -0,0 +1,14 @@
+// PR c++/48118
+// { dg-prune-output "note" }
+
+struct A { };
+
+void f (A); // { dg-error "argument 1" }
+void (*g)(A);
+
+int main()
+{
+ volatile A a;
+ f(a); // { dg-error "no match" }
+ g(a); // { dg-error "no match" }
+}
diff --git a/gcc/testsuite/g++.dg/parse/ambig6.C b/gcc/testsuite/g++.dg/parse/ambig6.C
new file mode 100644
index 00000000000..8f37feaea68
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/ambig6.C
@@ -0,0 +1,12 @@
+// PR c++/48046
+
+namespace N1 { typedef int T; } // { dg-error "" }
+namespace N2 { typedef float T; } // { dg-error "" }
+
+int main()
+{
+ using namespace N1;
+ using namespace N2;
+
+ static T t; // { dg-error "" }
+}
diff --git a/gcc/testsuite/g++.dg/parse/friend5.C b/gcc/testsuite/g++.dg/parse/friend5.C
index ec134c26ea9..bf1e6bfa6dd 100644
--- a/gcc/testsuite/g++.dg/parse/friend5.C
+++ b/gcc/testsuite/g++.dg/parse/friend5.C
@@ -4,5 +4,4 @@ extern "C" struct A
{
friend void foo(int) {} // { dg-error "declaration" }
friend void foo() {} // { dg-error "foo" "err" }
- // { dg-warning "already a friend" "warn" { target *-*-* } 6 }
};
diff --git a/gcc/testsuite/g++.dg/parse/memfnquals1.C b/gcc/testsuite/g++.dg/parse/memfnquals1.C
new file mode 100644
index 00000000000..ce8af7b7273
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/memfnquals1.C
@@ -0,0 +1,6 @@
+// PR c++/48166
+
+struct foo {
+ static void func ();
+};
+void foo::func () const {} // { dg-error "type qualifiers" }
diff --git a/gcc/testsuite/g++.dg/parse/pr34758.C b/gcc/testsuite/g++.dg/parse/pr34758.C
new file mode 100644
index 00000000000..d694853e68e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/pr34758.C
@@ -0,0 +1,28 @@
+// PR 34758 Bad diagnostic for circular dependency in constructor default argument
+// { dg-do compile }
+// { dg-options "" }
+struct A
+{
+ A (const A& = A()); // { dg-error "recursive evaluation of default argument" }
+};
+
+
+struct S {
+ S(const S& = f()); // { dg-error "default argument\[^\n\]*which is not yet defined" }
+ static const S& f(int i = 3);
+};
+
+struct J {
+ J(const J& = f(2)); // { dg-error "default argument.*which is not yet defined" }
+ static const J& f(int i = 3, int j = 4);
+};
+
+struct Z {
+ Z(const Z& = f(4));
+ static const Z& f(int i = 3);
+};
+
+struct X {
+ X(const X& = g());
+ static const X& g(void);
+};
diff --git a/gcc/testsuite/g++.dg/plugin/attribute_plugin.c b/gcc/testsuite/g++.dg/plugin/attribute_plugin.c
index e5b0566837d..8de5f44cbf8 100644
--- a/gcc/testsuite/g++.dg/plugin/attribute_plugin.c
+++ b/gcc/testsuite/g++.dg/plugin/attribute_plugin.c
@@ -26,7 +26,7 @@ handle_user_attribute (tree *node, tree name, tree args,
/* Attribute definition */
static struct attribute_spec user_attr =
- { "user", 1, 1, false, false, false, handle_user_attribute };
+ { "user", 1, 1, false, false, false, handle_user_attribute, false };
/* Plugin callback called during attribute registration */
diff --git a/gcc/testsuite/g++.dg/pr48484.C b/gcc/testsuite/g++.dg/pr48484.C
new file mode 100644
index 00000000000..3f17f39a0a1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr48484.C
@@ -0,0 +1,105 @@
+/* { dg-do compile } */
+/* { dg-options "-O -finline-functions -finline-small-functions -Wuninitialized" } */
+
+
+struct SQObjectPtr
+{
+ int _type;
+ SQObjectPtr operator = (long);
+};
+struct SQObjectPtrVec
+{
+ SQObjectPtr fff (unsigned);
+ SQObjectPtr *_vals;
+};
+
+struct SQInstruction
+{
+ int _arg1;
+ unsigned op;
+ unsigned _arg0;
+ unsigned _arg2;
+};
+struct SQVM
+{
+ struct CallInfo
+ {
+ SQInstruction *_ip;
+ };
+ bool
+ Execute (SQObjectPtr &, long, long, long, SQObjectPtr &, unsigned, int);
+ bool
+ FOREACH_OP
+ (SQObjectPtr
+ &, SQObjectPtr &, SQObjectPtr &, SQObjectPtr &, long, int, int &);
+ SQObjectPtrVec _stack;
+ CallInfo *ci;
+ long _nnativecalls;
+ bool ShouldSuspend ();
+};
+struct AutoDec
+{
+ AutoDec (long *);
+ ~AutoDec ();
+};
+bool
+ SQVM::FOREACH_OP
+ (SQObjectPtr
+ &
+ o1,
+ SQObjectPtr & o2, SQObjectPtr &, SQObjectPtr & o4, long, int, int &jump)
+{
+ long
+ nrefidx = 0;
+ switch (o1._type)
+ {
+ case 0x02000000:
+ o4 = nrefidx;
+ jump = 1;
+ return true;
+ case 0x00000080:
+ {
+ long
+ idx = 10;
+ o2 = idx;
+ jump = 0;
+ }
+ }
+}
+
+bool
+ SQVM::Execute
+ (SQObjectPtr &, long, long, long, SQObjectPtr &, unsigned, int)
+{
+ AutoDec
+ ad (&_nnativecalls);
+ for (;;)
+ {
+ if (ShouldSuspend ())
+ return true;
+ SQInstruction
+ _i_ = *ci->_ip;
+ switch (_i_.op)
+ {
+ case 0:
+ {
+ int
+ tojump;
+
+ FOREACH_OP
+ (_stack._vals
+ [_i_._arg0],
+ _stack._vals
+ [_i_._arg2],
+ _stack._vals
+ [_i_._arg2],
+ _stack._vals[_i_._arg2], _i_._arg2, _i_._arg1, tojump);
+
+ ci += tojump; /* { dg-warning "uninitialized" "warning" } */
+ }
+ case 1:
+ _stack.fff (_i_._arg1);
+ }
+ }
+
+}
diff --git a/gcc/testsuite/g++.dg/pr48772.C b/gcc/testsuite/g++.dg/pr48772.C
new file mode 100644
index 00000000000..39c1094e810
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr48772.C
@@ -0,0 +1,35 @@
+// { dg-do compile }
+// { dg-options "-O -fnon-call-exceptions -fno-tree-ccp -fno-tree-dce" }
+
+extern "C" void abort ();
+
+struct A
+{
+ void foo ()
+ {
+ this->bar ();
+ }
+ virtual void bar ()
+ {
+ abort ();
+ }
+ ~A ()
+ {
+ }
+};
+
+struct B:A
+{
+ virtual void bar ()
+ {
+ }
+};
+
+int
+main ()
+{
+ B b;
+ b.foo ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/g++.dg/prof-robust-1.C b/gcc/testsuite/g++.dg/prof-robust-1.C
new file mode 100644
index 00000000000..a5d8cb3c470
--- /dev/null
+++ b/gcc/testsuite/g++.dg/prof-robust-1.C
@@ -0,0 +1,24 @@
+/* { dg-options "-O2 -fno-weak" } */
+
+#include <stdio.h>
+
+namespace {
+ namespace {
+
+ class MyClass {
+ public:
+ void foo() const;
+ ~MyClass() { foo(); }
+ };
+
+ void MyClass::foo() const { printf("Goodbye World\n"); }
+
+ }
+
+ static MyClass variable;
+
+}
+
+int main() {
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/template/const4.C b/gcc/testsuite/g++.dg/template/const4.C
new file mode 100644
index 00000000000..6552ec6e968
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/const4.C
@@ -0,0 +1,9 @@
+// PR c++/48657
+
+template<unsigned> struct A { typedef int T; };
+
+template<unsigned> void f()
+{
+ const unsigned D = 4;
+ A<D>::T t;
+}
diff --git a/gcc/testsuite/g++.dg/template/crash7.C b/gcc/testsuite/g++.dg/template/crash7.C
index ae07d91e739..7fda9a9ba19 100644
--- a/gcc/testsuite/g++.dg/template/crash7.C
+++ b/gcc/testsuite/g++.dg/template/crash7.C
@@ -5,11 +5,10 @@
// PR c++/10108: ICE in tsubst_decl for error due to non-existence
// nested type.
-template <typename> struct A
-{ // { not-dg-error "candidates" }
+template <typename> struct A // { dg-message "A.void.::A.const A" }
+{
template <typename> A(typename A::X) {} // { dg-error "no type" }
};
-A<void> a; // { not-dg-error "instantiated|no match" }
-// We currently don't give the "no match" error because we don't add the
-// invalid constructor template to TYPE_METHODS.
+A<void> a; // { dg-error "instantiated|no match" }
+// { dg-prune-output "note" }
diff --git a/gcc/testsuite/g++.dg/template/dependent-expr7.C b/gcc/testsuite/g++.dg/template/dependent-expr7.C
new file mode 100644
index 00000000000..b2468203590
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/dependent-expr7.C
@@ -0,0 +1,22 @@
+// Origin PR c++/48574
+// { dg-do compile }
+
+struct A
+{
+ virtual void foo();
+};
+
+template <typename T>
+void
+bar(T x)
+{
+ A &b = *x;
+ b.foo ();
+}
+
+void
+foo()
+{
+ A a;
+ bar(&a);
+}
diff --git a/gcc/testsuite/g++.dg/template/dependent-expr8.C b/gcc/testsuite/g++.dg/template/dependent-expr8.C
new file mode 100644
index 00000000000..20014d6e70b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/dependent-expr8.C
@@ -0,0 +1,25 @@
+// Origin PR c++/48574
+// { dg-options "-std=c++0x" }
+// { dg-do compile }
+
+struct A
+{
+ virtual int foo();
+};
+
+void baz (int);
+
+template <typename T>
+void
+bar(T x)
+{
+ A &b = *x;
+ baz (b.foo ());
+}
+
+void
+foo()
+{
+ A a;
+ bar(&a);
+}
diff --git a/gcc/testsuite/g++.dg/template/fn-ptr1.C b/gcc/testsuite/g++.dg/template/fn-ptr1.C
new file mode 100644
index 00000000000..c0e7d988524
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/fn-ptr1.C
@@ -0,0 +1,5 @@
+// PR c++/48162
+
+struct A { };
+A (*f)();
+template <class T> void g() { f(); }
diff --git a/gcc/testsuite/g++.dg/template/incomplete6.C b/gcc/testsuite/g++.dg/template/incomplete6.C
new file mode 100644
index 00000000000..7138b6a3b41
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/incomplete6.C
@@ -0,0 +1,22 @@
+// PR c++/48115
+
+template<typename> struct templ { };
+
+template<typename T> T declval();
+
+typedef int (*F2)(...);
+
+template<int> struct Int { };
+
+template<typename F, typename T>
+struct S
+{
+ template<typename A>
+ Int<sizeof( declval<F>()(T()) )>
+ f(A);
+};
+
+int main()
+{
+ S<F2, templ<int> >().f(0);
+}
diff --git a/gcc/testsuite/g++.dg/template/inherit7.C b/gcc/testsuite/g++.dg/template/inherit7.C
new file mode 100644
index 00000000000..67afbca6bf0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/inherit7.C
@@ -0,0 +1,21 @@
+// Origin: PR c++/48656
+// { dg-options "-std=c++0x" }
+// { dg-do compile }
+
+struct A {
+ int f();
+ int f(int);
+};
+
+template <typename> struct B : A
+{
+};
+
+template <typename T> struct C : B<T>
+{
+ void
+ g()
+ {
+ A::f();
+ }
+};
diff --git a/gcc/testsuite/g++.dg/template/member9.C b/gcc/testsuite/g++.dg/template/member9.C
new file mode 100644
index 00000000000..f15272db7ab
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/member9.C
@@ -0,0 +1,21 @@
+// Origin PR c++/48838
+// { dg-do compile }
+
+class DUChainItemSystem
+{
+public:
+
+ template<class T>
+ void registerTypeClass();
+
+ static DUChainItemSystem& self();
+};
+
+template<class T>
+struct DUChainItemRegistrator
+{
+ DUChainItemRegistrator()
+ {
+ DUChainItemSystem::self().registerTypeClass<T>();
+ }
+};
diff --git a/gcc/testsuite/g++.dg/template/nontype23.C b/gcc/testsuite/g++.dg/template/nontype23.C
new file mode 100644
index 00000000000..dfda4fe2e59
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/nontype23.C
@@ -0,0 +1,9 @@
+// PR c++/48936
+
+template <bool C> int foo (void);
+template <class T> struct S
+{
+ static const unsigned int a = sizeof (T);
+ enum { c = sizeof (foo <(a == 0)> ()) };
+};
+S<int> x;
diff --git a/gcc/testsuite/g++.dg/template/operator11.C b/gcc/testsuite/g++.dg/template/operator11.C
new file mode 100644
index 00000000000..8d6b77ab454
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/operator11.C
@@ -0,0 +1,25 @@
+// PR c++/48594
+// Test for uses of (X->*Y)() that don't actually involve a
+// pointer to member function.
+
+struct A { } a;
+struct B { } b;
+struct C * cp;
+
+struct Func { void operator()(); };
+Func operator->* (A, int);
+
+typedef void (*pfn)();
+pfn operator->* (B, int);
+
+pfn C::*cpfn;
+Func C::*cfunc;
+
+template <class T>
+void f()
+{
+ (a->*1)();
+ (b->*1)();
+ (cp->*cpfn)();
+ (cp->*cfunc)();
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
new file mode 100644
index 00000000000..8098991ace0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -0,0 +1,20 @@
+// { dg-do compile }
+#include <string>
+
+void a() throw (int);
+void b(std::string const &);
+
+void c(std::string *e)
+{
+ b("");
+
+ try {
+ a();
+ } catch (...) {
+ *e = "";
+ }
+}
+
+void d() {
+ c(0);
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr48165.C b/gcc/testsuite/g++.dg/torture/pr48165.C
new file mode 100644
index 00000000000..a42893f604d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr48165.C
@@ -0,0 +1,38 @@
+/* { dg-do compile } */
+
+typedef __SIZE_TYPE__ size_t;
+
+extern "C" {
+ extern __inline __attribute__ ((__always_inline__))
+ __attribute__ ((__gnu_inline__, __artificial__)) void *
+ memcpy (void *__restrict __dest, __const void *__restrict __src,
+ size_t __len) throw ()
+ {
+ return __builtin___memcpy_chk (__dest, __src, __len,
+ __builtin_object_size (__dest, 0));
+ }
+}
+
+typedef char TCODE[20];
+typedef TCODE TCODE_ARRAY[5];
+typedef struct PARAM
+{
+ TCODE_ARRAY tcode;
+} PARAM;
+
+static void foo (void* p)
+{
+ char buffer[4+sizeof(PARAM)];
+ PARAM *param = (PARAM *)(buffer + 4);
+ int i;
+
+ for (i=0; i < 5; i++)
+ {
+ memcpy( param->tcode[i], p, 20 );
+ }
+}
+
+void bar (void* p)
+{
+ foo (p);
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr48271.C b/gcc/testsuite/g++.dg/torture/pr48271.C
new file mode 100644
index 00000000000..5b60ccd768c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr48271.C
@@ -0,0 +1,119 @@
+// { dg-do compile }
+// { dg-options "-ftree-vrp -fno-guess-branch-probability -fnon-call-exceptions" }
+
+void *xalloc ();
+void xfree (void *);
+void error ();
+
+static inline void *
+MallocT ()
+{
+ void *p = xalloc ();
+ if (!p)
+ error ();
+ return p;
+}
+
+
+struct ByteBlob
+{
+ int *header;
+
+ ByteBlob();
+
+ ~ByteBlob ()
+ {
+ Free ();
+ }
+
+ int RawFree (int * p)
+ {
+ if (!p)
+ error ();
+ xfree (p);
+ }
+
+ int *LengthRef ();
+
+ void Free ()
+ {
+ if (*header)
+ RawFree (header);
+ }
+
+ int Append (int num_ints)
+ {
+ if (*header)
+ MallocT ();
+ *LengthRef () += num_ints;
+ }
+};
+
+struct CBlobT:ByteBlob
+{
+ ~CBlobT ()
+ {
+ Free ();
+ }
+};
+
+template < class T > struct FixedSizeArray
+{
+ int HeaderSize;
+ T *data;
+ FixedSizeArray ();
+ int RefCnt ()
+ {
+ return *(int *) MallocT ();
+ }
+ ~FixedSizeArray ()
+ {
+ if (RefCnt ())
+ for (T * pItem = data + Length (); pItem != data; pItem--)
+ T ();
+ }
+ int Length ();
+};
+
+class SmallArray
+{
+ typedef FixedSizeArray < int > SubArray;
+ typedef FixedSizeArray < SubArray > SuperArray;
+ SuperArray data;
+};
+
+struct CHashTableT
+{
+ int *m_slots;
+ ~CHashTableT ()
+ {
+ delete m_slots;
+ }
+};
+
+struct CYapfBaseT
+{
+ int *PfGetSettings ();
+ SmallArray m_arr;
+ CHashTableT m_closed;
+ CYapfBaseT ()
+ {
+ MallocT ();
+ }
+};
+
+struct CYapfCostRailT:CYapfBaseT
+{
+ CBlobT m_sig_look_ahead_costs;
+ CYapfCostRailT ()
+ {
+ m_sig_look_ahead_costs.Append (*Yapf ()->PfGetSettings ());
+ Yapf ()->PfGetSettings ();
+ }
+ CYapfBaseT *Yapf ();
+};
+
+void stCheckReverseTrain ()
+{
+ CYapfCostRailT pf1;
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr48661.C b/gcc/testsuite/g++.dg/torture/pr48661.C
new file mode 100644
index 00000000000..8de2142f737
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr48661.C
@@ -0,0 +1,77 @@
+// PR middle-end/48661
+// { dg-do run }
+
+extern "C" void abort ();
+
+__attribute__((noinline))
+double
+foo (double x, double y)
+{
+ asm volatile ("" : : : "memory");
+ return x + y;
+}
+
+__attribute__((noinline, noclone))
+void
+bar (int x)
+{
+ if (x != 123)
+ abort ();
+}
+
+struct A
+{
+ double a1, a2;
+};
+
+struct B
+{
+ virtual int m () const = 0 ;
+};
+
+struct C
+{
+ virtual ~C () {}
+};
+
+struct D : virtual public B, public C
+{
+ explicit D (const A &x) : d(123) { foo (x.a2, x.a1); }
+ int m () const { return d; }
+ int d;
+};
+
+struct E
+{
+ E () : d(0) {}
+ virtual void n (const B &x) { d = x.m (); x.m (); x.m (); }
+ int d;
+};
+
+void
+test ()
+{
+ A a;
+ a.a1 = 0;
+ a.a2 = 1;
+ E p;
+ D q (a);
+ const B &b = q;
+ bar (b.m ());
+ p.n (b);
+ bar (p.d);
+}
+
+void
+baz ()
+{
+ A a;
+ D p2 (a);
+}
+
+int
+main ()
+{
+ test ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr48695.C b/gcc/testsuite/g++.dg/torture/pr48695.C
new file mode 100644
index 00000000000..44e6c771dba
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr48695.C
@@ -0,0 +1,38 @@
+// { dg-do run }
+
+typedef __SIZE_TYPE__ size_t;
+
+inline void *operator new (size_t, void *__p) throw() { return __p; }
+
+struct _Vector_impl
+{
+ int *_M_start;
+ int *_M_finish;
+ _Vector_impl () :_M_start (0), _M_finish (0) {}
+};
+
+struct vector
+{
+ _Vector_impl _M_impl;
+ int *_M_allocate (size_t __n)
+ {
+ return __n != 0 ? new int[__n] : 0;
+ }
+ void push_back ()
+ {
+ new (this->_M_impl._M_finish) int ();
+ this->_M_impl._M_finish =
+ this->_M_allocate (this->_M_impl._M_finish - this->_M_impl._M_start) + 1;
+ }
+};
+
+int
+main ()
+{
+ for (int i = 0; i <= 1; i++)
+ for (int j = 0; j <= 1; j++)
+ {
+ vector a[2];
+ a[i].push_back ();
+ }
+}
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr13954.C b/gcc/testsuite/g++.dg/tree-ssa/pr13954.C
new file mode 100644
index 00000000000..169497a9c47
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr13954.C
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -fdump-tree-optimized" } */
+
+void link_error (void);
+
+class base
+{
+};
+
+class teststruct: public base
+{
+public:
+ double d;
+ char f1;
+};
+
+void
+copystruct1 (teststruct param)
+{
+ teststruct local;
+ param.f1 = 0;
+ local = param;
+ if (local.f1 != 0)
+ link_error ();
+}
+
+/* There should be no reference to link_error. */
+/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr33604.C b/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
index 7e820d3ef16..039b3be02a4 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
@@ -42,7 +42,8 @@ int main(int argc, char *argv[])
yielding
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. */
+ referencing two virtual operands at abort () and the return
+ after optimization. */
-/* { dg-final { scan-tree-dump-times ".MEM_\[0-9\]*\\\(D\\\)" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times ".MEM_\[0-9\]*\\\(D\\\)" 2 "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr41186.C b/gcc/testsuite/g++.dg/tree-ssa/pr41186.C
index 91f21a8c643..8739ae9e6d5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr41186.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr41186.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
struct Foo {
Foo() {};
@@ -29,7 +29,7 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump "Replaced b1.b with 1" "fre" } } */
-/* { dg-final { scan-tree-dump "Replaced b1.i with 0" "fre" { xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump "Replaced b1.f with 1" "fre" { xfail *-*-* } } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced b1.b with 1" "fre1" } } */
+/* { dg-final { scan-tree-dump "Replaced b1.i with 0" "fre1" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump "Replaced b1.f with 1" "fre1" { xfail *-*-* } } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr8781.C b/gcc/testsuite/g++.dg/tree-ssa/pr8781.C
index a9d279af74e..fc5f44394d9 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr8781.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr8781.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
int f();
@@ -24,5 +24,5 @@ int x()
/* We should optimize this to a direct call. */
-/* { dg-final { scan-tree-dump "Replacing call target with f" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replacing call target with f" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/g++.dg/warn/Wconversion-null-2.C b/gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
index c3050f6122b..dd498c199d9 100644
--- a/gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
@@ -44,6 +44,6 @@ int main()
k(NULL); // { dg-warning "" } converting NULL to int
g(NULL); // { dg-warning "" } converting NULL to int
h<NULL>(); // No warning: NULL bound to integer template parameter
- l(NULL); // { dg-warning "" } converting NULL to int
+ l(NULL); // No warning: NULL is used to implicitly instantiate the template
NULL && NULL; // No warning: converting NULL to bool is OK
}
diff --git a/gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C b/gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C
new file mode 100644
index 00000000000..511f091f2cf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C
@@ -0,0 +1,15 @@
+// { dg-do compile }
+// { dg-options "-Wconversion-null" }
+
+#include <stddef.h>
+
+void func1(int* ptr);
+
+void func2() {
+ int* t = false; // { dg-warning "converting 'false' to pointer" }
+ int* p;
+ p = false; // { dg-warning "converting 'false' to pointer" }
+ int* r = sizeof(char) / 2;
+ func1(false); // { dg-warning "converting 'false' to pointer" }
+ int i = NULL; // { dg-warning "converting to non-pointer" }
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C b/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
new file mode 100644
index 00000000000..92a87d1e76c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
@@ -0,0 +1,45 @@
+// { dg-do compile }
+// { dg-options "-Wconversion-null" }
+
+#include <stddef.h>
+
+class Foo {
+ public:
+ template <typename T1, typename T2>
+ static void Compare(const T1& expected, const T2& actual) { }
+
+ template <typename T1, typename T2>
+ static void Compare(const T1& expected, T2* actual) { }
+
+};
+
+template<typename T1>
+class Foo2 {
+ public:
+ Foo2(int x);
+ template<typename T2> void Bar(T2 y);
+};
+
+template<typename T3> void func(T3 x) { }
+
+typedef Foo2<int> MyFooType;
+
+void func1(long int a) {
+ MyFooType *foo2 = new MyFooType(NULL); // { dg-warning "passing NULL to" }
+ foo2->Bar(a);
+ func(NULL);
+ func<int>(NULL); // { dg-warning "passing NULL to" }
+ func<int *>(NULL);
+}
+
+int x = 1;
+
+main()
+{
+ int *p = &x;
+
+ Foo::Compare(0, *p);
+ Foo::Compare<long int, int>(NULL, p); // { dg-warning "passing NULL to" }
+ Foo::Compare(NULL, p);
+ func1(NULL); // { dg-warning "passing NULL to" }
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/conversion11.C b/gcc/testsuite/g++.old-deja/g++.jason/conversion11.C
index 607cf9cc841..6621a27b6a2 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/conversion11.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/conversion11.C
@@ -21,7 +21,7 @@ void DoSomething(Ding A);
void foo(Something* pX)
{
- DoSomething(1); // { dg-error "conversion" }
+ DoSomething(1); // { dg-error "could not convert" }
pX->DoSomething(1); // { dg-error "no matching" }
// { dg-message "candidate" "candidate note" { target *-*-* } 25 }
(*pX).DoSomething(1); // { dg-error "no matching" }
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg11.C b/gcc/testsuite/g++.old-deja/g++.law/arg11.C
index fc590c4387a..fc9357964f4 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg11.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg11.C
@@ -16,7 +16,7 @@ void function(Ack);
int
foo(S *o)
{ // Neither call has a usable constructor for conversions of char[5] to Ack.
- function("adsf");// { dg-error "conversion" }
+ function("adsf");// { dg-error "could not convert" }
o->method("adsf");// { dg-error "no matching" }
// { dg-message "candidate" "candidate note" { target *-*-* } 20 }
return 0;
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/overload1.C b/gcc/testsuite/g++.old-deja/g++.oliva/overload1.C
index 91b3b02a439..75c8723c70f 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/overload1.C
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/overload1.C
@@ -6,7 +6,7 @@
// Based on bug report by JDonner <jdonner@schedsys.com>
struct foo {
- static int bar(); // { dg-error "candidate" }
+ static int bar(); // { dg-error "foo::bar" }
void bar(int); // { dg-error "foo::bar" }
};
diff --git a/gcc/testsuite/g++.old-deja/g++.other/base1.C b/gcc/testsuite/g++.old-deja/g++.other/base1.C
index 3c9ac264e1d..b38a6546d03 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/base1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/base1.C
@@ -3,8 +3,7 @@
// Copyright (C) 2000 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 25 Nov 2000 <nathan@codesourcery.com>
-// We lost information about which base wasn't an aggregate type, plus we
-// allowed cv qualifed bases via typedefs.
+// We lost information about which base wasn't an aggregate type.
typedef int I;
typedef int cI;
@@ -16,5 +15,5 @@ typedef A pA;
struct B : I {}; // { dg-error "" } not an aggregate
struct C : cI {}; // { dg-error "" } not an aggregate
-struct D : cA {}; // { dg-error "" } cv qualified
+struct D : cA {}; // cv-qualified is fine per DR 484
struct E : pA {};
diff --git a/gcc/testsuite/g++.old-deja/g++.other/null3.C b/gcc/testsuite/g++.old-deja/g++.other/null3.C
index 6228caabd37..01071f9297b 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/null3.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/null3.C
@@ -2,5 +2,5 @@
void x()
{
- int* p = 1==0;
+ int* p = 1==0; // { dg-warning "converting 'false' to pointer" }
}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20000804-1.c b/gcc/testsuite/gcc.c-torture/compile/20000804-1.c
index 0a63a32dfb7..6916951bb72 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20000804-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20000804-1.c
@@ -1,10 +1,10 @@
-/* This does not work on m68hc11 or h8300 due to the use of an asm
+/* This does not work on h8300 due to the use of an asm
statement to force a 'long long' (64-bits) to go in a register. */
/* { dg-do assemble } */
/* { dg-skip-if "" { { i?86-*-* x86_64-*-* } && { ilp32 && { ! nonpic } } } { "*" } { "" } } */
/* { dg-skip-if "No 64-bit registers" { m32c-*-* } { "*" } { "" } } */
/* { dg-skip-if "Not enough 64-bit registers" { pdp11-*-* } { "-O0" } { "" } } */
-/* { dg-xfail-if "" { m6811-*-* m6812-*-* h8300-*-* } { "*" } { "" } } */
+/* { dg-xfail-if "" { h8300-*-* } { "*" } { "" } } */
/* Copyright (C) 2000, 2003 Free Software Foundation */
__complex__ long long f ()
diff --git a/gcc/testsuite/gcc.c-torture/compile/20001205-1.c b/gcc/testsuite/gcc.c-torture/compile/20001205-1.c
index bab7b69ca2b..d25d2f0f102 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20001205-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20001205-1.c
@@ -1,7 +1,4 @@
-/* This does not work on m68hc11 due to the asm statement which forces
- two 'long' (32-bits) variables to go in registers. */
/* { dg-do assemble } */
-/* { dg-xfail-if "" { m6811-*-* m6812-*-* } { "*" } { "" } } */
static inline unsigned long rdfpcr(void)
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
index 8c93baccda9..127c4daec45 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
@@ -1,7 +1,4 @@
-/* This does not assemble on m68hc11 because the function is larger
- than 64K. */
/* { dg-do assemble } */
-/* { dg-xfail-if "function larger than 64K" { m6811-*-* } { "*" } { "" } } */
/* { dg-skip-if "too much code for avr" { "avr-*-*" } { "*" } { "" } } */
/* { dg-skip-if "too much code for pdp11" { "pdp11-*-*" } { "*" } { "" } } */
/* { dg-xfail-if "jump beyond 128K not supported" { xtensa*-*-* } { "-O0" } { "" } } */
diff --git a/gcc/testsuite/gcc.c-torture/compile/20010518-2.c b/gcc/testsuite/gcc.c-torture/compile/20010518-2.c
index f35d7c6b96d..9ff50474223 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20010518-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20010518-2.c
@@ -1,10 +1,5 @@
/* { dg-do compile } */
-/* This test fails on HC11/HC12 when it is compiled without -mshort because
- the array is too large (INT_MAX/2 > 64K). Force to use 16-bit ints
- for it. */
-/* { dg-options "-w -mshort" { target m6811-*-* m6812-*-* } } */
-
/* Large static storage. */
#include <limits.h>
diff --git a/gcc/testsuite/gcc.c-torture/compile/20011106-2.c b/gcc/testsuite/gcc.c-torture/compile/20011106-2.c
index 358f9d2ed49..7f80554faae 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20011106-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20011106-2.c
@@ -1,4 +1,4 @@
-/* Test the the type of a component of a conditional expression between
+/* Test the type of a component of a conditional expression between
two structures is correct. */
/* Origin: Joseph Myers <jsm28@cam.ac.uk>. */
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020312-1.c b/gcc/testsuite/gcc.c-torture/compile/20020312-1.c
index bb950ff31fa..bac5c6a53c1 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20020312-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20020312-1.c
@@ -1,7 +1,4 @@
-/* This does not compile on HC11/HC12 due to the asm which requires
- two 32-bit registers. */
/* { dg-do assemble } */
-/* { dg-xfail-if "" { m6811-*-* m6812-*-* } { "*" } { "" } } */
/* { dg-skip-if "" { pdp11-*-* } { "-O0" } { "" } } */
/* PR optimization/5892 */
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020604-1.c b/gcc/testsuite/gcc.c-torture/compile/20020604-1.c
index 8b958040e3c..9486583e973 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20020604-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20020604-1.c
@@ -1,5 +1,4 @@
/* { dg-do assemble } */
-/* { dg-xfail-if "The array is too big" { "m6811-*-* m6812-*-*" } { "*" } { "" } } */
/* { dg-skip-if "The array is too big" { "avr-*-*" "pdp11-*-*" } { "*" } { "" } } */
/* { dg-xfail-if "The array too big" { "h8300-*-*" } { "-mno-h" "-mn" } { "" } } */
/* { dg-skip-if "" { m32c-*-* } { } { } } */
diff --git a/gcc/testsuite/gcc.c-torture/compile/20110401-1.c b/gcc/testsuite/gcc.c-torture/compile/20110401-1.c
new file mode 100644
index 00000000000..ee83a413674
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20110401-1.c
@@ -0,0 +1,22 @@
+void asn1_length_der (unsigned long int len, unsigned char *ans, int *ans_len)
+{
+ int k;
+ unsigned char temp[4];
+ if (len < 128) {
+ if (ans != ((void *) 0))
+ ans[0] = (unsigned char) len;
+ *ans_len = 1;
+ } else {
+ k = 0;
+ while (len) {
+ temp[k++] = len & 0xFF;
+ len = len >> 8;
+ }
+ *ans_len = k + 1;
+ if (ans != ((void *) 0)) {
+ ans[0] = ((unsigned char) k & 0x7F) + 128;
+ while (k--)
+ ans[*ans_len - 1 - k] = temp[k];
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/920501-12.c b/gcc/testsuite/gcc.c-torture/compile/920501-12.c
index 7eac9724677..383c7182df2 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920501-12.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920501-12.c
@@ -1,7 +1,4 @@
-/* This test fails on HC11/HC12 when it is compiled without -mshort because
- the stack arrays are too large. Force to use 16-bit ints for it. */
/* { dg-do assemble } */
-/* { dg-xfail-if "" { m6811-*-* m6812-*-* } { "*" } { "-mshort" } } */
x(x){ return 3 + x;}
a(x){int y[994]; return 3 + x;}
diff --git a/gcc/testsuite/gcc.c-torture/compile/920501-4.c b/gcc/testsuite/gcc.c-torture/compile/920501-4.c
index 3481deefedb..48314cc7898 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920501-4.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920501-4.c
@@ -1,7 +1,4 @@
-/* This test fails on HC11/HC12 when it is compiled without -mshort because
- the 'r0' array is too large. Force to use 16-bit ints for it. */
/* { dg-do assemble } */
-/* { dg-xfail-if "" { m6811-*-* m6812-*-* } { "*" } { "-mshort" } } */
foo ()
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/920520-1.c b/gcc/testsuite/gcc.c-torture/compile/920520-1.c
index e090b32d15b..7dce4118519 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920520-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920520-1.c
@@ -1,5 +1,4 @@
/* { dg-do compile } */
-/* { dg-xfail-if "" { m6811-*-* m6812-*-* } { "*" } { "" } } */
/* { dg-skip-if "" { pdp11-*-* } { "*" } { "" } } */
f(){asm("%0"::"r"(1.5F));}g(){asm("%0"::"r"(1.5));}
diff --git a/gcc/testsuite/gcc.c-torture/compile/980506-1.c b/gcc/testsuite/gcc.c-torture/compile/980506-1.c
index 5c22e7e508f..0f46e17e5cb 100644
--- a/gcc/testsuite/gcc.c-torture/compile/980506-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/980506-1.c
@@ -1,7 +1,6 @@
/* The arrays are too large for the xstormy16 - won't fit in 16 bits. */
/* { dg-do assemble } */
/* { dg-require-effective-target size32plus } */
-/* { dg-xfail-if "The array too big" { m6811-*-* m6812-*-* } { "*" } { "" } } /*
/* { dg-skip-if "Array too big" { "avr-*-*" } { "*" } { "" } } */
/* { dg-xfail-if "The array too big" { h8300-*-* } { "-mno-h" "-mn" } { "" } } */
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr43191.c b/gcc/testsuite/gcc.c-torture/compile/pr43191.c
index f4ec0b4770d..42a429a2672 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr43191.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr43191.c
@@ -1,4 +1,5 @@
-/* { dg-skip-if "Ints are 16 bits" { "pdp11-*-*" } { "*" } { "" } } */
+/* { dg-require-effective-target int32plus } */
+
struct S0
{
};
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr44686.c b/gcc/testsuite/gcc.c-torture/compile/pr44686.c
index eacd83d3130..62c57d75e6f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr44686.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr44686.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -fipa-pta -fprofile-generate" } */
+/* { dg-options "-fipa-pta -fprofile-generate" } */
void *
memcpy (void *a, const void *b, __SIZE_TYPE__ len)
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48136.c b/gcc/testsuite/gcc.c-torture/compile/pr48136.c
new file mode 100644
index 00000000000..77581ac7285
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48136.c
@@ -0,0 +1,7 @@
+/* PR middle-end/48136 */
+
+int
+foo (int x, int y)
+{
+ return (x ^ 5U) == (y ^ 1);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48161.c b/gcc/testsuite/gcc.c-torture/compile/pr48161.c
new file mode 100644
index 00000000000..c454efcd073
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48161.c
@@ -0,0 +1,24 @@
+/* PR bootstrap/48161 */
+
+struct T { int u; };
+struct G { int l; int t; int r; };
+struct V { struct G v[10]; };
+struct { struct V b; } *h;
+void bar (void);
+
+struct G *
+baz (struct V *x, unsigned y)
+{
+ return &x->v[y];
+}
+
+int
+foo (struct T *x, struct T *y)
+{
+ if ((baz (&h->b, y->u)->t ? baz (&h->b, y->u)->t : 0)
+ - baz (h ? &h->b : 0, x->u)->r
+ - (baz (h ? &h->b : 0, x->u)->t > 0 ? 5 : 0))
+ return 1;
+ bar ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48305.c b/gcc/testsuite/gcc.c-torture/compile/pr48305.c
new file mode 100644
index 00000000000..aaec71c52a3
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48305.c
@@ -0,0 +1,7 @@
+/* PR c/48305 */
+
+int
+foo (int x)
+{
+ return (x ^ 1) == (x ^ 1U);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48335-1.c b/gcc/testsuite/gcc.c-torture/compile/pr48335-1.c
new file mode 100644
index 00000000000..6f813382c70
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48335-1.c
@@ -0,0 +1,41 @@
+/* PR middle-end/48335 */
+
+struct S { float d; };
+
+void bar (struct S);
+
+void
+f0 (int x)
+{
+ struct S s = {.d = 0.0f };
+ ((char *) &s.d)[0] = x;
+ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f1 (int x)
+{
+ struct S s = {.d = 0.0f };
+ ((char *) &s.d)[1] = x;
+ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f2 (int x)
+{
+ struct S s = {.d = 0.0f };
+ ((char *) &s.d)[2] = x;
+ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f3 (int x)
+{
+ struct S s = {.d = 0.0f };
+ ((char *) &s.d)[3] = x;
+ s.d *= 7.0;
+ bar (s);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48381.c b/gcc/testsuite/gcc.c-torture/compile/pr48381.c
new file mode 100644
index 00000000000..eeb9c847f33
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48381.c
@@ -0,0 +1,25 @@
+/* PR rtl-optimization/48381 */
+
+struct S { int s; } t;
+
+int baz (void);
+void fn (int, unsigned, int, unsigned, char);
+
+static char
+foo (signed x, unsigned y)
+{
+ return x < 0 || y >= 32 ? 1 : x >> y;
+}
+
+long long
+bar (long long x, long y)
+{
+ return y < 0 ? 1LL : x - y;
+}
+
+void
+test (int x, unsigned y, unsigned z, char w)
+{
+ unsigned v[2];
+ fn (w || baz (), y, t.s, y, foo (bar (z, w) <= v[0], x));
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48517.c b/gcc/testsuite/gcc.c-torture/compile/pr48517.c
new file mode 100644
index 00000000000..30b3ecbb354
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48517.c
@@ -0,0 +1,13 @@
+/* PR c/48517 */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+void bar (const unsigned short *);
+
+void
+foo (void)
+{
+ static const unsigned short array[] = (const unsigned short []) { 0x0D2B };
+ const unsigned short *ptr = array;
+ bar (ptr);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48734.c b/gcc/testsuite/gcc.c-torture/compile/pr48734.c
new file mode 100644
index 00000000000..b20ea80fb3f
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48734.c
@@ -0,0 +1,11 @@
+/* PR tree-optimization/48734 */
+
+unsigned int
+foo (int x, unsigned int y, unsigned int z)
+{
+ z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
+ z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
+ z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
+ z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
+ return z;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48742.c b/gcc/testsuite/gcc.c-torture/compile/pr48742.c
new file mode 100644
index 00000000000..0a670f3c990
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48742.c
@@ -0,0 +1,15 @@
+/* PR c/48742 */
+
+void baz (int);
+
+int
+foo (void)
+{
+ return 1 / 0 > 0;
+}
+
+void
+bar (void)
+{
+ baz (1 <= 2 % (3 >> 1 > 5 / 6 == 3));
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48767.c b/gcc/testsuite/gcc.c-torture/compile/pr48767.c
new file mode 100644
index 00000000000..66cb34885d0
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48767.c
@@ -0,0 +1,7 @@
+/* PR target/48767 */
+
+void
+foo (__builtin_va_list ap)
+{
+ __builtin_va_arg (ap, void);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/920501-8.x b/gcc/testsuite/gcc.c-torture/execute/920501-8.x
deleted file mode 100644
index f675fb66d13..00000000000
--- a/gcc/testsuite/gcc.c-torture/execute/920501-8.x
+++ /dev/null
@@ -1,5 +0,0 @@
-# sprintf() does not support %f on m6811/m6812 target.
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"]} {
- return 1
-}
-return 0
diff --git a/gcc/testsuite/gcc.c-torture/execute/930513-1.x b/gcc/testsuite/gcc.c-torture/execute/930513-1.x
deleted file mode 100644
index f675fb66d13..00000000000
--- a/gcc/testsuite/gcc.c-torture/execute/930513-1.x
+++ /dev/null
@@ -1,5 +0,0 @@
-# sprintf() does not support %f on m6811/m6812 target.
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"]} {
- return 1
-}
-return 0
diff --git a/gcc/testsuite/gcc.c-torture/execute/960312-1.x b/gcc/testsuite/gcc.c-torture/execute/960312-1.x
deleted file mode 100644
index ed4bac41066..00000000000
--- a/gcc/testsuite/gcc.c-torture/execute/960312-1.x
+++ /dev/null
@@ -1,7 +0,0 @@
-# This test fails on HC11/HC12 when it is compiled without -mshort because
-# is uses an asm that requires two 32-bit registers (int). It passes
-# when using -mshort because there are enough registers; force -mshort.
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
- set options "-mshort"
-}
-return 0
diff --git a/gcc/testsuite/gcc.c-torture/execute/980709-1.x b/gcc/testsuite/gcc.c-torture/execute/980709-1.x
index f64f5588620..307f568859c 100644
--- a/gcc/testsuite/gcc.c-torture/execute/980709-1.x
+++ b/gcc/testsuite/gcc.c-torture/execute/980709-1.x
@@ -1,11 +1,7 @@
-# pow() is not available on m6811/m6812 target, this test will not link.
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"]} {
- return 1
-}
# XFAIL this test for AIX using -msoft-float.
# This test calls the system libm.a function pow.
# A false failure is reported if -msoft-float is used.
-# AIX expects the the parameters to be passed in fp regs.
+# AIX expects the parameters to be passed in fp regs.
if { [istarget powerpc-*-aix*] || [istarget rs6000-*-aix*] } {
set torture_eval_before_execute {
global compiler_conditional_xfail_data
diff --git a/gcc/testsuite/gcc.c-torture/execute/990826-0.x b/gcc/testsuite/gcc.c-torture/execute/990826-0.x
index 689aebfe366..477c10bba5b 100644
--- a/gcc/testsuite/gcc.c-torture/execute/990826-0.x
+++ b/gcc/testsuite/gcc.c-torture/execute/990826-0.x
@@ -1,11 +1,7 @@
-# floor() is not available on m6811/m6812 target, this test will not link.
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"]} {
- return 1
-}
# XFAIL this test for AIX using -msoft-float.
# This test calls the system libm.a function floor.
# A false failure is reported if -msoft-float is used.
-# AIX expects the the parameters to be passed in fp regs.
+# AIX expects the parameters to be passed in fp regs.
if { [istarget powerpc-*-aix*] || [istarget rs6000-*-aix*] } {
set torture_eval_before_execute {
global compiler_conditional_xfail_data
diff --git a/gcc/testsuite/gcc.c-torture/execute/cmpsi-2.c b/gcc/testsuite/gcc.c-torture/execute/cmpsi-2.c
index 62832a9bffc..4378b719e83 100644
--- a/gcc/testsuite/gcc.c-torture/execute/cmpsi-2.c
+++ b/gcc/testsuite/gcc.c-torture/execute/cmpsi-2.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target int32plus } */
+
#define F 140
#define T 13
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr42544.c b/gcc/testsuite/gcc.c-torture/execute/pr42544.c
new file mode 100644
index 00000000000..c5951b06a17
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr42544.c
@@ -0,0 +1,14 @@
+/* PR c/42544 */
+
+extern void abort (void);
+
+int
+main ()
+{
+ signed short s = -1;
+ if (sizeof (long long) == sizeof (unsigned int))
+ return 0;
+ if ((unsigned int) s >= 0x100000000ULL)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr45262.c b/gcc/testsuite/gcc.c-torture/execute/pr45262.c
index 72e186bf287..e94f4ff29ec 100644
--- a/gcc/testsuite/gcc.c-torture/execute/pr45262.c
+++ b/gcc/testsuite/gcc.c-torture/execute/pr45262.c
@@ -1,4 +1,5 @@
/* PR middle-end/45262 */
+/* { dg-require-effective-target int32plus } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr48197.c b/gcc/testsuite/gcc.c-torture/execute/pr48197.c
new file mode 100644
index 00000000000..37812c07b0c
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr48197.c
@@ -0,0 +1,25 @@
+/* PR c/48197 */
+
+extern void abort (void);
+static int y = 0x8000;
+
+int
+main ()
+{
+ unsigned int x = (short)y;
+ if (sizeof (0LL) == sizeof (0U))
+ return 0;
+ if (0LL > (0U ^ (short)-0x8000))
+ abort ();
+ if (0LL > (0U ^ x))
+ abort ();
+ if (0LL > (0U ^ (short)y))
+ abort ();
+ if ((0U ^ (short)-0x8000) < 0LL)
+ abort ();
+ if ((0U ^ x) < 0LL)
+ abort ();
+ if ((0U ^ (short)y) < 0LL)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr48717.c b/gcc/testsuite/gcc.c-torture/execute/pr48717.c
new file mode 100644
index 00000000000..a746374a26d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr48717.c
@@ -0,0 +1,26 @@
+/* PR tree-optimization/48717 */
+
+extern void abort (void);
+
+int v = 1, w;
+
+unsigned short
+foo (unsigned short x, unsigned short y)
+{
+ return x + y;
+}
+
+void
+bar (void)
+{
+ v = foo (~w, w);
+}
+
+int
+main ()
+{
+ bar ();
+ if (v != (unsigned short) -1)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr48809.c b/gcc/testsuite/gcc.c-torture/execute/pr48809.c
new file mode 100644
index 00000000000..80de5bc8a3e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr48809.c
@@ -0,0 +1,60 @@
+/* PR tree-optimization/48809 */
+
+extern void abort (void);
+
+int
+foo (signed char x)
+{
+ int y = 0;
+ switch (x)
+ {
+ case 0: y = 1; break;
+ case 1: y = 7; break;
+ case 2: y = 2; break;
+ case 3: y = 19; break;
+ case 4: y = 5; break;
+ case 5: y = 17; break;
+ case 6: y = 31; break;
+ case 7: y = 8; break;
+ case 8: y = 28; break;
+ case 9: y = 16; break;
+ case 10: y = 31; break;
+ case 11: y = 12; break;
+ case 12: y = 15; break;
+ case 13: y = 111; break;
+ case 14: y = 17; break;
+ case 15: y = 10; break;
+ case 16: y = 31; break;
+ case 17: y = 7; break;
+ case 18: y = 2; break;
+ case 19: y = 19; break;
+ case 20: y = 5; break;
+ case 21: y = 107; break;
+ case 22: y = 31; break;
+ case 23: y = 8; break;
+ case 24: y = 28; break;
+ case 25: y = 106; break;
+ case 26: y = 31; break;
+ case 27: y = 102; break;
+ case 28: y = 105; break;
+ case 29: y = 111; break;
+ case 30: y = 17; break;
+ case 31: y = 10; break;
+ case 32: y = 31; break;
+ case 98: y = 18; break;
+ case -62: y = 19; break;
+ }
+ return y;
+}
+
+int
+main ()
+{
+ if (foo (98) != 18 || foo (97) != 0 || foo (99) != 0)
+ abort ();
+ if (foo (-62) != 19 || foo (-63) != 0 || foo (-61) != 0)
+ abort ();
+ if (foo (28) != 105 || foo (27) != 102 || foo (29) != 111)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/20020312-2.c b/gcc/testsuite/gcc.dg/20020312-2.c
index bf8225a1a6b..0689636b2da 100644
--- a/gcc/testsuite/gcc.dg/20020312-2.c
+++ b/gcc/testsuite/gcc.dg/20020312-2.c
@@ -58,6 +58,8 @@ extern void abort (void);
# else
# define PIC_REG "30"
# endif
+#elif defined(__RX__)
+/* No pic register. */
#elif defined(__s390__)
# define PIC_REG "12"
#elif defined(__sparc__)
diff --git a/gcc/testsuite/gcc.dg/Waddress.c b/gcc/testsuite/gcc.dg/Waddress.c
new file mode 100644
index 00000000000..146b1a932df
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Waddress.c
@@ -0,0 +1,10 @@
+/* PR c/36299 */
+/* { dg-do compile } */
+/* { dg-options "-Waddress" } */
+
+int
+foo(void)
+{
+ char a[1];
+ return a == 0;
+}
diff --git a/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c
new file mode 100644
index 00000000000..45373bc1a98
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c
@@ -0,0 +1,47 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c89 -pedantic" } */
+
+#define TEN " "
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+__asm__ (HUN HUN HUN HUN HUN TEN);
+
+/* C99's minimum-maximum is 4095. */
+__asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+
+void
+f (void)
+{
+ /* C89's minimum-maximum is 509. */
+ __asm__ (HUN HUN HUN HUN HUN TEN);
+ __asm__ (HUN HUN HUN HUN HUN TEN : : );
+ __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
+
+ /* C99's minimum-maximum is 4095. */
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : : );
+ __asm__ goto (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : : : : label);
+
+ label: ;
+}
diff --git a/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-ext.c b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-ext.c
new file mode 100644
index 00000000000..09b8079d553
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-ext.c
@@ -0,0 +1,19 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c89 -pedantic" } */
+
+#define TEN "xxxxxxxxxx"
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+const char x510[] = __extension__ HUN HUN HUN HUN HUN TEN;
+
+/* C99's minimum-maximum is 4095. */
+const char x4096[] = __extension__
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456";
diff --git a/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c
new file mode 100644
index 00000000000..b5523bc8906
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c
@@ -0,0 +1,48 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c90 -pedantic" } */
+
+#define TEN " "
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+__asm__ (HUN HUN HUN HUN HUN TEN);
+
+/* C99's minimum-maximum is 4095. */
+__asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+
+void
+f (void)
+{
+ /* C89's minimum-maximum is 509. */
+ __asm__ (HUN HUN HUN HUN HUN TEN);
+ __asm__ (HUN HUN HUN HUN HUN TEN : :);
+ __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
+
+ /* C99's minimum-maximum is 4095. */
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : :);
+ __asm__ goto (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : : : : label);
+
+ label: ;
+}
+
diff --git a/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-ext.c b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-ext.c
new file mode 100644
index 00000000000..6fbaebef341
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-ext.c
@@ -0,0 +1,19 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c90 -pedantic" } */
+
+#define TEN "xxxxxxxxxx"
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+const char x510[] = __extension__ HUN HUN HUN HUN HUN TEN;
+
+/* C99's minimum-maximum is 4095. */
+const char x4096[] = __extension__
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456";
diff --git a/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c
new file mode 100644
index 00000000000..8840e38bdc4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c
@@ -0,0 +1,48 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c99 -pedantic" } */
+
+#define TEN " "
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+__asm__ (HUN HUN HUN HUN HUN TEN);
+
+/* C99's minimum-maximum is 4095. */
+__asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+
+void
+f (void)
+{
+ /* C89's minimum-maximum is 509. */
+ __asm__ (HUN HUN HUN HUN HUN TEN);
+ __asm__ (HUN HUN HUN HUN HUN TEN : :);
+ __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
+
+ /* C99's minimum-maximum is 4095. */
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : :);
+ __asm__ goto (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : : : : label);
+
+ label: ;
+}
+
diff --git a/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-ext.c b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-ext.c
new file mode 100644
index 00000000000..93d5e4600fc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-ext.c
@@ -0,0 +1,19 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c99 -pedantic" } */
+
+#define TEN "xxxxxxxxxx"
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+const char x510[] = HUN HUN HUN HUN HUN TEN;
+
+/* C99's minimum-maximum is 4095. */
+const char x4096[] = __extension__
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456";
diff --git a/gcc/testsuite/gcc.dg/Wstrict-overflow-23.c b/gcc/testsuite/gcc.dg/Wstrict-overflow-23.c
new file mode 100644
index 00000000000..16014bb15c5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wstrict-overflow-23.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -Wstrict-overflow" } */
+
+unsigned int
+do_scrolling (unsigned int window_size, unsigned int writecost)
+{
+ unsigned int i = window_size;
+
+ int terminal_window_p = 0;
+ unsigned int queue = 0;
+
+ for (i = window_size; i; i--)
+ {
+ if (writecost < i)
+ ++queue;
+ else if (writecost & 1)
+ terminal_window_p = 1;
+ }
+
+ if (queue > 0)
+ {
+ if (!terminal_window_p)
+ {
+ terminal_window_p = 1;
+ }
+ }
+
+ if (terminal_window_p)
+ return 100;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/anon-struct-11.c b/gcc/testsuite/gcc.dg/anon-struct-11.c
index 1084e5bded6..c2f85fc24e4 100644
--- a/gcc/testsuite/gcc.dg/anon-struct-11.c
+++ b/gcc/testsuite/gcc.dg/anon-struct-11.c
@@ -50,7 +50,7 @@ struct E {
struct F { char f; }; /* { dg-warning "does not declare anything" } */
char c;
union {
- D;
+ D; /* { dg-warning "does not declare anything" } */
};
char e;
};
@@ -85,7 +85,7 @@ test2 (void)
e.e = 5;
f2 (&e); /* { dg-warning "incompatible pointer type" } */
f3 (&e); /* { dg-warning "incompatible pointer type" } */
- if (e.d != 4)
+ if (e.d != 4) /* { dg-error "no member" } */
abort ();
if (e.f != 6) /* { dg-error "no member" } */
abort ();
diff --git a/gcc/testsuite/gcc.dg/binop-xor1.c b/gcc/testsuite/gcc.dg/binop-xor1.c
new file mode 100644
index 00000000000..53a2ce23ab3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/binop-xor1.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+int
+foo (int a, int b, int c)
+{
+ return ((a && !b && c) || (!a && b && c));
+}
+
+/* We expect to see "<bb N>"; confirm that, so that we know to count
+ it in the real test. */
+/* { dg-final { scan-tree-dump-times "<bb\[^>\]*>" 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "\\\^" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/binop-xor2.c b/gcc/testsuite/gcc.dg/binop-xor2.c
new file mode 100644
index 00000000000..51b41dd7ff6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/binop-xor2.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+int
+foo (int a, int b)
+{
+ return ((a & ~b) | (~a & b));
+}
+
+/* We expect to see "<bb N>"; confirm that, so that we know to count
+ it in the real test. */
+/* { dg-final { scan-tree-dump-times "<bb\[^>\]*>" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "\\\^" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/binop-xor3.c b/gcc/testsuite/gcc.dg/binop-xor3.c
new file mode 100644
index 00000000000..97c7888189a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/binop-xor3.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+int
+foo (int a, int b)
+{
+ return ((a && !b) || (!a && b));
+}
+
+/* We expect to see "<bb N>"; confirm that, so that we know to count
+ it in the real test. */
+/* { dg-final { scan-tree-dump-times "<bb\[^>\]*>" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "\\\^" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/binop-xor4.c b/gcc/testsuite/gcc.dg/binop-xor4.c
new file mode 100644
index 00000000000..f87950a3335
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/binop-xor4.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+int
+foo (int a, int b, int c)
+{
+ return ((a & ~b) | (~a & b)) & c;
+}
+
+/* We expect to see "<bb N>"; confirm that, so that we know to count
+ it in the real test. */
+/* { dg-final { scan-tree-dump-times "<bb\[^>\]*>" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "\\\^" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/binop-xor5.c b/gcc/testsuite/gcc.dg/binop-xor5.c
new file mode 100644
index 00000000000..256c4bfa82a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/binop-xor5.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+int
+foo (int a, int b, int c)
+{
+ return ((a & ~b & c) | (~a & b & c));
+}
+
+/* We expect to see "<bb N>"; confirm that, so that we know to count
+ it in the real test. */
+/* { dg-final { scan-tree-dump-times "<bb\[^>\]*>" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "\\\^" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "\&" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/bitfld-15.c b/gcc/testsuite/gcc.dg/bitfld-15.c
index 44d53b34ae2..03f43f2de8c 100644
--- a/gcc/testsuite/gcc.dg/bitfld-15.c
+++ b/gcc/testsuite/gcc.dg/bitfld-15.c
@@ -2,6 +2,7 @@
/* Remove pedantic. Allow the GCC extension to use char for bitfields. */
/* { dg-options "" } */
/* { dg-options "-mno-ms-bitfields" { target i?86-*-netware } } */
+/* { dg-options "-mno-ms-bitfields -Wno-packed-bitfield-compat" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
struct t
{
diff --git a/gcc/testsuite/gcc.dg/bitfld-16.c b/gcc/testsuite/gcc.dg/bitfld-16.c
index 0a89bdab1ff..5ed30f74392 100644
--- a/gcc/testsuite/gcc.dg/bitfld-16.c
+++ b/gcc/testsuite/gcc.dg/bitfld-16.c
@@ -1,6 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-Wno-packed-bitfield-compat" } */
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target i?86-*-netware } } */
+/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
struct t
{
diff --git a/gcc/testsuite/gcc.dg/bitfld-17.c b/gcc/testsuite/gcc.dg/bitfld-17.c
index 80099c6c9a2..9512f5fdf2a 100644
--- a/gcc/testsuite/gcc.dg/bitfld-17.c
+++ b/gcc/testsuite/gcc.dg/bitfld-17.c
@@ -1,6 +1,7 @@
/* { dg-do compile } */
/* { dg-options "" } */
/* { dg-options "-mno-ms-bitfields" { target i?86-*-netware } } */
+/* { dg-options "-mno-ms-bitfields -Wno-packed-bitfield-compat" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
struct t
{
diff --git a/gcc/testsuite/gcc.dg/bitfld-18.c b/gcc/testsuite/gcc.dg/bitfld-18.c
index cb24c65d723..067d9ae3851 100644
--- a/gcc/testsuite/gcc.dg/bitfld-18.c
+++ b/gcc/testsuite/gcc.dg/bitfld-18.c
@@ -1,6 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-Wno-packed-bitfield-compat" } */
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target i?86-*-netware } } */
+/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
struct t
{
diff --git a/gcc/testsuite/gcc.dg/builtin-object-size-10.c b/gcc/testsuite/gcc.dg/builtin-object-size-10.c
new file mode 100644
index 00000000000..6c7ed45b6e0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/builtin-object-size-10.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-objsz-details" } */
+
+typedef struct {
+ char sentinel[4];
+ char data[0];
+} drone_packet;
+typedef struct {
+ char type_str[16];
+ char channel_hop;
+} drone_source_packet;
+drone_packet *
+foo(char *x)
+{
+ drone_packet *dpkt = __builtin_malloc(sizeof(drone_packet)
+ + sizeof(drone_source_packet));
+ drone_source_packet *spkt = (drone_source_packet *) dpkt->data;
+ __builtin___snprintf_chk (spkt->type_str, 16,
+ 1, __builtin_object_size (spkt->type_str, 1),
+ "%s", x);
+ return dpkt;
+}
+
+/* { dg-final { scan-tree-dump "maximum object size 21" "objsz" } } */
+/* { dg-final { scan-tree-dump "maximum subobject size 16" "objsz" } } */
+/* { dg-final { cleanup-tree-dump "objsz" } } */
diff --git a/gcc/testsuite/gcc.dg/c1x-anon-struct-1.c b/gcc/testsuite/gcc.dg/c1x-anon-struct-1.c
index 711fe65df3d..6d4b433d733 100644
--- a/gcc/testsuite/gcc.dg/c1x-anon-struct-1.c
+++ b/gcc/testsuite/gcc.dg/c1x-anon-struct-1.c
@@ -4,20 +4,13 @@
#include <stddef.h>
-typedef struct
-{
- int i;
-} s0;
-
-typedef union
-{
- int i;
-} u0;
-
struct s1
{
int a;
- u0;
+ union
+ {
+ int i;
+ };
struct
{
int b;
@@ -27,7 +20,10 @@ struct s1
union u1
{
int b;
- s0;
+ struct
+ {
+ int i;
+ };
union
{
int c;
@@ -44,7 +40,10 @@ struct s2
struct s3
{
- u0;
+ union
+ {
+ int i;
+ };
};
struct s4
diff --git a/gcc/testsuite/gcc.dg/c1x-anon-struct-3.c b/gcc/testsuite/gcc.dg/c1x-anon-struct-3.c
new file mode 100644
index 00000000000..1841eddd0a1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/c1x-anon-struct-3.c
@@ -0,0 +1,34 @@
+/* Test for anonymous structures and unions in C1X. Test for invalid
+ cases: typedefs disallowed by N1549. */
+/* { dg-do compile } */
+/* { dg-options "-std=c1x -pedantic-errors" } */
+
+typedef struct
+{
+ int i;
+} s0;
+
+typedef union
+{
+ int i;
+} u0;
+
+struct s1
+{
+ int a;
+ u0; /* { dg-error "declaration does not declare anything" } */
+ struct
+ {
+ int b;
+ };
+};
+
+union u1
+{
+ int b;
+ s0; /* { dg-error "declaration does not declare anything" } */
+ union
+ {
+ int c;
+ };
+};
diff --git a/gcc/testsuite/gcc.dg/c1x-typedef-1.c b/gcc/testsuite/gcc.dg/c1x-typedef-1.c
index 2b0bc74208a..a68b23ff5e6 100644
--- a/gcc/testsuite/gcc.dg/c1x-typedef-1.c
+++ b/gcc/testsuite/gcc.dg/c1x-typedef-1.c
@@ -3,7 +3,8 @@
/* { dg-options "-std=c1x -pedantic-errors" } */
/* C1X permits typedefs to be redeclared to the same type, but not to
- different-but-compatible types. */
+ different-but-compatible types, and not when the type is variably
+ modified. */
#include <limits.h>
@@ -60,9 +61,10 @@ f (void)
typedef void FN2(int (*p)[*]); /* { dg-message "previous declaration" } */
typedef void FN2(int (*p)[]); /* { dg-error "with different type" } */
typedef int AV[a]; /* { dg-message "previous declaration" } */
- typedef int AV[b-1]; /* { dg-warning "may be a constraint violation at runtime" } */
- typedef int AAa[a];
+ typedef int AV[b-1]; /* { dg-error "redefinition" } */
+ typedef int AAa[a]; /* { dg-message "previous declaration" } */
typedef int AAb[b-1];
typedef AAa *VF(void); /* { dg-message "previous declaration" } */
- typedef AAb *VF(void); /* { dg-warning "may be a constraint violation at runtime" } */
+ typedef AAb *VF(void); /* { dg-error "redefinition" } */
+ typedef AAa AAa; /* { dg-error "redefinition" } */
}
diff --git a/gcc/testsuite/gcc.dg/c1x-typedef-2.c b/gcc/testsuite/gcc.dg/c1x-typedef-2.c
deleted file mode 100644
index fb5d918a5d3..00000000000
--- a/gcc/testsuite/gcc.dg/c1x-typedef-2.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Test typedef redeclaration in C1X. Side effects from duplicate
- declarations still apply. */
-/* { dg-do run } */
-/* { dg-options "-std=c1x -pedantic-errors" } */
-
-extern void exit (int);
-extern void abort (void);
-
-int
-main (void)
-{
- int a = 1, b = 1;
- typedef int T[++a]; /* { dg-message "previous declaration" } */
- typedef int T[++b]; /* { dg-warning "may be a constraint violation at runtime" } */
- if (a != 2 || b != 2)
- abort ();
- exit (0);
-}
diff --git a/gcc/testsuite/gcc.dg/cast-qual-3.c b/gcc/testsuite/gcc.dg/cast-qual-3.c
deleted file mode 100644
index 88fdcfb38f5..00000000000
--- a/gcc/testsuite/gcc.dg/cast-qual-3.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-Wcast-qual" } */
-
-/* The files gcc.dg/cast-qual-3.c and g++.dg/warn/Wcast-qual2.c are
- duals. they are intended to show that gcc -Wcast-qual and g++
- -Wcast-qual emit warnings in the same cases. If you change this
- file, please also change the other one. */
-
-void
-f1 (void *bar)
-{
- const void *p1 = (const void *) bar;
- const char *p2 = (const char *) bar;
- const void **p3 = (const void **) bar;
- const char **p4 = (const char **) bar;
- const void * const *p5 = (const void * const *) bar;
- const char * const *p6 = (const char * const *) bar;
- void * const *p7 = (void * const *) bar;
- char * const *p8 = (char * const *) bar;
- const void ***p9 = (const void ***) bar;
- const char ***p10 = (const char ***) bar;
- void * const **p11 = (void * const **) bar;
- char * const **p12 = (char * const **) bar;
- void ** const *p13 = (void ** const *) bar;
- char ** const *p14 = (char ** const *) bar;
- const void * const **p15 = (const void * const **) bar;
- const char * const **p16 = (const char * const **) bar;
- const void ** const *p17 = (const void ** const *) bar;
- const char ** const *p18 = (const char ** const *) bar;
- void * const * const * p19 = (void * const * const *) bar;
- char * const * const * p20 = (char * const * const *) bar;
- const void * const * const *p21 = (const void * const * const *) bar;
- const char * const * const *p22 = (const char * const * const *) bar;
-}
-
-void
-f2 (void **bar)
-{
- const void *p1 = (const void *) bar;
- const char *p2 = (const char *) bar;
- const void **p3 = (const void **) bar; /* { dg-warning "cast" } */
- const char **p4 = (const char **) bar;
- const void * const *p5 = (const void * const *) bar;
- const char * const *p6 = (const char * const *) bar;
- void * const *p7 = (void * const *) bar;
- char * const *p8 = (char * const *) bar;
- const void ***p9 = (const void ***) bar;
- const char ***p10 = (const char ***) bar;
- void * const **p11 = (void * const **) bar;
- char * const **p12 = (char * const **) bar;
- void ** const *p13 = (void ** const *) bar;
- char ** const *p14 = (char ** const *) bar;
- const void * const **p15 = (const void * const **) bar;
- const char * const **p16 = (const char * const **) bar;
- const void ** const *p17 = (const void ** const *) bar;
- const char ** const *p18 = (const char ** const *) bar;
- void * const * const * p19 = (void * const * const *) bar;
- char * const * const * p20 = (char * const * const *) bar;
- const void * const * const *p21 = (const void * const * const *) bar;
- const char * const * const *p22 = (const char * const * const *) bar;
-}
-
-void
-f3 (void ***bar)
-{
- const void *p1 = (const void *) bar;
- const char *p2 = (const char *) bar;
- const void **p3 = (const void **) bar;
- const char **p4 = (const char **) bar;
- const void * const *p5 = (const void * const *) bar;
- const char * const *p6 = (const char * const *) bar;
- void * const *p7 = (void * const *) bar;
- char * const *p8 = (char * const *) bar;
- const void ***p9 = (const void ***) bar; /* { dg-warning "cast" } */
- const char ***p10 = (const char ***) bar;
- void * const **p11 = (void * const **) bar; /* { dg-warning "cast" } */
- char * const **p12 = (char * const **) bar;
- void ** const *p13 = (void ** const *) bar;
- char ** const *p14 = (char ** const *) bar;
- const void * const **p15 = (const void * const **) bar; /* { dg-warning "cast" } */
- const char * const **p16 = (const char * const **) bar;
- const void ** const *p17 = (const void ** const *) bar; /* { dg-warning "cast" } */
- const char ** const *p18 = (const char ** const *) bar;
- void * const * const * p19 = (void * const * const *) bar;
- char * const * const * p20 = (char * const * const *) bar;
- const void * const * const *p21 = (const void * const * const *) bar;
- const char * const * const *p22 = (const char * const * const *) bar;
-}
-
-void
-f4 (void * const **bar)
-{
- const void ***p9 = (const void ***) bar; /* { dg-warning "cast" } */
- void * const **p11 = (void * const **) bar;
- void ** const *p13 = (void ** const *) bar; /* { dg-warning "cast" } */
- const void * const **p15 = (const void * const **) bar; /* { dg-warning "cast" } */
- const void ** const *p17 = (const void ** const *) bar; /* { dg-warning "cast" } */
- void * const * const * p19 = (void * const * const *) bar;
- const void * const * const *p21 = (const void * const * const *) bar;
-}
-
-void
-f5 (char ***bar)
-{
- volatile const char ***p9 = (volatile const char ***) bar; /* { dg-warning "cast" } */
- volatile char * const **p11 = (volatile char * const **) bar; /* { dg-warning "cast" } */
- volatile char ** const *p13 = (volatile char ** const *) bar; /* { dg-warning "cast" } */
- volatile const char * const **p15 = (volatile const char * const **) bar; /* { dg-warning "cast" } */
- volatile const char ** const *p17 = (volatile const char ** const *) bar; /* { dg-warning "cast" } */
- volatile char * const * const * p19 = (volatile char * const * const *) bar;
- volatile const char * const * const *p21 = (volatile const char * const * const *) bar;
-}
-
-void
-f6 (char ***bar)
-{
- const char * volatile **p9 = (const char * volatile **) bar; /* { dg-warning "cast" } */
- char * volatile const **p11 = (char * volatile const **) bar; /* { dg-warning "cast" } */
- char * volatile * const *p13 = (char * volatile * const *) bar;
- const char * volatile const **p15 = (const char * volatile const **) bar; /* { dg-warning "cast" } */
- const char * volatile * const *p17 = (const char * volatile * const *) bar; /* { dg-warning "cast" } */
- char * volatile const * const * p19 = (char * volatile const * const *) bar;
- const char * volatile const * const *p21 = (const char * volatile const * const *) bar;
-}
-
-void
-f7 (char ***bar)
-{
- const char ** volatile *p9 = (const char ** volatile *) bar; /* { dg-warning "cast" } */
- char * const * volatile *p11 = (char * const * volatile *) bar; /* { dg-warning "cast" } */
- char ** volatile const *p13 = (char ** volatile const *) bar;
- const char * const * volatile *p15 = (const char * const * volatile *) bar; /* { dg-warning "cast" } */
- const char ** volatile const *p17 = (const char ** volatile const *) bar; /* { dg-warning "cast" } */
- char * const * volatile const * p19 = (char * const * volatile const *) bar;
- const char * const * volatile const *p21 = (const char * const * volatile const *) bar;
-}
-
-typedef int (intfn) (int);
-typedef intfn *pintfn;
-typedef const intfn *constfn;
-
-void
-f8 (constfn ***bar)
-{
- const constfn *p1 = (const constfn *) bar;
- const pintfn *p2 = (const pintfn *) bar;
- const constfn **p3 = (const constfn **) bar;
- const pintfn **p4 = (const pintfn **) bar;
- const constfn * const *p5 = (const constfn * const *) bar;
- const pintfn * const *p6 = (const pintfn * const *) bar;
- constfn * const *p7 = (constfn * const *) bar;
- pintfn * const *p8 = (pintfn * const *) bar;
- const constfn ***p9 = (const constfn ***) bar; /* { dg-warning "cast" } */
- const pintfn ***p10 = (const pintfn ***) bar; /* { dg-warning "cast" } */
- constfn * const **p11 = (constfn * const **) bar; /* { dg-warning "cast" } */
- pintfn * const **p12 = (pintfn * const **) bar; /* { dg-warning "cast" } */
- constfn ** const *p13 = (constfn ** const *) bar;
- pintfn ** const *p14 = (pintfn ** const *) bar;
- const constfn * const **p15 = (const constfn * const **) bar; /* { dg-warning "cast" } */
- const pintfn * const **p16 = (const pintfn * const **) bar; /* { dg-warning "cast" } */
- const constfn ** const *p17 = (const constfn ** const *) bar; /* { dg-warning "cast" } */
- const pintfn ** const *p18 = (const pintfn ** const *) bar; /* { dg-warning "cast" } */
- constfn * const * const * p19 = (constfn * const * const *) bar;
- pintfn * const * const * p20 = (pintfn * const * const *) bar;
- const constfn * const * const *p21 = (const constfn * const * const *) bar;
- const pintfn * const * const *p22 = (const pintfn * const * const *) bar;
-}
diff --git a/gcc/testsuite/gcc.dg/cpp/assert4.c b/gcc/testsuite/gcc.dg/cpp/assert4.c
index 0bd88ce0681..ff53946c6ce 100644
--- a/gcc/testsuite/gcc.dg/cpp/assert4.c
+++ b/gcc/testsuite/gcc.dg/cpp/assert4.c
@@ -139,14 +139,6 @@
/* Check for #cpu and #machine assertions. */
-#if defined __arc__
-# if !#cpu(arc) || !#machine(arc)
-# error
-# endif
-#elif #cpu(arc) || #machine(arc)
-# error
-#endif
-
#if defined __alpha__
# if !#cpu(alpha) || !#machine(alpha) \
|| (defined __alpha_cix__ && !#cpu(cix)) \
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-1.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-1.c
new file mode 100644
index 00000000000..2e4c3cda86c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-1.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-save-temps -g -dA" } */
+
+typedef struct _Harry { int dummy; } Harry_t;
+Harry_t harry;
+
+/* { dg-final { scan-assembler "DW_TAG_typedef\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*(DW_AT_name: \"Harry_t\"|\"Harry_t..\"\[^\\r\\n\]*DW_AT_name)" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-2.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-2.c
new file mode 100644
index 00000000000..13856d7aa0d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-2.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-save-temps -g -dA" } */
+
+typedef const struct _Harry { int dummy; } Harry_t;
+Harry_t harry;
+
+/* { dg-final { scan-assembler "DW_TAG_typedef\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*(DW_AT_name: \"Harry_t\"|\"Harry_t..\"\[^\\r\\n\]*DW_AT_name)" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-3.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-3.c
new file mode 100644
index 00000000000..f1e463e45dc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-3.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-save-temps -g -dA" } */
+
+typedef struct _Harry { int dummy; } Harry_t;
+const Harry_t harry[5];
+
+/* { dg-final { scan-assembler "DW_TAG_typedef\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*(DW_AT_name: \"Harry_t\"|\"Harry_t..\"\[^\\r\\n\]*DW_AT_name)" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-4.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-4.c
new file mode 100644
index 00000000000..cf0a2af6ced
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-4.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-save-temps -g -dA" } */
+
+typedef const struct _Harry { int dummy; } Harry_t;
+Harry_t harry[10];
+
+/* { dg-final { scan-assembler "DW_TAG_typedef\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*(DW_AT_name: \"Harry_t\"|\"Harry_t..\"\[^\\r\\n\]*DW_AT_name)" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.dg/dfp/pr48204.c b/gcc/testsuite/gcc.dg/dfp/pr48204.c
new file mode 100644
index 00000000000..7b421581e6e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pr48204.c
@@ -0,0 +1,10 @@
+/* PR debug/48204 */
+/* { dg-do compile } */
+/* { dg-options "-O -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-fre -g" } */
+
+void
+foo (void)
+{
+ float cf = 3.0f;
+ _Decimal64 d64 = cf;
+}
diff --git a/gcc/testsuite/gcc.dg/dfp/pr48928.c b/gcc/testsuite/gcc.dg/dfp/pr48928.c
new file mode 100644
index 00000000000..1fd36356594
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pr48928.c
@@ -0,0 +1,10 @@
+/* PR debug/48928 */
+/* { dg-do compile } */
+/* { dg-options "-g -O2" } */
+
+_Decimal32
+foo (_Decimal32 x)
+{
+ _Decimal32 y = (x + x) / (9.DF * x);
+ return y;
+}
diff --git a/gcc/testsuite/gcc.dg/fold-complex-1.c b/gcc/testsuite/gcc.dg/fold-complex-1.c
new file mode 100644
index 00000000000..a9ba0fd59c4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fold-complex-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ffast-math -fdump-tree-original" } */
+
+_Complex float
+foo (_Complex float x)
+{
+ return __real x + 1.0iF * __imag x;
+}
+
+/* { dg-final { scan-tree-dump-times "COMPLEX_EXPR" 0 "original" } } */
+/* { dg-final { cleanup-tree-dump "original" } } */
diff --git a/gcc/testsuite/gcc.dg/gomp/pr48591.c b/gcc/testsuite/gcc.dg/gomp/pr48591.c
new file mode 100644
index 00000000000..e6cb106d845
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr48591.c
@@ -0,0 +1,22 @@
+/* PR middle-end/48591 */
+/* { dg-do compile { target i?86-*-* x86_64-*-* ia64-*-* } } */
+/* { dg-options "-fopenmp" } */
+
+extern void abort (void);
+
+int
+main ()
+{
+ __float128 f = 0.0;
+ int i;
+ #pragma omp parallel for reduction(+:f)
+ for (i = 0; i < 128; i++)
+ f += 0.5Q;
+ if (f != 64.0Q)
+ abort ();
+ #pragma omp atomic
+ f += 8.5Q;
+ if (f != 72.5Q)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/gomp/pr48716.c b/gcc/testsuite/gcc.dg/gomp/pr48716.c
new file mode 100644
index 00000000000..3496e2f0227
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr48716.c
@@ -0,0 +1,24 @@
+/* PR c/48716 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+int
+main (void)
+{
+ #pragma omp parallel default(none)
+ {
+ static int s;
+ int t = 0;
+ #pragma omp atomic
+ s++;
+ t++;
+ }
+ #pragma omp task default(none)
+ {
+ static int s;
+ int t = 0;
+ #pragma omp atomic
+ s++;
+ t++;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/graphite/block-3.c b/gcc/testsuite/gcc.dg/graphite/block-3.c
index 322ed8d7f89..3b9db31fa79 100644
--- a/gcc/testsuite/gcc.dg/graphite/block-3.c
+++ b/gcc/testsuite/gcc.dg/graphite/block-3.c
@@ -1,4 +1,5 @@
/* { dg-require-effective-target size32plus } */
+/* { dg-require-effective-target run_expensive_tests } PR testsuite/48283 */
/* { dg-timeout-factor 4.0 } */
#define DEBUG 0
diff --git a/gcc/testsuite/gcc.dg/graphite/block-4.c b/gcc/testsuite/gcc.dg/graphite/block-4.c
index eb98f0447aa..c206bf824b8 100644
--- a/gcc/testsuite/gcc.dg/graphite/block-4.c
+++ b/gcc/testsuite/gcc.dg/graphite/block-4.c
@@ -1,4 +1,5 @@
/* { dg-require-effective-target size32plus } */
+/* { dg-require-effective-target run_expensive_tests } PR testsuite/48283 */
#define DEBUG 0
#if DEBUG
diff --git a/gcc/testsuite/gcc.dg/graphite/block-7.c b/gcc/testsuite/gcc.dg/graphite/block-7.c
index fbbe1f3ad51..bf9c60f415c 100644
--- a/gcc/testsuite/gcc.dg/graphite/block-7.c
+++ b/gcc/testsuite/gcc.dg/graphite/block-7.c
@@ -1,4 +1,5 @@
/* { dg-require-effective-target size32plus } */
+/* { dg-require-effective-target run_expensive_tests } PR testsuite/48283 */
#define DEBUG 0
#if DEBUG
diff --git a/gcc/testsuite/gcc.dg/graphite/block-8.c b/gcc/testsuite/gcc.dg/graphite/block-8.c
index 9c1c9cebe83..4e2f358fca7 100644
--- a/gcc/testsuite/gcc.dg/graphite/block-8.c
+++ b/gcc/testsuite/gcc.dg/graphite/block-8.c
@@ -1,4 +1,5 @@
/* { dg-require-effective-target size32plus } */
+/* { dg-require-effective-target run_expensive_tests } PR testsuite/48283 */
#define DEBUG 0
#if DEBUG
diff --git a/gcc/testsuite/gcc.dg/guality/guality.exp b/gcc/testsuite/gcc.dg/guality/guality.exp
index 49e2ac5a550..5e3284d5d11 100644
--- a/gcc/testsuite/gcc.dg/guality/guality.exp
+++ b/gcc/testsuite/gcc.dg/guality/guality.exp
@@ -4,7 +4,8 @@ load_lib gcc-dg.exp
load_lib gcc-gdb-test.exp
# Disable on darwin until radr://7264615 is resolved.
-if { [istarget *-*-darwin*] } {
+# Disable on Tru64 UNIX (PR testsuite/48251).
+if { [istarget *-*-darwin*] || [istarget alpha*-dec-osf*] } {
return
}
diff --git a/gcc/testsuite/gcc.dg/guality/pr36977.c b/gcc/testsuite/gcc.dg/guality/pr36977.c
new file mode 100644
index 00000000000..3689fae8c43
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr36977.c
@@ -0,0 +1,32 @@
+/* PR debug/36977 */
+/* { dg-do run } */
+/* { dg-options "-g" } */
+/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */
+
+void
+foo ()
+{
+}
+
+int
+main ()
+{
+ struct { char c[100]; } cbig;
+ struct { int i[800]; } ibig;
+ struct { long l[900]; } lbig;
+ struct { float f[200]; } fbig;
+ struct { double d[300]; } dbig;
+ struct { short s[400]; } sbig;
+
+ ibig.i[0] = 55; /* { dg-final { gdb-test 30 "ibig.i\[0\]" "55" } } */
+ ibig.i[100] = 5; /* { dg-final { gdb-test 30 "ibig.i\[100\]" "5" } } */
+ cbig.c[0] = '\0'; /* { dg-final { gdb-test 30 "cbig.c\[0\]" "'\\0'" } } */
+ cbig.c[99] = 'A'; /* { dg-final { gdb-test 30 "cbig.c\[99\]" "'A'" } } */
+ fbig.f[100] = 11.0; /* { dg-final { gdb-test 30 "fbig.f\[100\]" "11" } } */
+ dbig.d[202] = 9.0; /* { dg-final { gdb-test 30 "dbig.d\[202\]" "9" } } */
+ sbig.s[90] = 255; /* { dg-final { gdb-test 30 "sbig.s\[90\]" "255" } } */
+ lbig.l[333] = 999; /* { dg-final { gdb-test 30 "lbig.l\[333\]" "999" } } */
+
+ foo ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr45882.c b/gcc/testsuite/gcc.dg/guality/pr45882.c
new file mode 100644
index 00000000000..5ca22d4f4ad
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr45882.c
@@ -0,0 +1,30 @@
+/* PR debug/45882 */
+/* { dg-do run } */
+/* { dg-options "-g" } */
+
+extern void abort (void);
+int a[1024];
+volatile short int v;
+
+__attribute__((noinline,noclone,used)) int
+foo (int i, int j)
+{
+ int b = i; /* { dg-final { gdb-test 16 "b" "7" } } */
+ int c = i + 4; /* { dg-final { gdb-test 16 "c" "11" } } */
+ int d = a[i]; /* { dg-final { gdb-test 16 "d" "112" } } */
+ int e = a[i + 6]; /* { dg-final { gdb-test 16 "e" "142" } } */
+ ++v;
+ return ++j;
+}
+
+int
+main (void)
+{
+ int l;
+ asm ("" : "=r" (l) : "0" (7));
+ a[7] = 112;
+ a[7 + 6] = 142;
+ if (foo (l, 7) != 8)
+ abort ();
+ return l - 7;
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr48466.c b/gcc/testsuite/gcc.dg/guality/pr48466.c
new file mode 100644
index 00000000000..8d5426a9989
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr48466.c
@@ -0,0 +1,41 @@
+/* PR debug/48466 */
+/* { dg-do run } */
+/* { dg-options "-g" } */
+/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */
+
+struct S { unsigned int a; unsigned int *b; };
+struct T { struct S a; struct S b; };
+struct U { const char *u; };
+int n[10];
+volatile int v;
+
+struct U
+foo (const char *s)
+{
+ struct U r;
+ r.u = s;
+ return r;
+}
+
+void
+bar (struct T *s, int a, int b)
+{
+ s->a.a = a;
+ s->a.b = &s->a.a;
+ s->b.a = b;
+ s->b.b = &s->b.a;
+}
+
+int
+main ()
+{
+ struct T t;
+ struct U x = foo ("this is x");
+ struct S y, z;
+ y.b = n; /* { dg-final { gdb-test 38 "t.a.a" "17" } } */
+ y.a = 0; /* { dg-final { gdb-test 38 "*t.a.b" "17" } } */
+ bar (&t, 17, 21); /* { dg-final { gdb-test 38 "t.b.a" "21" } } */
+ v++; /* { dg-final { gdb-test 38 "*t.b.b" "21" } } */
+ z = y;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/guality/vla-1.c b/gcc/testsuite/gcc.dg/guality/vla-1.c
index 2db1c29caa6..651465428ac 100644
--- a/gcc/testsuite/gcc.dg/guality/vla-1.c
+++ b/gcc/testsuite/gcc.dg/guality/vla-1.c
@@ -28,9 +28,10 @@ f2 (int i)
int
main ()
{
+ volatile int j;
int i = 5;
asm volatile ("" : "=r" (i) : "0" (i));
- f1 (i);
+ j = f1 (i);
f2 (i);
return 0;
}
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c b/gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c
index 1e04bfc2118..0f46e984bce 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c
@@ -1,5 +1,5 @@
/* { dg-do link } */
-/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre" } */
+/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre2" } */
static int x, y;
@@ -54,9 +54,9 @@ int main()
local_address_taken (&y);
/* As we are computing flow- and context-insensitive we may not
CSE the load of x here. */
- /* { dg-final { scan-tree-dump " = x;" "fre" } } */
+ /* { dg-final { scan-tree-dump " = x;" "fre2" } } */
return x;
}
/* { dg-final { cleanup-ipa-dump "pta" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { cleanup-tree-dump "fre2" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c b/gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c
index 074f44a6d68..e8abc3244a0 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -fipa-pta -fno-tree-sra -fdump-ipa-pta-details" } */
+/* { dg-options "-O2 -fipa-pta -fno-tree-fre -fno-tree-sra -fdump-ipa-pta-details" } */
struct X {
int i;
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c b/gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c
index e73db1c95ac..ce9393cb072 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre-details" } */
+/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre2-details" } */
static int __attribute__((noinline,noclone))
foo (int *p, int *q)
@@ -23,6 +23,6 @@ int main()
/* { dg-final { scan-ipa-dump "foo.arg0 = &a" "pta" } } */
/* { dg-final { scan-ipa-dump "foo.arg1 = &b" "pta" } } */
-/* { dg-final { scan-tree-dump "Replaced \\\*p_1\\\(D\\\) with 1" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*p_1\\\(D\\\) with 1" "fre2" } } */
+/* { dg-final { cleanup-tree-dump "fre2" } } */
/* { dg-final { cleanup-ipa-dump "pta" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c b/gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c
index d2b901cf910..32e1e4fbc49 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre-details" } */
+/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre2-details" } */
int a, b;
@@ -28,6 +28,6 @@ int main()
/* { dg-final { scan-ipa-dump "foo.arg0 = &a" "pta" } } */
/* { dg-final { scan-ipa-dump "foo.arg1 = &b" "pta" } } */
-/* { dg-final { scan-tree-dump "Replaced \\\*p_1\\\(D\\\) with 1" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*p_1\\\(D\\\) with 1" "fre2" } } */
+/* { dg-final { cleanup-tree-dump "fre2" } } */
/* { dg-final { cleanup-ipa-dump "pta" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/pr45644.c b/gcc/testsuite/gcc.dg/ipa/pr45644.c
index 3f61b8b4127..3741020d93c 100644
--- a/gcc/testsuite/gcc.dg/ipa/pr45644.c
+++ b/gcc/testsuite/gcc.dg/ipa/pr45644.c
@@ -1,6 +1,7 @@
/* Verify that we do not IPA-SRA bitfields. */
/* { dg-do run } */
/* { dg-options "-O2" } */
+/* { dg-require-effective-target int32plus } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/ipa/pr48195.c b/gcc/testsuite/gcc.dg/ipa/pr48195.c
new file mode 100644
index 00000000000..2e38452d598
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pr48195.c
@@ -0,0 +1,25 @@
+/* { dg-do link } */
+/* { dg-options "-O2 -flto --param partial-inlining-entry-probability=101" } */
+/* { dg-require-effective-target lto } */
+
+extern void abort(void);
+
+int i;
+
+void __attribute__ ((constructor))
+c2 ()
+{
+ if (i)
+ abort ();
+}
+
+void __attribute__ ((destructor))
+d1 ()
+{
+ if (i)
+ abort ();
+}
+
+void main ()
+{
+}
diff --git a/gcc/testsuite/gcc.dg/large-size-array-5.c b/gcc/testsuite/gcc.dg/large-size-array-5.c
new file mode 100644
index 00000000000..71ac47374f4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/large-size-array-5.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-Wno-overflow" } */
+
+typedef __SIZE_TYPE__ size_t;
+
+extern char a[((size_t)-1 >> 1) + 1]; /* { dg-error "too large" } */
+extern char b[((size_t)-1 >> 1)];
+extern int c[(((size_t)-1 >> 1) + 1) / sizeof(int)]; /* { dg-error "too large" } */
+extern int d[((size_t)-1 >> 1) / sizeof(int)];
diff --git a/gcc/testsuite/gcc.dg/lto/20081204-1_0.c b/gcc/testsuite/gcc.dg/lto/20081204-1_0.c
index a4b25ff82fb..0c3849f6182 100644
--- a/gcc/testsuite/gcc.dg/lto/20081204-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20081204-1_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-flto -flto-partition=1to1 -fPIC -r -nostdlib}} } */
/* Tests for the absence during linking of:
diff --git a/gcc/testsuite/gcc.dg/lto/20081224_0.c b/gcc/testsuite/gcc.dg/lto/20081224_0.c
index d050e231238..9f9afdf85c7 100644
--- a/gcc/testsuite/gcc.dg/lto/20081224_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20081224_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-flto -flto-partition=1to1 -r -nostdlib -fPIC}} } */
#include "20081224_0.h"
diff --git a/gcc/testsuite/gcc.dg/lto/20090116_0.c b/gcc/testsuite/gcc.dg/lto/20090116_0.c
index 5bb3a919a59..4a865969901 100644
--- a/gcc/testsuite/gcc.dg/lto/20090116_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20090116_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-O1 -flto -flto-partition=1to1 -fPIC}} } */
/* { dg-extra-ld-options {-r -nostdlib -O0} } */
diff --git a/gcc/testsuite/gcc.dg/lto/20090126-2_0.c b/gcc/testsuite/gcc.dg/lto/20090126-2_0.c
index 2239412d1af..f75a05fec62 100644
--- a/gcc/testsuite/gcc.dg/lto/20090126-2_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20090126-2_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-fPIC -O2 -flto -flto-partition=1to1}} } */
/* { dg-extra-ld-options {-fno-PIC -r -nostdlib -O2 -flto -flto-partition=1to1} } */
diff --git a/gcc/testsuite/gcc.dg/lto/20090206-2_0.c b/gcc/testsuite/gcc.dg/lto/20090206-2_0.c
index 4ca80ea4810..2f4020a011c 100644
--- a/gcc/testsuite/gcc.dg/lto/20090206-2_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20090206-2_0.c
@@ -1,5 +1,6 @@
/* { dg-lto-do link } */
/* { dg-skip-if "" { ! { i?86-*-linux* x86_64-*-linux* } } { "*" } { "" } } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-flto -flto-partition=1to1 -fPIC}} } */
/* { dg-suppress-ld-options {-fPIC} } */
diff --git a/gcc/testsuite/gcc.dg/lto/20090210_0.c b/gcc/testsuite/gcc.dg/lto/20090210_0.c
index 2c858a67d32..794c18fe04d 100644
--- a/gcc/testsuite/gcc.dg/lto/20090210_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20090210_0.c
@@ -1,6 +1,7 @@
/* { dg-lto-do run } */
+/* { dg-require-effective-target fpic } */
/* { dg-suppress-ld-options {-fPIC} } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_runtime } */
/* { dg-extra-ld-options "-pthread" { target *-*-solaris2.[89] } } */
int foo (int x)
{
diff --git a/gcc/testsuite/gcc.dg/lto/20090219_0.c b/gcc/testsuite/gcc.dg/lto/20090219_0.c
index 81a93e6da53..985c884cecd 100644
--- a/gcc/testsuite/gcc.dg/lto/20090219_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20090219_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-O3 -flto -flto-partition=1to1 -fPIC -r -nostdlib}} } */
struct Foo { int f1, f2, f3, f4, f5; };
diff --git a/gcc/testsuite/gcc.dg/lto/20091013-1_0.c b/gcc/testsuite/gcc.dg/lto/20091013-1_0.c
index 0fecce04f09..83de8d3223b 100644
--- a/gcc/testsuite/gcc.dg/lto/20091013-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20091013-1_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-fPIC -r -nostdlib -flto} {-fPIC -r -nostdlib -O2 -flto}} } */
void * HeapAlloc(void*,unsigned int,unsigned long);
diff --git a/gcc/testsuite/gcc.dg/lto/20091014-1_0.c b/gcc/testsuite/gcc.dg/lto/20091014-1_0.c
index 975214e0430..be327aaff90 100644
--- a/gcc/testsuite/gcc.dg/lto/20091014-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20091014-1_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-fPIC -r -nostdlib -flto}} } */
/* Empty file. See PR41173. */
diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_0.c b/gcc/testsuite/gcc.dg/lto/20091015-1_0.c
index 1cc4b78b31b..1c11f644888 100644
--- a/gcc/testsuite/gcc.dg/lto/20091015-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20091015-1_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-fPIC -r -nostdlib -O2 -flto} {-fPIC -r -nostdlib -O2 -flto -flto-partition=1to1}} } */
#include "20091015-1_b.h"
diff --git a/gcc/testsuite/gcc.dg/lto/20091016-1_0.c b/gcc/testsuite/gcc.dg/lto/20091016-1_0.c
index 39a04b950bf..b44c75a97c4 100644
--- a/gcc/testsuite/gcc.dg/lto/20091016-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20091016-1_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-fPIC -r -nostdlib -O2 -flto}} } */
typedef struct VEC_constructor_elt_gc { } VEC_constructor_elt_gc;
diff --git a/gcc/testsuite/gcc.dg/lto/20091020-1_0.c b/gcc/testsuite/gcc.dg/lto/20091020-1_0.c
index c9bcb565d96..f9d8bf87de6 100644
--- a/gcc/testsuite/gcc.dg/lto/20091020-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20091020-1_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-fPIC -r -nostdlib -flto}} } */
typedef struct {
diff --git a/gcc/testsuite/gcc.dg/lto/20091020-2_0.c b/gcc/testsuite/gcc.dg/lto/20091020-2_0.c
index fb1a82bb8c6..21e59678732 100644
--- a/gcc/testsuite/gcc.dg/lto/20091020-2_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20091020-2_0.c
@@ -1,4 +1,5 @@
/* { dg-lto-do link } */
+/* { dg-require-effective-target fpic } */
/* { dg-lto-options {{-fPIC -r -nostdlib -flto}} } */
typedef struct {
diff --git a/gcc/testsuite/gcc.dg/lto/pr48622_0.c b/gcc/testsuite/gcc.dg/lto/pr48622_0.c
new file mode 100644
index 00000000000..ffb5f62d6a0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/pr48622_0.c
@@ -0,0 +1,93 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-O -flto -finline-small-functions -fno-early-inlining}} } */
+
+void abort(void);
+void exit(int);
+
+typedef unsigned int u8 __attribute__ ((mode (QI)));
+
+u8
+ashift_qi_0 (u8 n)
+{
+}
+
+u8
+ashift_qi_2 (u8 n)
+{
+}
+
+u8
+ashift_qi_3 (u8 n)
+{
+}
+
+u8
+ashift_qi_4 (u8 n)
+{
+}
+
+u8
+ashift_qi_5 (u8 n)
+{
+}
+
+u8
+ashift_qi_6 (u8 n)
+{
+}
+
+u8
+ashift_qi_7 (u8 n)
+{
+}
+
+u8
+lshiftrt_qi_0 (u8 n)
+{
+}
+
+u8
+lshiftrt_qi_4 (u8 n)
+{
+}
+
+u8
+lshiftrt_qi_5 (u8 n)
+{
+}
+
+u8
+lshiftrt_qi_7 (u8 n)
+{
+}
+
+int
+main ()
+{
+ if (ashift_qi_0 (0xff) != (u8) ((u8) 0xff << 0))
+ abort ();
+ if (ashift_qi_1 (0xff) != (u8) ((u8) 0xff << 1))
+ abort ();
+ if (ashift_qi_2 (0xff) != (u8) ((u8) 0xff << 2))
+ abort ();
+ if (ashift_qi_3 (0xff) != (u8) ((u8) 0xff << 3))
+ abort ();
+ if (ashift_qi_4 (0xff) != (u8) ((u8) 0xff << 4))
+ abort ();
+ if (ashift_qi_5 (0xff) != (u8) ((u8) 0xff << 5))
+ abort ();
+ if (ashift_qi_6 (0xff) != (u8) ((u8) 0xff << 6))
+ abort ();
+ if (ashift_qi_7 (0xff) != (u8) ((u8) 0xff << 7))
+ abort ();
+ if (lshiftrt_qi_0 (0xff) != (u8) ((u8) 0xff >> 0))
+ abort ();
+ if (lshiftrt_qi_4 (0xff) != (u8) ((u8) 0xff >> 4))
+ abort ();
+ if (lshiftrt_qi_5 (0xff) != (u8) ((u8) 0xff >> 5))
+ abort ();
+ if (lshiftrt_qi_7 (0xff) != (u8) ((u8) 0xff >> 7))
+ abort ();
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.dg/matrix/matrix.exp b/gcc/testsuite/gcc.dg/matrix/matrix.exp
index 961e0255e33..aae19883143 100644
--- a/gcc/testsuite/gcc.dg/matrix/matrix.exp
+++ b/gcc/testsuite/gcc.dg/matrix/matrix.exp
@@ -20,7 +20,7 @@
load_lib gcc-dg.exp
load_lib target-supports.exp
-set DEFAULT_MATCFLAGS "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -fwhole-program"
+set DEFAULT_MATCFLAGS "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -fwhole-program -fno-tree-fre"
# Initialize `dg'.
dg-init
@@ -52,8 +52,8 @@ load_lib profopt.exp
# These are globals used by profopt-execute. The first is options
# needed to generate profile data, the second is options to use the
# profile data.
-set profile_option "-fprofile-generate -O3"
-set feedback_option "-fprofile-use -fipa-matrix-reorg -fdump-ipa-matrix-reorg -O3 -fwhole-program"
+set profile_option "-fprofile-generate -O3 -fno-tree-fre"
+set feedback_option "-fprofile-use -fipa-matrix-reorg -fdump-ipa-matrix-reorg -O3 -fwhole-program -fno-tree-fre"
foreach src [lsort [glob -nocomplain $srcdir/$subdir/transpose-*.c]] {
# If we're only testing specific files and this isn't one of them, skip it.
diff --git a/gcc/testsuite/gcc.dg/missing-field-init-2.c b/gcc/testsuite/gcc.dg/missing-field-init-2.c
index 581eb30d89b..c5a3f490387 100644
--- a/gcc/testsuite/gcc.dg/missing-field-init-2.c
+++ b/gcc/testsuite/gcc.dg/missing-field-init-2.c
@@ -9,3 +9,6 @@ struct s s4[] = { 1, 2, 3, 4, 5 }; /* { dg-warning "(missing initializer)|(near
struct s s5[] = { 1, 2, 3, 4, 5, 6 };
/* Designated initializers produce no warning. */
struct s s6 = { .a = 1 }; /* { dg-bogus "missing initializer" } */
+/* Allow zero-initializing with "= { 0 }". */
+struct s s7 = { 0 }; /* { dg-bogus "missing initializer" } */
+struct s s8 = { 1 }; /* { dg-warning "(missing initializer)|(near initialization)" } */
diff --git a/gcc/testsuite/gcc.dg/mtune.c b/gcc/testsuite/gcc.dg/mtune.c
index 992cb09ff01..88c5db8dda7 100644
--- a/gcc/testsuite/gcc.dg/mtune.c
+++ b/gcc/testsuite/gcc.dg/mtune.c
@@ -4,4 +4,5 @@
/* { dg-error "mtune" "" { target *-*-* } 0 } */
/* { dg-bogus "march" "" { target *-*-* } 0 } */
/* { dg-bogus "mcpu" "" { target *-*-* } 0 } */
+/* { dg-prune-output "note: valid arguments.*" } */
int i;
diff --git a/gcc/testsuite/gcc.dg/pr15347.c b/gcc/testsuite/gcc.dg/pr15347.c
new file mode 100644
index 00000000000..b95b0ea2a5e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr15347.c
@@ -0,0 +1,10 @@
+/* { dg-do link } */
+
+extern void link_error (void);
+int
+main ()
+{
+ if ("<12ers" + 1 == 0)
+ link_error ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr35445.c b/gcc/testsuite/gcc.dg/pr35445.c
new file mode 100644
index 00000000000..cef309f41ce
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr35445.c
@@ -0,0 +1,6 @@
+/* PR c/35445 */
+/* { dg-do "compile" } */
+
+extern int i;
+extern int i; /* { dg-message "was here" } */
+int i[] = { 0 }; /* { dg-error "conflicting types" } */
diff --git a/gcc/testsuite/gcc.dg/pr42629.c b/gcc/testsuite/gcc.dg/pr42629.c
index e95d29b544e..4d80068ff39 100644
--- a/gcc/testsuite/gcc.dg/pr42629.c
+++ b/gcc/testsuite/gcc.dg/pr42629.c
@@ -2,6 +2,7 @@
took debug insns into account. */
/* { dg-do compile } */
/* { dg-options "-O1 -fsched-pressure -fschedule-insns -fcompare-debug" } */
+/* { dg-require-effective-target int32plus } */
int lzo_adler32(int adler, char *buf)
{
diff --git a/gcc/testsuite/gcc.dg/pr47917.c b/gcc/testsuite/gcc.dg/pr47917.c
new file mode 100644
index 00000000000..92bcf79662b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr47917.c
@@ -0,0 +1,38 @@
+/* PR middle-end/47917 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+extern int snprintf (char *, __SIZE_TYPE__, const char *, ...);
+extern int memcmp (const void *, const void *, __SIZE_TYPE__);
+extern void abort (void);
+
+char buf1[6], buf2[6], buf3[4], buf4[4];
+int i;
+
+int
+foo (void)
+{
+ int ret = snprintf (buf1, sizeof buf1, "abcde");
+ ret += snprintf (buf2, sizeof buf2, "abcdef") * 16;
+ ret += snprintf (buf3, sizeof buf3, "%s", i++ < 6 ? "abc" : "def") * 256;
+ ret += snprintf (buf4, sizeof buf4, "%s", i++ > 10 ? "abcde" : "defgh") * 4096;
+ return ret;
+}
+
+int
+main (void)
+{
+ if (foo () != 5 + 6 * 16 + 3 * 256 + 5 * 4096)
+ abort ();
+ if (memcmp (buf1, "abcde", 6) != 0
+ || memcmp (buf2, "abcde", 6) != 0
+ || memcmp (buf3, "abc", 4) != 0
+ || memcmp (buf4, "def", 4) != 0
+ || i != 2)
+ abort ();
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "snprintf" 2 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "sprintf" 0 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/pr48134.c b/gcc/testsuite/gcc.dg/pr48134.c
new file mode 100644
index 00000000000..8dc5a6d0d41
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48134.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fstack-check=specific -fno-tree-dse -fno-tree-fre -fno-tree-loop-optimize -g" } */
+
+struct S
+{
+ int w, z;
+};
+struct T
+{
+ struct S s;
+};
+
+int i;
+
+static inline struct S
+bar (struct S x)
+{
+ i++;
+ return x;
+}
+
+int
+foo (struct T t, struct S s)
+{
+ struct S *c = &s;
+ if (i)
+ c = &t.s;
+ t.s.w = 3;
+ s = bar (*c);
+ return t.s.w;
+}
diff --git a/gcc/testsuite/gcc.dg/pr48141.c b/gcc/testsuite/gcc.dg/pr48141.c
new file mode 100644
index 00000000000..006f5cb1440
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48141.c
@@ -0,0 +1,17 @@
+/* PR rtl-optimization/48141 */
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+
+#define A i = 0;
+#define B A A A A A A A A A A
+#define C B B B B B B B B B B
+#define D C C C C C C C C C C
+#define E D D D D D D D D D D
+
+int
+foo (void)
+{
+ volatile int i = 0;
+ E E E E E E E E E E E
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr48144.c b/gcc/testsuite/gcc.dg/pr48144.c
new file mode 100644
index 00000000000..030202d064b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48144.c
@@ -0,0 +1,16 @@
+/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O -frerun-cse-after-loop -fschedule-insns2 -fselective-scheduling2 -fno-tree-ch -funroll-loops --param=max-sched-extend-regions-iters=2 --param=max-sched-region-blocks=15" } */
+extern void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n);
+
+void bar (void *, void *, void *);
+
+void foo
+ (void *p, char *data, unsigned data_len)
+{
+ int buffer[8];
+ int buf2[8];
+ unsigned i;
+ for (i = 0; i + 8 <= data_len; i += 8)
+ bar (p, buffer, data + i);
+ memcpy (buf2, data + i, data_len);
+}
diff --git a/gcc/testsuite/gcc.dg/pr48156.c b/gcc/testsuite/gcc.dg/pr48156.c
new file mode 100644
index 00000000000..7b4d529c41b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48156.c
@@ -0,0 +1,45 @@
+/* PR rtl-optimization/48156 */
+/* { dg-do run } */
+/* { dg-options "-O -fcrossjumping --param min-crossjump-insns=1" } */
+
+extern void abort (void);
+
+static int __attribute__ ((noinline, noclone))
+equals (int s1, int s2)
+{
+ return s1 == s2;
+}
+
+static int __attribute__ ((noinline, noclone))
+bar (void)
+{
+ return 1;
+}
+
+static void __attribute__ ((noinline, noclone))
+baz (int f, int j)
+{
+ if (f != 4 || j != 2)
+ abort ();
+}
+
+void
+foo (int x)
+{
+ int i = 0, j = bar ();
+
+ if (x == 1)
+ i = 2;
+
+ if (j && equals (i, j))
+ baz (8, i);
+ else
+ baz (4, i);
+}
+
+int
+main ()
+{
+ foo (1);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr48203.c b/gcc/testsuite/gcc.dg/pr48203.c
new file mode 100644
index 00000000000..b4b2b084ddb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48203.c
@@ -0,0 +1,51 @@
+/* PR debug/48203 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -g" } */
+
+volatile int v;
+
+void
+foo (long a, long b, long c, long d, long e, long f, long g, long h,
+ long i, long j, long k, long l, long m, long n, long o, long p)
+{
+ long a2 = a;
+ long b2 = b;
+ long c2 = c;
+ long d2 = d;
+ long e2 = e;
+ long f2 = f;
+ long g2 = g;
+ long h2 = h;
+ long i2 = i;
+ long j2 = j;
+ long k2 = k;
+ long l2 = l;
+ long m2 = m;
+ long n2 = n;
+ long o2 = o;
+ long p2 = p;
+ v++;
+}
+
+void
+bar (int a, int b, int c, int d, int e, int f, int g, int h,
+ int i, int j, int k, int l, int m, int n, int o, int p)
+{
+ int a2 = a;
+ int b2 = b;
+ int c2 = c;
+ int d2 = d;
+ int e2 = e;
+ int f2 = f;
+ int g2 = g;
+ int h2 = h;
+ int i2 = i;
+ int j2 = j;
+ int k2 = k;
+ int l2 = l;
+ int m2 = m;
+ int n2 = n;
+ int o2 = o;
+ int p2 = p;
+ v++;
+}
diff --git a/gcc/testsuite/gcc.dg/pr48213.c b/gcc/testsuite/gcc.dg/pr48213.c
new file mode 100644
index 00000000000..cf7d76fa0ea
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48213.c
@@ -0,0 +1,14 @@
+/* PR target/48213 */
+/* { dg-do compile } */
+/* { dg-options "-g -O2" } */
+/* { dg-options "-g -O2 -fpic" { target fpic } } */
+
+struct S { int (*s) (void); };
+int bar (void);
+
+void
+foo (struct S *x)
+{
+ if (x->s != bar)
+ bar ();
+}
diff --git a/gcc/testsuite/gcc.dg/pr48235.c b/gcc/testsuite/gcc.dg/pr48235.c
new file mode 100644
index 00000000000..401624ec629
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48235.c
@@ -0,0 +1,58 @@
+/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target freorder } */
+/* { dg-options "-O -fno-guess-branch-probability -fpeel-loops -freorder-blocks-and-partition -fschedule-insns2 -fsel-sched-pipelining -fselective-scheduling2" } */
+struct intC
+{
+ short x;
+ short y;
+};
+
+int size_x;
+
+static inline int
+TileDiffXY (int x, int y)
+{
+ return (y * size_x) + x;
+}
+
+struct HangarTileTable
+{
+ struct intC ti;
+ int hangar_num;
+};
+
+struct AirportSpec
+{
+ struct HangarTileTable *depot_table;
+ int size;
+};
+
+void Get ();
+struct AirportSpec dummy;
+
+static inline int
+GetRotatedTileFromOffset (int *a, struct intC tidc)
+{
+ if (!*a)
+ Get ();
+ switch (*a)
+ {
+ case 0:
+ return (tidc.y << size_x) + tidc.x;
+ case 1:
+ return TileDiffXY (tidc.y, dummy.size - tidc.x);
+ case 2:
+ return TileDiffXY (tidc.x, dummy.size - tidc.y);
+ case 3:
+ return TileDiffXY (dummy.size - 1, tidc.x);
+ }
+}
+
+int
+GetHangarNum (int *a)
+{
+ int i;
+ for (i = 0; i < dummy.size; i++)
+ if (GetRotatedTileFromOffset (a, dummy.depot_table[i].ti))
+ return dummy.depot_table[i].hangar_num;
+}
diff --git a/gcc/testsuite/gcc.dg/pr48335-1.c b/gcc/testsuite/gcc.dg/pr48335-1.c
new file mode 100644
index 00000000000..7a022eac835
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48335-1.c
@@ -0,0 +1,48 @@
+/* PR middle-end/48335 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-sra" } */
+
+typedef long long T __attribute__((may_alias));
+
+struct S
+{
+ _Complex float d __attribute__((aligned (8)));
+};
+
+void bar (struct S);
+
+void
+f1 (T x)
+{
+ struct S s;
+ *(T *) &s.d = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f2 (int x)
+{
+ struct S s = { .d = 0.0f };
+ *(char *) &s.d = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f3 (int x)
+{
+ struct S s = { .d = 0.0f };
+ ((char *) &s.d)[2] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f4 (int x, int y)
+{
+ struct S s = { .d = 0.0f };
+ ((char *) &s.d)[y] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
diff --git a/gcc/testsuite/gcc.dg/pr48335-2.c b/gcc/testsuite/gcc.dg/pr48335-2.c
new file mode 100644
index 00000000000..a37c0797c3b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48335-2.c
@@ -0,0 +1,58 @@
+/* PR middle-end/48335 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-sra" } */
+
+typedef long long T __attribute__((may_alias, aligned (1)));
+typedef short U __attribute__((may_alias, aligned (1)));
+
+struct S
+{
+ _Complex float d __attribute__((aligned (8)));
+};
+
+void bar (struct S);
+
+void
+f1 (T x)
+{
+ struct S s;
+ *(T *) ((char *) &s.d + 1) = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f2 (int x)
+{
+ struct S s = { .d = 0.0f };
+ ((U *)((char *) &s.d + 1))[0] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f3 (int x)
+{
+ struct S s = { .d = 0.0f };
+ ((U *)((char *) &s.d + 1))[1] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f4 (int x)
+{
+ struct S s = { .d = 0.0f };
+ ((U *)((char *) &s.d + 1))[2] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f5 (int x)
+{
+ struct S s = { .d = 0.0f };
+ ((U *)((char *) &s.d + 1))[3] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
diff --git a/gcc/testsuite/gcc.dg/pr48335-3.c b/gcc/testsuite/gcc.dg/pr48335-3.c
new file mode 100644
index 00000000000..9041f591fff
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48335-3.c
@@ -0,0 +1,48 @@
+/* PR middle-end/48335 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-sra" } */
+
+typedef short U __attribute__((may_alias, aligned (1)));
+
+struct S
+{
+ double d;
+};
+
+void bar (struct S);
+
+void
+f1 (int x)
+{
+ struct S s = { .d = 0.0 };
+ ((U *)((char *) &s.d + 1))[0] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f2 (int x)
+{
+ struct S s = { .d = 0.0 };
+ ((U *)((char *) &s.d + 1))[1] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f3 (int x)
+{
+ struct S s = { .d = 0.0 };
+ ((U *)((char *) &s.d + 1))[2] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f4 (int x)
+{
+ struct S s = { .d = 0.0 };
+ ((U *)((char *) &s.d + 1))[3] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
diff --git a/gcc/testsuite/gcc.dg/pr48335-4.c b/gcc/testsuite/gcc.dg/pr48335-4.c
new file mode 100644
index 00000000000..98e9e1eec73
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48335-4.c
@@ -0,0 +1,39 @@
+/* PR middle-end/48335 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-sra" } */
+
+typedef short U __attribute__((may_alias, aligned (1)));
+
+struct S
+{
+ double d;
+};
+
+void bar (struct S);
+
+void
+f1 (int x)
+{
+ struct S s = { .d = 0.0 };
+ ((U *)((char *) &s.d + 1))[-1] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f2 (int x)
+{
+ struct S s = { .d = 0.0 };
+ ((U *)((char *) &s.d + 1))[-2] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f3 (int x)
+{
+ struct S s = { .d = 0.0 };
+ ((U *)((char *) &s.d + 1))[5] = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
diff --git a/gcc/testsuite/gcc.dg/pr48335-5.c b/gcc/testsuite/gcc.dg/pr48335-5.c
new file mode 100644
index 00000000000..b1895484dc9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48335-5.c
@@ -0,0 +1,38 @@
+/* PR middle-end/48335 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-sra" } */
+
+typedef long long T __attribute__((may_alias));
+
+struct S
+{
+ _Complex float d __attribute__((aligned (8)));
+};
+
+int
+f1 (struct S x)
+{
+ struct S s = x;
+ return *(T *) &s.d;
+}
+
+int
+f2 (struct S x)
+{
+ struct S s = x;
+ return *(char *) &s.d;
+}
+
+int
+f3 (struct S x)
+{
+ struct S s = x;
+ return ((char *) &s.d)[2];
+}
+
+int
+f4 (struct S x, int y)
+{
+ struct S s = x;
+ return ((char *) &s.d)[y];
+}
diff --git a/gcc/testsuite/gcc.dg/pr48335-6.c b/gcc/testsuite/gcc.dg/pr48335-6.c
new file mode 100644
index 00000000000..769130cc4e3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48335-6.c
@@ -0,0 +1,46 @@
+/* PR middle-end/48335 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-sra" } */
+
+typedef long long T __attribute__((may_alias, aligned (1)));
+typedef short U __attribute__((may_alias, aligned (1)));
+
+struct S
+{
+ _Complex float d __attribute__((aligned (8)));
+};
+
+T
+f1 (struct S x)
+{
+ struct S s = x;
+ return *(T *) ((char *) &s.d + 1);
+}
+
+int
+f2 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[0];
+}
+
+int
+f3 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[1];
+}
+
+int
+f4 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[2];
+}
+
+int
+f5 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[3];
+}
diff --git a/gcc/testsuite/gcc.dg/pr48335-7.c b/gcc/testsuite/gcc.dg/pr48335-7.c
new file mode 100644
index 00000000000..ddb15ee6ab9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48335-7.c
@@ -0,0 +1,38 @@
+/* PR middle-end/48335 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-sra" } */
+
+typedef short U __attribute__((may_alias, aligned (1)));
+
+struct S
+{
+ double d;
+};
+
+int
+f1 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[0];
+}
+
+int
+f2 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[1];
+}
+
+int
+f3 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[2];
+}
+
+int
+f4 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[3];
+}
diff --git a/gcc/testsuite/gcc.dg/pr48335-8.c b/gcc/testsuite/gcc.dg/pr48335-8.c
new file mode 100644
index 00000000000..bb06c157f83
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48335-8.c
@@ -0,0 +1,31 @@
+/* PR middle-end/48335 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-sra" } */
+
+typedef short U __attribute__((may_alias, aligned (1)));
+
+struct S
+{
+ double d;
+};
+
+int
+f1 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[-1];
+}
+
+int
+f2 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[-2];
+}
+
+int
+f3 (struct S x)
+{
+ struct S s = x;
+ return ((U *)((char *) &s.d + 1))[5];
+}
diff --git a/gcc/testsuite/gcc.dg/pr48442.c b/gcc/testsuite/gcc.dg/pr48442.c
new file mode 100644
index 00000000000..88e3497b11d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48442.c
@@ -0,0 +1,27 @@
+/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
+/* { dg-options "-Os -fselective-scheduling2 --param max-sched-extend-regions-iters=100" } */
+void f (void)
+{
+ unsigned *a2;
+ int vertex2;
+ int c, x2, dx2, dy2, s2;
+ long m, b;
+ do
+ {
+ if (dx2)
+ dx2 = dx2 % dy2;
+ s2 = (dx2 / dy2);
+ }
+ while (vertex2);
+ for (;;)
+ {
+ c = x2;
+ a2 = 0;
+ if (c)
+ {
+ m = b << (c);
+ *a2 = (*a2 & ~m);
+ }
+ x2 += s2;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/pr48552-1.c b/gcc/testsuite/gcc.dg/pr48552-1.c
new file mode 100644
index 00000000000..5590549a7ce
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48552-1.c
@@ -0,0 +1,53 @@
+/* PR c/48552 */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+struct S;
+
+void
+f1 (void *x)
+{
+ __asm volatile ("" : : "r" (*x)); /* { dg-warning "dereferencing" } */
+} /* { dg-error "invalid use of void expression" "" { target *-*-* } 10 } */
+
+void
+f2 (void *x)
+{
+ __asm volatile ("" : "=r" (*x)); /* { dg-warning "dereferencing" } */
+} /* { dg-error "invalid use of void expression" "" { target *-*-* } 16 } */
+ /* { dg-error "invalid lvalue in asm output 0" "" { target *-*-* } 16 } */
+void
+f3 (void *x)
+{
+ __asm volatile ("" : : "m" (*x)); /* { dg-warning "dereferencing" } */
+}
+
+void
+f4 (void *x)
+{
+ __asm volatile ("" : "=m" (*x)); /* { dg-warning "dereferencing" } */
+}
+
+void
+f5 (void *x)
+{
+ __asm volatile ("" : : "g" (*x)); /* { dg-warning "dereferencing" } */
+} /* { dg-error "invalid use of void expression" "" { target *-*-* } 34 } */
+
+void
+f6 (void *x)
+{
+ __asm volatile ("" : "=g" (*x)); /* { dg-warning "dereferencing" } */
+} /* { dg-error "invalid use of void expression" "" { target *-*-* } 40 } */
+ /* { dg-error "invalid lvalue in asm output 0" "" { target *-*-* } 40 } */
+void
+f7 (struct S *x)
+{
+ __asm volatile ("" : : "r" (*x)); /* { dg-error "dereferencing pointer to incomplete type" } */
+}
+
+void
+f8 (struct S *x)
+{
+ __asm volatile ("" : "=r" (*x)); /* { dg-error "dereferencing pointer to incomplete type" } */
+} /* { dg-error "invalid lvalue in asm output 0" "" { target *-*-* } 52 } */
diff --git a/gcc/testsuite/gcc.dg/pr48552-2.c b/gcc/testsuite/gcc.dg/pr48552-2.c
new file mode 100644
index 00000000000..4408279f8ac
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48552-2.c
@@ -0,0 +1,53 @@
+/* PR c/48552 */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+struct S;
+
+void
+f1 (void *x)
+{
+ __asm ("" : : "r" (*x)); /* { dg-warning "dereferencing" } */
+} /* { dg-error "invalid use of void expression" "" { target *-*-* } 10 } */
+
+void
+f2 (void *x)
+{
+ __asm ("" : "=r" (*x)); /* { dg-warning "dereferencing" } */
+} /* { dg-error "invalid use of void expression" "" { target *-*-* } 16 } */
+ /* { dg-error "invalid lvalue in asm output 0" "" { target *-*-* } 16 } */
+void
+f3 (void *x)
+{
+ __asm ("" : : "m" (*x)); /* { dg-warning "dereferencing" } */
+}
+
+void
+f4 (void *x)
+{
+ __asm ("" : "=m" (*x)); /* { dg-warning "dereferencing" } */
+}
+
+void
+f5 (void *x)
+{
+ __asm ("" : : "g" (*x)); /* { dg-warning "dereferencing" } */
+} /* { dg-error "invalid use of void expression" "" { target *-*-* } 34 } */
+
+void
+f6 (void *x)
+{
+ __asm ("" : "=g" (*x)); /* { dg-warning "dereferencing" } */
+} /* { dg-error "invalid use of void expression" "" { target *-*-* } 40 } */
+ /* { dg-error "invalid lvalue in asm output 0" "" { target *-*-* } 40 } */
+void
+f7 (struct S *x)
+{
+ __asm ("" : : "r" (*x)); /* { dg-error "dereferencing pointer to incomplete type" } */
+}
+
+void
+f8 (struct S *x)
+{
+ __asm ("" : "=r" (*x)); /* { dg-error "dereferencing pointer to incomplete type" } */
+} /* { dg-error "invalid lvalue in asm output 0" "" { target *-*-* } 52 } */
diff --git a/gcc/testsuite/gcc.dg/pr48616.c b/gcc/testsuite/gcc.dg/pr48616.c
new file mode 100644
index 00000000000..6cad235c4b4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48616.c
@@ -0,0 +1,135 @@
+/* PR tree-optimization/48616 */
+/* { dg-do run } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+/* { dg-options "-O2 -ftree-vectorize -fno-common" { target alpha*-dec-osf* hppa*-*-hpux* } } */
+
+extern void abort (void);
+int a[4] __attribute__((aligned (32)));
+int b[4] __attribute__((aligned (32)));
+int c[4] __attribute__((aligned (32)));
+int d[4] __attribute__((aligned (32)));
+int e[4] __attribute__((aligned (32)));
+
+__attribute__((noinline, noclone))
+int
+foo (int x)
+{
+ asm ("" : "+r" (x));
+ return x;
+}
+
+__attribute__((noinline, noclone))
+void
+fn1 (int i)
+{
+ a[0] = b[0] << c[0];
+ a[1] = b[1] << c[1];
+ a[2] = b[2] << c[2];
+ a[3] = b[3] << c[3];
+ if (i)
+ {
+ d[0] = e[0] >> c[0];
+ d[1] = e[1] >> c[1];
+ d[2] = e[2] >> c[2];
+ d[3] = e[3] >> c[3];
+ }
+}
+
+__attribute__((noinline, noclone))
+void
+fn2 (int i)
+{
+ a[0] = b[0] << 1;
+ a[1] = b[1] << 2;
+ a[2] = b[2] << 3;
+ a[3] = b[3] << 4;
+ if (i)
+ {
+ d[0] = e[0] >> 1;
+ d[1] = e[1] >> 2;
+ d[2] = e[2] >> 3;
+ d[3] = e[3] >> 4;
+ }
+}
+
+__attribute__((noinline, noclone))
+void
+fn3 (int i, int j)
+{
+ int x = foo (j);
+ a[0] = b[0] << x;
+ a[1] = b[1] << x;
+ a[2] = b[2] << x;
+ a[3] = b[3] << x;
+ if (i)
+ {
+ d[0] = e[0] >> x;
+ d[1] = e[1] >> x;
+ d[2] = e[2] >> x;
+ d[3] = e[3] >> x;
+ }
+}
+
+__attribute__((noinline, noclone))
+void
+fn4 (int i)
+{
+ a[0] = b[0] << 1;
+ a[1] = b[1] << 1;
+ a[2] = b[2] << 1;
+ a[3] = b[3] << 1;
+ if (i)
+ {
+ d[0] = e[0] >> 1;
+ d[1] = e[1] >> 1;
+ d[2] = e[2] >> 1;
+ d[3] = e[3] >> 1;
+ }
+}
+
+int
+main ()
+{
+ int i;
+ int *t;
+ for (i = 0; i < 4; i++)
+ {
+ b[i] = 32;
+ c[i] = i + 1;
+ e[i] = 32;
+ }
+ asm volatile ("" : : "r" (b) : "memory");
+ asm volatile ("" : : "r" (c) : "memory");
+ asm volatile ("" : "=r" (t) : "0" (d) : "memory");
+ fn1 (t != 0);
+ for (i = 0; i < 4; i++)
+ {
+ if (a[i] != (32 << (i + 1)) || d[i] != (32 >> (i + 1)))
+ abort ();
+ a[i] = 0;
+ d[i] = 0;
+ }
+ fn2 (t != 0);
+ for (i = 0; i < 4; i++)
+ {
+ if (a[i] != (32 << (i + 1)) || d[i] != (32 >> (i + 1)))
+ abort ();
+ a[i] = 0;
+ d[i] = 0;
+ }
+ fn3 (t != 0, t != 0);
+ for (i = 0; i < 4; i++)
+ {
+ if (a[i] != (32 << 1) || d[i] != (32 >> 1))
+ abort ();
+ a[i] = 0;
+ d[i] = 0;
+ }
+ fn4 (t != 0);
+ for (i = 0; i < 4; i++)
+ {
+ if (a[i] != (32 << 1) || d[i] != (32 >> 1))
+ abort ();
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr48685.c b/gcc/testsuite/gcc.dg/pr48685.c
new file mode 100644
index 00000000000..36df0cc5f31
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48685.c
@@ -0,0 +1,11 @@
+/* PR c/48685 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int
+main ()
+{
+ int v = 1;
+ (void) (1 == 2 ? (void) 0 : (v = 0));
+ return v;
+}
diff --git a/gcc/testsuite/gcc.dg/pr48768.c b/gcc/testsuite/gcc.dg/pr48768.c
new file mode 100644
index 00000000000..7d0383e83bc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48768.c
@@ -0,0 +1,38 @@
+/* PR debug/48768 */
+/* { dg-do compile } */
+/* { dg-options "-O -fcompare-debug" } */
+
+int a, b;
+
+int
+bar (void)
+{
+ int i, j = 1;
+ for (i = 0; i != 10; i++)
+ {
+ lab:
+ if (i)
+ {
+ int *k = &j;
+ }
+ else if (j)
+ goto lab;
+ }
+ return 1;
+}
+
+inline int
+foo (int x)
+{
+ unsigned int c = x;
+ int d = x;
+ if (bar ())
+ for (; c; c++)
+ while (x >= 0)
+ if (foo (d) >= 0)
+ {
+ d = bar ();
+ a = b ? b : 1;
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr48774.c b/gcc/testsuite/gcc.dg/pr48774.c
new file mode 100644
index 00000000000..91ce361ccb3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48774.c
@@ -0,0 +1,38 @@
+/* PR target/48774 */
+/* { dg-do run } */
+/* { dg-options "-O2 -funroll-loops" } */
+
+extern void abort (void);
+unsigned long int s[24]
+ = { 12, ~1, 12, ~2, 12, ~4, 12, ~8, 12, ~16, 12, ~32,
+ 12, ~64, 12, ~128, 12, ~256, 12, ~512, 12, ~1024, 12, ~2048 };
+struct { int n; unsigned long *e[12]; } g
+ = { 12, { &s[0], &s[2], &s[4], &s[6], &s[8], &s[10], &s[12], &s[14],
+ &s[16], &s[18], &s[20], &s[22] } };
+int c[12];
+
+__attribute__((noinline, noclone)) void
+foo (void)
+{
+ int i, j;
+ for (i = 0; i < g.n; i++)
+ for (j = 0; j < g.n; j++)
+ {
+ if (i == j && j < g.e[0][0] && (g.e[i][1] & (1UL << j)))
+ abort ();
+ if (j < g.e[0][0] && (g.e[i][1] & (1UL << j)))
+ c[i]++;
+ }
+}
+
+int
+main ()
+{
+ int i;
+ asm volatile ("" : "+m" (s), "+m" (g), "+m" (c));
+ foo ();
+ for (i = 0; i < 12; i++)
+ if (c[i] != 11)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr48837.c b/gcc/testsuite/gcc.dg/pr48837.c
new file mode 100644
index 00000000000..ffc65b9dc8c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48837.c
@@ -0,0 +1,30 @@
+/* PR tree-optimization/48837 */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+void abort (void);
+
+__attribute__((noinline))
+int baz(void)
+{
+ return 1;
+}
+
+inline const int *bar(const int *a, const int *b)
+{
+ return *a ? a : b;
+}
+
+int foo(int a, int b)
+{
+ return a || b ? baz() : foo(*bar(&a, &b), 1) + foo(1, 0);
+}
+
+int main(void)
+{
+ if (foo(0, 0) != 2)
+ abort();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.dg/sibcall-3.c b/gcc/testsuite/gcc.dg/sibcall-3.c
index e8798cc599f..c4460e2e522 100644
--- a/gcc/testsuite/gcc.dg/sibcall-3.c
+++ b/gcc/testsuite/gcc.dg/sibcall-3.c
@@ -5,7 +5,7 @@
Copyright (C) 2002 Free Software Foundation Inc.
Contributed by Hans-Peter Nilsson <hp@bitrange.com> */
-/* { dg-do run { xfail { { arc-*-* avr-*-* cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* m68hc1?-*-* mcore-*-* mn10300-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa*-*-* } || { arm*-*-* && { ! arm32 } } } } } */
+/* { dg-do run { xfail { { cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* mcore-*-* mn10300-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa*-*-* } || { arm*-*-* && { ! arm32 } } } } } */
/* -mlongcall disables sibcall patterns. */
/* { dg-skip-if "" { powerpc*-*-* } { "-mlongcall" } { "" } } */
/* { dg-options "-O2 -foptimize-sibling-calls" } */
diff --git a/gcc/testsuite/gcc.dg/sibcall-4.c b/gcc/testsuite/gcc.dg/sibcall-4.c
index 223c03c1218..4f468f6595e 100644
--- a/gcc/testsuite/gcc.dg/sibcall-4.c
+++ b/gcc/testsuite/gcc.dg/sibcall-4.c
@@ -5,7 +5,7 @@
Copyright (C) 2002 Free Software Foundation Inc.
Contributed by Hans-Peter Nilsson <hp@bitrange.com> */
-/* { dg-do run { xfail { { arc-*-* avr-*-* cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* m68hc1?-*-* mcore-*-* mn10300-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa*-*-* } || { arm*-*-* && { ! arm32 } } } } } */
+/* { dg-do run { xfail { { cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* mcore-*-* mn10300-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa*-*-* } || { arm*-*-* && { ! arm32 } } } } } */
/* -mlongcall disables sibcall patterns. */
/* { dg-skip-if "" { powerpc*-*-* } { "-mlongcall" } { "" } } */
/* { dg-options "-O2 -foptimize-sibling-calls" } */
diff --git a/gcc/testsuite/gcc.dg/slp-1.c b/gcc/testsuite/gcc.dg/slp-1.c
new file mode 100644
index 00000000000..bb352020f97
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/slp-1.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize -fno-vect-cost-model" } */
+
+struct R {
+ double d1;
+ double d2;
+};
+
+struct R foo (struct R arg)
+{
+ struct R ret;
+ ret.d1 = arg.d2 * (0.0 - arg.d1);
+ ret.d2 = ret.d1;
+ return ret;
+}
diff --git a/gcc/testsuite/gcc.dg/stack-layout-1.c b/gcc/testsuite/gcc.dg/stack-layout-1.c
new file mode 100644
index 00000000000..389a4eb051e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/stack-layout-1.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-strict-aliasing -fdump-rtl-expand" } */
+union U {
+ int a;
+ float b;
+};
+struct A {
+ union U u1;
+ char a[100];
+};
+void bar (struct A *);
+void foo ()
+ {
+ {
+ struct A a;
+ bar (&a);
+ }
+ {
+ struct A a;
+ bar (&a);
+ }
+ }
+
+/* { dg-final { scan-rtl-dump-times "Partition" 1 "expand" } } */
+/* { dg-final { cleanup-rtl-dump "expand" } } */
diff --git a/gcc/testsuite/gcc.dg/stack-layout-2.c b/gcc/testsuite/gcc.dg/stack-layout-2.c
new file mode 100644
index 00000000000..5d5b385f675
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/stack-layout-2.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-rtl-expand" } */
+void bar( char *);
+int foo()
+{
+ int i=0;
+ {
+ char a[8000];
+ bar(a);
+ i += a[0];
+ }
+ {
+ char a[8192];
+ char b[32];
+ bar(a);
+ i += a[0];
+ bar(b);
+ i += a[0];
+ }
+ return i;
+}
+/* { dg-final { scan-rtl-dump "size 8192" "expand" } } */
+/* { dg-final { scan-rtl-dump "size 32" "expand" } } */
diff --git a/gcc/testsuite/gcc.dg/stack-usage-1.c b/gcc/testsuite/gcc.dg/stack-usage-1.c
index 1d03a8dc994..321fec74d3a 100644
--- a/gcc/testsuite/gcc.dg/stack-usage-1.c
+++ b/gcc/testsuite/gcc.dg/stack-usage-1.c
@@ -30,9 +30,20 @@
# else
# define SIZE 248
# endif
+#elif defined (__powerpc64__) || defined (__ppc64__) || defined (__POWERPC64__) \
+ || defined (__PPC64__)
+# define SIZE 180
#elif defined (__powerpc__) || defined (__PPC__) || defined (__ppc__) \
|| defined (__POWERPC__) || defined (PPC) || defined (_IBMR2)
-# define SIZE 240
+# if defined (__ALTIVEC__)
+# if defined (__APPLE__)
+# define SIZE 204
+# else
+# define SIZE 220
+# endif
+# else
+# define SIZE 240
+# endif
#elif defined (__AVR__)
# define SIZE 254
#elif defined (__s390x__)
diff --git a/gcc/testsuite/gcc.dg/struct/struct-reorg.exp b/gcc/testsuite/gcc.dg/struct/struct-reorg.exp
deleted file mode 100644
index a18b11d1580..00000000000
--- a/gcc/testsuite/gcc.dg/struct/struct-reorg.exp
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright (C) 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# Test the functionality of programs compiled with profile-directed structure
-# rearrangement using -fprofile-generate followed by -fprofile-use.
-
-load_lib gcc-dg.exp
-load_lib target-supports.exp
-
-set STRUCT_REORG_CFLAGS "-O3 -fipa-struct-reorg -fdump-ipa-all -fwhole-program"
-
-# Initialize `dg'.
-dg-init
-
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/wo_prof_*.c]] "" $STRUCT_REORG_CFLAGS
-
-dg-final
-
-# Some targets don't support tree profiling.
-if { ![check_profiling_available ""] } {
- return
-}
-
-# The procedures in profopt.exp need these parameters.
-set tool gcc
-set prof_ext "gcda"
-
-# Override the list defined in profopt.exp.
-set PROFOPT_OPTIONS [list {}]
-
-if $tracelevel then {
- strace $tracelevel
-}
-
-# Load support procs.
-load_lib profopt.exp
-
-# These are globals used by profopt-execute. The first is options
-# needed to generate profile data, the second is options to use the
-# profile data.
-set common "-O3 -fwhole-program"
-set profile_option [concat $common " -fprofile-generate"]
-set feedback_option [concat $common " -fprofile-use -fipa-struct-reorg -fdump-ipa-all"]
-
-foreach src [lsort [glob -nocomplain $srcdir/$subdir/w_prof_*.c]] {
- # If we're only testing specific files and this isn't one of them, skip it.
- if ![runtest_file_p $runtests $src] then {
- continue
- }
- profopt-execute $src
-}
-
-set feedback_option [concat $feedback_option " --param struct-reorg-cold-struct-ratio=30"]
-
-foreach src [lsort [glob -nocomplain $srcdir/$subdir/w_ratio_*.c]] {
- # If we're only testing specific files and this isn't one of them, skip it.
- if ![runtest_file_p $runtests $src] then {
- continue
- }
- profopt-execute $src
-}
diff --git a/gcc/testsuite/gcc.dg/struct/w_prof_global_array.c b/gcc/testsuite/gcc.dg/struct/w_prof_global_array.c
deleted file mode 100644
index ca3643e43de..00000000000
--- a/gcc/testsuite/gcc.dg/struct/w_prof_global_array.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#define N 1000
-str_t A[N];
-
-int
-main ()
-{
- int i;
-
- for (i = 0; i < N; i++)
- {
- A[i].a = 0;
- }
-
- for (i = 0; i < N; i++)
- if (A[i].a != 0)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index baff45d917d..00000000000
--- a/gcc/testsuite/gcc.dg/struct/w_prof_global_var.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 8000
-#define N 1000
-#else
-#define N (STACK_SIZE/8)
-#endif
-#else
-#define N 1000
-#endif
-
-str_t *p;
-
-int
-main ()
-{
- int i, sum;
-
- p = malloc (N * sizeof (str_t));
- if (p == NULL)
- return 0;
- for (i = 0; i < N; i++)
- p[i].b = i;
-
- for (i = 0; i < N; i++)
- p[i].a = p[i].b + 1;
-
- for (i = 0; i < N; i++)
- if (p[i].a != p[i].b + 1)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 8953264fea1..00000000000
--- a/gcc/testsuite/gcc.dg/struct/w_prof_local_array.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 8000
-#define N 1000
-#else
-#define N (STACK_SIZE/8)
-#endif
-#else
-#define N 1000
-#endif
-
-int
-main ()
-{
- int i;
- str_t A[N];
-
- for (i = 0; i < N; i++)
- {
- A[i].a = 0;
- }
-
- for (i = 0; i < N; i++)
- if (A[i].a != 0)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 9a23f8d53a8..00000000000
--- a/gcc/testsuite/gcc.dg/struct/w_prof_local_var.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 8000
-#define N 1000
-#else
-#define N (STACK_SIZE/8)
-#endif
-#else
-#define N 1000
-#endif
-
-int
-main ()
-{
- int i, sum;
-
- str_t * p = malloc (N * sizeof (str_t));
- if (p == NULL)
- return 0;
- for (i = 0; i < N; i++)
- p[i].b = i;
-
- for (i = 0; i < N; i++)
- p[i].a = p[i].b + 1;
-
- for (i = 0; i < N; i++)
- if (p[i].a != p[i].b + 1)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index b0202399104..00000000000
--- a/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <stdlib.h>
-typedef struct
-{
- int a;
- int b;
-}str_t;
-
-#define N 3
-
-str_t str;
-
-int
-main ()
-{
- int i;
- int res = 1<<(1<<N);
- str.a = 2;
-
- for (i = 0; i < N; i++)
- str.a = str.a * str.a;
-
- if (str.a != res)
- abort ();
-
- /* POSIX ignores all but the 8 low-order bits, but other
- environments may not. */
- return (str.a & 255);
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index e9de98c3b8a..00000000000
--- a/gcc/testsuite/gcc.dg/struct/w_prof_two_strs.c
+++ /dev/null
@@ -1,66 +0,0 @@
-#include <stdlib.h>
-
-typedef struct
-{
- int a;
- float b;
-}str_t1;
-
-typedef struct
-{
- int c;
- float d;
-}str_t2;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 16000
-#define N 1000
-#else
-#define N (STACK_SIZE/16)
-#endif
-#else
-#define N 1000
-#endif
-
-str_t1 *p1;
-str_t2 *p2;
-int num;
-
-void
-foo (void)
-{
- int i;
-
- for (i=0; i < num; i++)
- p2[i].c = 2;
-}
-
-int
-main ()
-{
- int i, r;
-
- r = rand ();
- num = r > N ? N : r;
- p1 = malloc (num * sizeof (str_t1));
- p2 = malloc (num * sizeof (str_t2));
-
- if (p1 == NULL || p2 == NULL)
- return 0;
-
- for (i = 0; i < num; i++)
- p1[i].a = 1;
-
- foo ();
-
- for (i = 0; i < num; i++)
- if (p1[i].a != 1 || p2[i].c != 2)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 3c26e3be7b6..00000000000
--- a/gcc/testsuite/gcc.dg/struct/w_ratio_cold_str.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <stdlib.h>
-typedef struct
-{
- int a;
- int b;
-}str_t1;
-
-typedef struct
-{
- float a;
- float b;
-}str_t2;
-
-#define N1 1000
-#define N2 100
-str_t1 A1[N1];
-str_t2 A2[N2];
-
-int
-main ()
-{
- int i;
-
- for (i = 0; i < N1; i++)
- A1[i].a = 0;
-
- for (i = 0; i < N2; i++)
- A2[i].a = 0;
-
- for (i = 0; i < N1; i++)
- if (A1[i].a != 0)
- abort ();
-
- for (i = 0; i < N2; i++)
- if (A2[i].a != 0)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 5d5e37b4f0e..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_array_field.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct basic
-{
- int a;
- int b[10];
-} type_struct;
-
-type_struct *str1;
-
-int main()
-{
- int i;
-
- str1 = malloc (10 * sizeof (type_struct));
-
- for (i=0; i<=9; i++)
- str1[i].a = str1[i].b[0];
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index efb68be8bdd..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_array_through_pointer.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 8000
-#define N 1000
-#else
-#define N (STACK_SIZE/8)
-#endif
-#else
-#define N 1000
-#endif
-
-int
-main ()
-{
- int i;
- str_t A[N];
- str_t *p = A;
-
- for (i = 0; i < N; i++)
- p[i].a = 0;
-
- for (i = 0; i < N; i++)
- if (p[i].a != 0)
- abort ();
-
- return 0;
-}
-
-/* { 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
deleted file mode 100644
index 77226b449c5..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-
-typedef struct test_struct
-{
- int a;
- int b;
-} type_struct;
-
-typedef type_struct **struct_pointer2;
-
-struct_pointer2 str1;
-
-int main()
-{
- int i, j;
-
- str1 = malloc (2 * sizeof (type_struct *));
-
- for (i = 0; i <= 1; i++)
- str1[i] = malloc (2 * sizeof (type_struct));
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 09668face34..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_empty_str.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* { dg-do run } */
-
-#include <stdlib.h>
-
-struct S { int a; struct V *b; };
-typedef struct { int c; } T;
-typedef struct { int d; int e; } U;
-
-void *
-fn (void *x)
-{
- return x;
-}
-
-int
-foo (struct S *s)
-{
- T x;
-
- T y = *(T *)fn (&x);
- return y.c;
-}
-
-int
-bar (struct S *s)
-{
- U x;
-
- U y = *(U *)fn (&x);
- return y.d + s->a;
-}
-
-int
-main ()
-{
- struct S s;
-
- foo(&s) + bar (&s);
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 0116d819800..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_arg_to_local.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* { dg-do run } */
-
-#include <stdlib.h>
-struct str
-{
- int a;
- float b;
-};
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 8000
-#define N 1000
-#else
-#define N (STACK_SIZE/8)
-#endif
-#else
-#define N 1000
-#endif
-
-int
-foo (struct str * p_str)
-{
- static int sum = 0;
-
- sum = sum + p_str->a;
- return sum;
-}
-
-int
-main ()
-{
- int i, sum;
- struct str * p = malloc (N * sizeof (struct str));
- if (p == NULL)
- return 0;
- for (i = 0; i < N; i++)
- sum = foo (p+i);
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 21a6a7f3a2e..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_return.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* { dg-do run } */
-
-#include <stdlib.h>
-
-struct A {
- int d;
-};
-
-struct A a;
-
-struct A foo ()
-{
- a.d = 5;
- return a;
-}
-
-int
-main ()
-{
- a.d = 0;
- foo ();
-
- if (a.d != 5)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 6da3420f6e8..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_str_init.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- int b;
-}str_t;
-
-#define N 2
-
-str_t A[2] = {{1,1},{2,2}};
-
-int
-main ()
-{
- int i;
-
- for (i = 0; i < N; i++)
- A[i].b = A[i].a;
-
- for (i = 0; i < N; i++)
- if (A[i].b != A[i].a)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index bd03ec42f05..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_array.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#define N 1000
-
-typedef struct
-{
- str_t A[N];
- int c;
-}str_with_substr_t;
-
-str_with_substr_t a;
-
-int
-main ()
-{
- int i;
-
- for (i = 0; i < N; i++)
- a.A[i].b = 0;
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 59e0e48321a..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_pointer.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 16000
-#define N 1000
-#else
-#define N (STACK_SIZE/16)
-#endif
-#else
-#define N 1000
-#endif
-
-typedef struct
-{
- str_t * sub_str;
- int c;
-}str_with_substr_t;
-
-int foo;
-
-int
-main (void)
-{
- int i;
- str_with_substr_t A[N];
- str_t a[N];
-
- for (i=0; i < N; i++)
- A[i].sub_str = &(a[i]);
-
- for (i=0; i < N; i++)
- A[i].sub_str->a = 5;
-
- foo = A[56].sub_str->a;
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index a6b32ddd688..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_escape_substr_value.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 8000
-#define N 1000
-#else
-#define N (STACK_SIZE/8)
-#endif
-#else
-#define N 1000
-#endif
-
-
-typedef struct
-{
- str_t sub_str;
- int c;
-}str_with_substr_t;
-
-int
-main ()
-{
- int i;
- str_with_substr_t A[N];
-
- for (i = 0; i < N; i++)
- A[i].sub_str.a = 5;
-
- for (i = 0; i < N; i++)
- if (A[i].sub_str.a != 5)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index b61e26b1248..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_global_array.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#define N 1000
-str_t A[N];
-
-int
-main ()
-{
- int i;
-
- for (i = 0; i < N; i++)
- {
- A[i].a = 0;
- }
-
- for (i = 0; i < N; i++)
- if (A[i].a != 0)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 39351e072e2..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_global_var.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 8000
-#define N 1000
-#else
-#define N (STACK_SIZE/8)
-#endif
-#else
-#define N 1000
-#endif
-
-str_t *p;
-
-int
-main ()
-{
- int i, sum;
-
- p = malloc (N * sizeof (str_t));
- if (p == NULL)
- return 0;
- for (i = 0; i < N; i++)
- p[i].b = i;
-
- for (i = 0; i < N; i++)
- p[i].b = p[i].a + 1;
-
- for (i = 0; i < N; i++)
- if (p[i].b != p[i].a + 1)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 18d5a734740..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_local_array.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 8000
-#define N 1000
-#else
-#define N (STACK_SIZE/8)
-#endif
-#else
-#define N 1000
-#endif
-
-int
-main ()
-{
- int i;
- str_t A[N];
-
- for (i = 0; i < N; i++)
- {
- A[i].a = 0;
- }
-
- for (i = 0; i < N; i++)
- if (A[i].a != 0)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 26a9dbd7314..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_local_var.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 8000
-#define N 1000
-#else
-#define N (STACK_SIZE/8)
-#endif
-#else
-#define N 1000
-#endif
-
-int
-main ()
-{
- int i, sum;
-
- str_t * p = malloc (N * sizeof (str_t));
- if (p == NULL)
- return 0;
- for (i = 0; i < N; i++)
- p[i].b = i;
-
- for (i = 0; i < N; i++)
- p[i].b = p[i].a + 1;
-
- for (i = 0; i < N; i++)
- if (p[i].b != p[i].a + 1)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 6caadcf1230..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_malloc_size_var.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 8000
-#define N 1000
-#else
-#define N (STACK_SIZE/8)
-#endif
-#else
-#define N 1000
-#endif
-
-int
-main ()
-{
- int i, num;
-
- num = rand();
- num = num > N ? N : num;
- str_t * p = malloc (num * sizeof (str_t));
-
- if (p == 0)
- return 0;
-
- for (i = 0; i < num; i++)
- p[i].b = i;
-
- for (i = 0; i < num; i++)
- p[i].a = p[i].b + 1;
-
- for (i = 0; i < num; i++)
- if (p[i].a != p[i].b + 1)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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_mult_field_peeling.c b/gcc/testsuite/gcc.dg/struct/wo_prof_mult_field_peeling.c
deleted file mode 100644
index 8f116df4d01..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_mult_field_peeling.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- float b;
- int c;
- float d;
-}str_t;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 1600
-#define N 100
-#else
-#define N (STACK_SIZE/16)
-#endif
-#else
-#define N 100
-#endif
-
-int
-main ()
-{
- int i;
- str_t *p = malloc (N * sizeof (str_t));
- if (p == NULL)
- return 0;
- for (i = 0; i < N; i++)
- p[i].a = 5;
-
- for (i = 0; i < N; i++)
- if (p[i].a != 5)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* The structure str_t is erroneously peeled into 4 structures instead of 2. */
-/* { dg-final { scan-ipa-dump "the number of new types is 2" "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
deleted file mode 100644
index 812763d53ff..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- int b;
-}str_t;
-
-#define N 3
-
-str_t str;
-
-int
-main ()
-{
- int i;
- int res = 1<<(1<<N);
- str.a = 2;
-
- for (i = 0; i < N; i++)
- str.a = str.a * str.a;
-
- if (str.a != res)
- abort ();
-
- /* POSIX ignores all but the 8 low-order bits, but other
- environments may not. */
- return (str.a & 255);
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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
deleted file mode 100644
index 313af1080c1..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- int b;
-}str_t;
-
-#define N 3
-
-int
-main ()
-{
- int i;
- int res = 1<<(1<<N);
- str_t str;
-
- str.a = 2;
-
- for (i = 0; i < N; i++)
- str.a = str.a * str.a;
-
- if (str.a != res)
- abort ();
-
- /* POSIX ignores all but the 8 low-order bits, but other
- environments may not. */
- return (str.a & 255);
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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_single_str_pointer.c b/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c
deleted file mode 100644
index bd70dfb6375..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-typedef struct
-{
- int a;
- int *b;
-}str_t;
-
-#define N 3
-
-str_t *p;
-
-int
-main ()
-{
- str_t str;
- int i;
- int res = 1 << (1 << N);
- p = &str;
- str.a = 2;
-
- p->b = &(p->a);
-
- for (i=0; i < N; i++)
- p->a = *(p->b)*(*(p->b));
-
- if (p->a != res)
- abort ();
-
- /* POSIX ignores all but the 8 low-order bits, but other
- environments may not. */
- return (p->a & 255);
-}
-
-/*--------------------------------------------------------------------------*/
-/* The access &(p->a) is handled incorrectly in ipa-struct-reorg.c. */
-/* { 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_two_strs.c b/gcc/testsuite/gcc.dg/struct/wo_prof_two_strs.c
deleted file mode 100644
index 92da94d2923..00000000000
--- a/gcc/testsuite/gcc.dg/struct/wo_prof_two_strs.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* { dg-do compile } */
-/* { dg-do run } */
-
-#include <stdlib.h>
-
-typedef struct
-{
- int a;
- float b;
-}str_t1;
-
-typedef struct
-{
- int c;
- float d;
-}str_t2;
-
-#ifdef STACK_SIZE
-#if STACK_SIZE > 16000
-#define N 1000
-#else
-#define N (STACK_SIZE/16)
-#endif
-#else
-#define N 1000
-#endif
-
-str_t1 *p1;
-str_t2 *p2;
-int num;
-
-void
-foo (void)
-{
- int i;
-
- for (i=0; i < num; i++)
- p2[i].c = 2;
-}
-
-int
-main ()
-{
- int i, r;
-
- r = rand ();
- num = r > N ? N : r;
- p1 = malloc (num * sizeof (str_t1));
- p2 = malloc (num * sizeof (str_t2));
-
- if (p1 == NULL || p2 == NULL)
- return 0;
-
- for (i = 0; i < num; i++)
- p1[i].a = 1;
-
- foo ();
-
- for (i = 0; i < num; i++)
- if (p1[i].a != 1 || p2[i].c != 2)
- abort ();
-
- return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-/* { 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/20090618-1.c b/gcc/testsuite/gcc.dg/torture/20090618-1.c
index 8b601d62c79..60eb900785e 100644
--- a/gcc/testsuite/gcc.dg/torture/20090618-1.c
+++ b/gcc/testsuite/gcc.dg/torture/20090618-1.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
+/* { dg-skip-if "PR middle-end/47405" { mips-sgi-irix* } } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/torture/pr37868.c b/gcc/testsuite/gcc.dg/torture/pr37868.c
index 1f89dff2fff..c5df71b5aa5 100644
--- a/gcc/testsuite/gcc.dg/torture/pr37868.c
+++ b/gcc/testsuite/gcc.dg/torture/pr37868.c
@@ -1,6 +1,6 @@
/* { dg-do run } */
/* { dg-options "-fno-strict-aliasing" } */
-/* { dg-skip-if "unaligned access" { sparc*-*-* } "*" "" } */
+/* { dg-skip-if "unaligned access" { sparc*-*-* sh*-*-* } "*" "" } */
extern void abort (void);
#if (__SIZEOF_INT__ <= 2)
diff --git a/gcc/testsuite/gcc.dg/torture/pr43165.c b/gcc/testsuite/gcc.dg/torture/pr43165.c
index 637fb464625..991c3d118b9 100644
--- a/gcc/testsuite/gcc.dg/torture/pr43165.c
+++ b/gcc/testsuite/gcc.dg/torture/pr43165.c
@@ -1,5 +1,6 @@
/* PR debug/43165 */
/* { dg-options "-g" } */
+/* { dg-require-effective-target int32plus } */
struct __attribute__((packed)) S
{
diff --git a/gcc/testsuite/gcc.dg/torture/pr47228.c b/gcc/testsuite/gcc.dg/torture/pr47228.c
index 5bc9f0ad511..4ee7cab4dcd 100644
--- a/gcc/testsuite/gcc.dg/torture/pr47228.c
+++ b/gcc/testsuite/gcc.dg/torture/pr47228.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-require-effective-target int32plus } */
struct S4
{
diff --git a/gcc/testsuite/gcc.dg/torture/pr47725.c b/gcc/testsuite/gcc.dg/torture/pr47725.c
new file mode 100644
index 00000000000..03d5d36c321
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr47725.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+
+struct _Unwind_Context
+{
+ void *reg[17];
+ void *ra;
+};
+extern void bar (struct _Unwind_Context *);
+void
+__frame_state_for (void *pc_target)
+{
+ struct _Unwind_Context context;
+ __builtin_memset (&context, 0, sizeof (struct _Unwind_Context));
+ context.ra = pc_target;
+ bar (&context);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr47917.c b/gcc/testsuite/gcc.dg/torture/pr47917.c
new file mode 100644
index 00000000000..831305d601a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr47917.c
@@ -0,0 +1,40 @@
+/* { dg-do run } */
+/* { dg-options "-std=c99" } */
+/* { dg-options "-std=c99 -D_ISO_C_SOURCE=19990L" { target alpha*-dec-osf5* } } */
+/* { dg-options "-std=c99 -D_XOPEN_SOURCE=500" { target mips-sgi-irix6.5 *-*-solaris2.[89] } } */
+/* { dg-options "-std=gnu99" { target *-*-hpux* } } */
+/* { dg-xfail-if "no C99 snprintf function" { *-*-hpux10* } } */
+/* { dg-xfail-run-if "non-conforming C99 snprintf" { *-*-hpux11.[012]* } } */
+
+/* PR middle-end/47917 */
+
+#include <stdio.h>
+extern int memcmp (const void *, const void *, __SIZE_TYPE__);
+extern void abort (void);
+
+char buf1[6], buf2[6], buf3[4], buf4[4];
+int i;
+
+int
+foo (void)
+{
+ int ret = snprintf (buf1, sizeof buf1, "abcde");
+ ret += snprintf (buf2, sizeof buf2, "abcdef") * 16;
+ ret += snprintf (buf3, sizeof buf3, "%s", i++ < 6 ? "abc" : "def") * 256;
+ ret += snprintf (buf4, sizeof buf4, "%s", i++ > 10 ? "abcde" : "defgh") * 4096;
+ return ret;
+}
+
+int
+main (void)
+{
+ if (foo () != 5 + 6 * 16 + 3 * 256 + 5 * 4096)
+ abort ();
+ if (memcmp (buf1, "abcde", 6) != 0
+ || memcmp (buf2, "abcde", 6) != 0
+ || memcmp (buf3, "abc", 4) != 0
+ || memcmp (buf4, "def", 4) != 0
+ || i != 2)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr48146.c b/gcc/testsuite/gcc.dg/torture/pr48146.c
new file mode 100644
index 00000000000..c208325311c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr48146.c
@@ -0,0 +1,35 @@
+/* { dg-do compile } */
+
+static unsigned char
+safe_sub_func_int_s_s (int si1, unsigned char si2)
+{
+ return si1 ^ si2 & -si2 ^ si2 ? : si1 - si2;
+}
+
+int g_2[10] = {
+ 0x90AC204EL
+};
+
+volatile unsigned char g_39;
+
+unsigned char
+func_67 (unsigned short p_68)
+{
+ unsigned char l_92;
+ unsigned char l_74;
+ int *l = &g_2[6];
+lbl_90:*l ^= 1;
+ if (p_68)
+ goto lbl_93;
+ for (l_74 = 0;; l_74 = safe_sub_func_int_s_s (l_74, 1))
+ {
+ if (l_74)
+ goto lbl_90;
+lbl_93:l_92 ^= 0 != &g_39;
+ if (0)
+ {
+ }
+ else
+ *l = 1;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr48343.c b/gcc/testsuite/gcc.dg/torture/pr48343.c
new file mode 100644
index 00000000000..e56b3a3dae3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr48343.c
@@ -0,0 +1,19 @@
+/* PR debug/48343 */
+/* { dg-do compile } */
+/* { dg-options "-fcompare-debug" } */
+
+void foo (unsigned char *, unsigned char *);
+
+void
+test (unsigned int x, int y)
+{
+ unsigned int i, j = 0, k;
+ unsigned char s[256], t[64];
+ foo (s, t);
+ t[0] = y;
+ for (i = 0; i < 256; i++)
+ {
+ j = (j + s[i] + t[i % x]) & 0xff;
+ k = i; i = j; j = k;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr48694-1.c b/gcc/testsuite/gcc.dg/torture/pr48694-1.c
new file mode 100644
index 00000000000..810366bc8b4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr48694-1.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+
+extern volatile int g_89[5][9];
+extern int g, *gp;
+void func_64()
+{
+ int i;
+ for (i = 0; i < 1; )
+ {
+ for (g = 0; g < 1; )
+ return;
+ gp = (int *)&g_89[g][0];
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr48694-2.c b/gcc/testsuite/gcc.dg/torture/pr48694-2.c
new file mode 100644
index 00000000000..4791ac3f70c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr48694-2.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+
+extern volatile int g_4[1][4];
+extern int g_7;
+void modify(int *);
+void func_2()
+{
+ int l_46 = 4;
+ if (g_7)
+ modify(&l_46);
+ else
+ {
+ int i;
+ for (i = 0; i != 5; i += 1)
+ {
+ volatile int *vp = &g_4[0][l_46];
+ *vp = 0;
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr48731.c b/gcc/testsuite/gcc.dg/torture/pr48731.c
new file mode 100644
index 00000000000..74b77f67c52
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr48731.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+
+#include <stdarg.h>
+
+int blah(int a, ...)
+{
+ va_list va;
+ va_start(va,a);
+ if (a == 0)
+ return -1;
+ else
+ {
+ int i;
+ for (i = 0; i < a; i++)
+ va_arg(va,int);
+ return va_arg(va,int);
+ }
+}
+
+__attribute((flatten))
+int blah2(int b, int c)
+{
+ return blah(2, b, c);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr48822.c b/gcc/testsuite/gcc.dg/torture/pr48822.c
new file mode 100644
index 00000000000..b619f369b4f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr48822.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+
+void foo (int *, int *);
+int bar ()
+{
+ int a = 0;
+ int b = 0;
+ if (b != 0)
+ {
+ int ax = a;
+ int bx = b;
+ while (bx != 0)
+ {
+ int tem = ax % bx;
+ ax = bx;
+ bx = tem;
+ }
+ }
+ foo (&a, &b);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c b/gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c
index bdb2acb0464..5dc041b0edd 100644
--- a/gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c
+++ b/gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-fno-tree-sra -fdump-tree-alias" } */
+/* { dg-options "-fdump-tree-ealias" } */
/* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
struct X
@@ -12,10 +12,11 @@ struct X
} y;
};
int i;
-static int
+static int __attribute__((always_inline))
foo (struct X *x)
{
struct Y y = x->y;
+ /* In the inlined instance the dereferenced pointer needs to point to i. */
*y.p = 0;
i = 1;
return *y.p;
@@ -30,5 +31,5 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump "points-to vars: { i }" "alias" } } */
-/* { dg-final { cleanup-tree-dump "alias" } } */
+/* { dg-final { scan-tree-dump "points-to vars: { i }" "ealias" } } */
+/* { dg-final { cleanup-tree-dump "ealias" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
index 08ca95d765c..d198c9a97f9 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
@@ -1,8 +1,8 @@
/* { dg-do run } */
+extern void exit (int);
#if !defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES)
extern void abort (void);
-extern void exit (int);
int s(i){if(i>0){__label__ l1;int f(int i){if(i==2)goto l1;return 0;}return f(i);l1:;}return 1;}
int x(){return s(0)==1&&s(1)==0&&s(2)==1;}
int main(){if(x()!=1)abort();exit(0);}
diff --git a/gcc/testsuite/gcc.dg/torture/va-arg-25.c b/gcc/testsuite/gcc.dg/torture/va-arg-25.c
index 8496460d28c..8c0da549d08 100644
--- a/gcc/testsuite/gcc.dg/torture/va-arg-25.c
+++ b/gcc/testsuite/gcc.dg/torture/va-arg-25.c
@@ -3,6 +3,8 @@
/* { dg-do run } */
/* { dg-options "-msse" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-require-effective-target sse_runtime { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-options "-mabi=altivec -maltivec" { target { powerpc-*-* powerpc64-*-* } } } */
+/* { dg-require-effective-target vmx_hw { target { powerpc-*-* powerpc64--*-* } } } */
#include <stdarg.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.dg/torture/vector-1.c b/gcc/testsuite/gcc.dg/torture/vector-1.c
index 9ab78aaf53e..205fee6d6de 100644
--- a/gcc/testsuite/gcc.dg/torture/vector-1.c
+++ b/gcc/testsuite/gcc.dg/torture/vector-1.c
@@ -3,6 +3,8 @@
/* { dg-do run } */
/* { dg-options "-msse" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-require-effective-target sse_runtime { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-options "-mabi=altivec" { target { powerpc-*-* powerpc64-*-* } } } */
+/* { dg-require-effective-target vmx_hw { target { powerpc-*-* powerpc64--*-* } } } */
#define vector __attribute__((vector_size(16) ))
diff --git a/gcc/testsuite/gcc.dg/torture/vector-2.c b/gcc/testsuite/gcc.dg/torture/vector-2.c
index bff9f82cdad..6cc56cfae78 100644
--- a/gcc/testsuite/gcc.dg/torture/vector-2.c
+++ b/gcc/testsuite/gcc.dg/torture/vector-2.c
@@ -3,6 +3,8 @@
/* { dg-do run } */
/* { dg-options "-msse" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-require-effective-target sse_runtime { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-options "-mabi=altivec" { target { powerpc-*-* powerpc64-*-* } } } */
+/* { dg-require-effective-target vmx_hw { target { powerpc-*-* powerpc64--*-* } } } */
#define vector __attribute__((vector_size(16) ))
diff --git a/gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c b/gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c
new file mode 100644
index 00000000000..316cfc75734
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c
@@ -0,0 +1,25 @@
+/* { dg-options "-O2 -w" } */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef _PROFILE_USE
+int foo(int x) {
+ return 3 * x;
+}
+#else
+int foo(int x) {
+ return 3 * x;
+}
+#endif
+
+int x = 1000;
+
+int main(int argc, char *argv[]) {
+ int i;
+ int sum = 0;
+ for (i = 0; i < x; i++)
+ sum += i;
+ printf("%d\n", sum);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c b/gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c
index f96255d0c19..97c91de8d61 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c
@@ -26,7 +26,7 @@ main ()
/* { dg-final-use { scan-ipa-dump "Mod power of 2 transformation on insn" "tree_profile_ipa" } } */
/* This is part of code checking that n is power of 2, so we are sure that the transformation
didn't get optimized out. */
-/* { dg-final-use { scan-tree-dump "n_\[0-9\]* \\+ 0xffff" "optimized"} } */
+/* { dg-final-use { scan-tree-dump "n_\[0-9\]* \\+ (4294967295|0x0*ffffffff)" "optimized"} } */
/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
/* { dg-final-use { cleanup-tree-dump "optimized" } } */
/* { dg-final-use { cleanup-ipa-dump "tree_profile_ipa" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c
index 6007949546e..5e6828b6f4f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -fstrict-aliasing -fdump-tree-fre" } */
+/* { dg-options "-O1 -fstrict-aliasing -fdump-tree-fre1" } */
__extension__ typedef __SIZE_TYPE__ size_t;
extern void *xmalloc (size_t) __attribute__ ((__malloc__));
@@ -34,5 +34,5 @@ find_unreachable_blocks (void)
able to determine that modifying e->dest->flags does not
modify e or e->dest if we can assert strict-aliasing rules.
The net result is that we only need one load of e->dest. */
-/* { dg-final { scan-tree-dump-times "->dest" 1 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "->dest" 1 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c b/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c
index e86acbc1900..69c2e23c915 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-fre-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fdump-tree-fre1-details -fdump-tree-optimized" } */
struct A {
int i;
@@ -76,15 +76,15 @@ int test8 (struct A *p, int *q)
return *q;
}
-/* { dg-final { scan-tree-dump "with 0" "fre" } } */
-/* { dg-final { scan-tree-dump "with 1" "fre" } } */
-/* { dg-final { scan-tree-dump "with 3" "fre" } } */
-/* { dg-final { scan-tree-dump "with 4" "fre" } } */
-/* { dg-final { scan-tree-dump "with 5" "fre" } } */
-/* { dg-final { scan-tree-dump "with 8" "fre" } } */
+/* { dg-final { scan-tree-dump "with 0" "fre1" } } */
+/* { dg-final { scan-tree-dump "with 1" "fre1" } } */
+/* { dg-final { scan-tree-dump "with 3" "fre1" } } */
+/* { dg-final { scan-tree-dump "with 4" "fre1" } } */
+/* { dg-final { scan-tree-dump "with 5" "fre1" } } */
+/* { dg-final { scan-tree-dump "with 8" "fre1" } } */
/* { dg-final { scan-tree-dump-not "return 2;" "optimized" } } */
/* { dg-final { scan-tree-dump-not "return 6;" "optimized" } } */
/* { dg-final { scan-tree-dump-not "return 7;" "optimized" } } */
/* { dg-final { scan-tree-dump-not "return -1;" "optimized" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c b/gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c
new file mode 100644
index 00000000000..64fef27874a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c
@@ -0,0 +1,61 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-strict-aliasing -fdump-tree-optimized" } */
+
+typedef unsigned u32;
+typedef unsigned short u16;
+typedef unsigned char u8;
+struct biosregs {
+ union {
+ struct {
+ u32 edi;
+ u32 esi;
+ u32 ebp;
+ u32 _esp;
+ u32 ebx;
+ u32 edx;
+ u32 ecx;
+ u32 eax;
+ u32 _fsgs;
+ u32 _dses;
+ u32 eflags;
+ };
+ struct {
+ u16 di, hdi;
+ u16 si, hsi;
+ u16 bp, hbp;
+ u16 _sp, _hsp;
+ u16 bx, hbx;
+ u16 dx, hdx;
+ u16 cx, hcx;
+ u16 ax, hax;
+ u16 gs, fs;
+ u16 es, ds;
+ u16 flags, hflags;
+ };
+ struct {
+ u8 dil, dih, edi2, edi3;
+ u8 sil, sih, esi2, esi3;
+ u8 bpl, bph, ebp2, ebp3;
+ u8 _spl, _sph, _esp2, _esp3;
+ u8 bl, bh, ebx2, ebx3;
+ u8 dl, dh, edx2, edx3;
+ u8 cl, ch, ecx2, ecx3;
+ u8 al, ah, eax2, eax3;
+ };
+ };
+};
+void initregs(struct biosregs *regs);
+void intcall(u8 int_no, const struct biosregs *ireg, struct biosregs *oreg);
+static u32 *const gp = (u32*) 0x32;
+void keyboard_set_repeat(void)
+{
+ struct biosregs ireg;
+ *gp = 10;
+ initregs(&ireg);
+ ireg.ax = 0x0305;
+ intcall(0x16, &ireg, ((void *)0));
+}
+
+/* { dg-final { scan-tree-dump-times "ireg.*ax" 1 "optimized"} } */
+
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/complex-6.c b/gcc/testsuite/gcc.dg/tree-ssa/complex-6.c
new file mode 100644
index 00000000000..01d1fd1195d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/complex-6.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-optimized" } */
+
+float
+quantum_real(float _Complex a)
+{
+ float *p = (float *) &a;
+ return p[0];
+}
+float
+quantum_imag(float _Complex a)
+{
+ float *p = (float *) &a;
+ return p[1];
+}
+float
+quantum_foo(float _Complex a)
+{
+ float *p = (float *) &a;
+ return p[2];
+}
+
+/* { dg-final { scan-tree-dump-times "REALPART_EXPR" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "IMAGPART_EXPR" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c b/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c
index a3c6a2ece88..d74022e4b52 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c
@@ -11,6 +11,6 @@ int foo(char *b)
/* Folding should have determined that the two addresses were
not identical and thus collapsed the function into a trivial
"return 0". */
-/* { dg-final { scan-tree-dump-times "return 0" 1 "original" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "return 0" 1 "original" } } */
/* { dg-final { cleanup-tree-dump "original" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c b/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c
index fa64ae14cc4..3cfe44d1bd2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-fre" } */
+/* { dg-options "-O1 -fdump-tree-fre1" } */
void
arf ()
@@ -7,5 +7,5 @@ arf ()
if (""[0] == 0)
blah ();
}
-/* { dg-final { scan-tree-dump-times "= 0;" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "= 0;" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c
index b46b8ece816..5ca8060c8b3 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-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
int b;
unsigned a;
@@ -18,5 +18,5 @@ void test2(void)
conversion to int. FRE should then be able to replace
the rhs of the store to b by 1. */
-/* { dg-final { scan-tree-dump "Replaced\[^\\n\]*with 1" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced\[^\\n\]*with 1" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c
index cc583e293f8..d02a62d3d34 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-fre -W -Wall -fno-early-inlining" } */
+/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-fre1 -W -Wall -fno-early-inlining" } */
int b;
unsigned a;
@@ -16,6 +16,6 @@ void f(void)
/* We should have converted the assignments to two = 1. FRE does this. */
/* { dg-final { scan-tree-dump-times " = 1" 2 "optimized"} } */
-/* { dg-final { scan-tree-dump-not " = a;" "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-not " = a;" "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c b/gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c
index 599d1f1efd5..c6c142b4eaf 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c
@@ -1,5 +1,5 @@
-/* { dg-options "-O2 -fdump-tree-fre -w" } */
-/* { dg-options "-O2 -fdump-tree-fre -w -msse" { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-options "-O2 -fdump-tree-fre1 -w" } */
+/* { dg-options "-O2 -fdump-tree-fre1 -w -msse" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-do compile } */
#define vector __attribute__((vector_size(sizeof(int)*4) ))
struct s { vector int i; };
@@ -32,6 +32,6 @@ void a2 (struct s1 sv, int i)
g(&sv, *(float*)&sv.i);
}
-/* { dg-final { scan-tree-dump-times "sv_\[0-9\]\\\(D\\\)->i" 2 "fre" } } */
-/* { dg-final { scan-tree-dump-times "sv.i" 2 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "sv_\[0-9\]\\\(D\\\)->i" 2 "fre1" } } */
+/* { dg-final { scan-tree-dump-times "sv.i" 2 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/inline-10.c b/gcc/testsuite/gcc.dg/tree-ssa/inline-10.c
new file mode 100644
index 00000000000..1d7aeef2aa0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/inline-10.c
@@ -0,0 +1,38 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -fdump-tree-optimized -fno-partial-inlining" } */
+void do_something1(void);
+void do_something2(void);
+void do_something3(void);
+void do_something4(void);
+void do_something5(void);
+void do_something_big(int);
+
+int do_something (int size)
+{
+ if (__builtin_constant_p (size))
+ switch (size)
+ {
+ case 1:do_something1 (); break;
+ case 2:do_something2 (); break;
+ case 5:do_something1 (); do_something1 ();
+ case 3:do_something3 (); break;
+ case 4:do_something4 (); break;
+ }
+ else
+ do_something_big (size);
+}
+extern int n;
+main()
+{
+ do_something (2);
+ do_something (3);
+ do_something (5);
+ do_something (70);
+}
+/* All calls should be inlined, except for do_something (5). */
+/* { dg-final { scan-tree-dump-not "do_something1" "optimized" } } */
+/* { dg-final { scan-tree-dump-times "do_something2" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "do_something3" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "do_something \\(5\\)" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-not "do_something \\(70\\)" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/inline-8.c b/gcc/testsuite/gcc.dg/tree-ssa/inline-8.c
new file mode 100644
index 00000000000..3215473ec1a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/inline-8.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-O -finline-small-functions --param early-inlining-insns=0 -fdump-tree-einline" } */
+
+int foo0();
+void bar0() { foo0(); }
+void foobar0() { bar0(); }
+
+void foo1();
+void bar1() { foo1(); }
+void foobar1() { bar1(); }
+
+#if 0
+int foo2();
+int bar2() { return foo2(); }
+/* The size estimate fails to see that inlining the call statement in bar2
+ will make its lhs dead. */
+void foobar2() { bar2(); }
+#endif
+
+int foo3();
+int bar3() { return foo3(); }
+int foobar3() { return bar3(); }
+
+int bar4() { return 0; }
+void foobar4() { bar4(); }
+
+int bar5() { return 0; }
+int foobar5() { return bar5(); }
+
+/* { dg-final { scan-tree-dump-times "Inlining" 5 "einline" } } */
+/* { dg-final { cleanup-tree-dump "einline" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/inline-9.c b/gcc/testsuite/gcc.dg/tree-ssa/inline-9.c
new file mode 100644
index 00000000000..678dd852db6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/inline-9.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -fdump-tree-optimized -fno-partial-inlining" } */
+
+/* When optimizing for size, t should be inlined when it expands to one call only. */
+extern int q(int);
+int t(int a)
+{
+ if (a > 12)
+ {
+ q(a+5);
+ q(a+5);
+ }
+ else
+ q(a+10);
+}
+
+main()
+{
+ t(5);
+ t(20);
+}
+/* { dg-final { scan-tree-dump-times "q \\(15\\)" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "t \\(20\\)" 1 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c b/gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c
new file mode 100644
index 00000000000..b102a7a52e7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized -fno-strict-aliasing" } */
+/* Test with fixed address */
+static int *foo = (int *) (unsigned long) 0x7800000;
+
+int func(void) __attribute__ ((noinline));
+
+extern int bar(void);
+
+int func(void)
+{
+ if (*foo) {
+ return 1;
+ }
+ return 0;
+
+}
+
+int foobar(void)
+{
+
+ if (func()) {
+ *foo = 1;
+ }
+ return func();
+}
+
+/* { dg-final { scan-tree-dump-times "= func" 2 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
index e6130bbe7bd..6fc2a57a9f2 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 -fdump-tree-fre" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -fdump-tree-fre1" } */
#include <stddef.h>
union tree_node;
@@ -73,8 +73,8 @@ main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-not "= unexpanded_var_list;" "fre" } } */
+/* { dg-final { scan-tree-dump-not "= unexpanded_var_list;" "fre1" } } */
/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
/* { dg-final { scan-tree-dump-times "Insertions: 2" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
/* { dg-final { cleanup-tree-dump "pre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c b/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c
index eb360551561..20608156f3c 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c
@@ -18,5 +18,5 @@ int foo(const struct XX* r) {
return 1;
}
-/* { dg-final { scan-tree-dump-times "&" 0 "forwprop2" } } */
+/* { dg-final { scan-tree-dump-times "= &" 0 "forwprop2" } } */
/* { dg-final { cleanup-tree-dump "forwprop2" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c b/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c
index fc33d74e9ff..dcfa131510c 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
int
foo (int *p)
@@ -9,5 +9,5 @@ foo (int *p)
}
/* The store to *p should be propagated to the load statement. */
-/* { dg-final { scan-tree-dump "Replaced \\\*p_.\\\(D\\\) with 0" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*p_.\\\(D\\\) with 0" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c b/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c
deleted file mode 100644
index fd74af8d6a1..00000000000
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-details" } */
-struct a
-{
- int length;
- int a1[256];
-};
-
-void *malloc(__SIZE_TYPE__ size) __attribute__((malloc));
-
-int f(void)
-{
- struct a *a = malloc(sizeof(struct a));
- return a->length;
-}
-/* { dg-final { scan-tree-dump-times "Variable: HEAP" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr38699.c b/gcc/testsuite/gcc.dg/tree-ssa/pr38699.c
index 6845324e41a..21b33513061 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr38699.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr38699.c
@@ -17,6 +17,7 @@
#define PORTC _SFR_IO8(0x15)
#define PORTD _SFR_IO8(0x12)
+
static void delay_wait_us( unsigned char timeout ) {
__asm__ __volatile__ ("wdr");
@@ -27,8 +28,12 @@ static void delay_wait_us( unsigned char timeout ) {
while(!(TIFR & (1 << (TOV0))));
}
+/* The original testcase was multiplying by 1000. Gcc is now smart enough
+ to work out that actual parameter is 5000 that is not what testcase was
+ about. Obstructate the code somewhat then. */
+int a;
static void delay_wait_us_ms( unsigned char timeout ) {
- delay_wait_us( timeout * 1000 );
+ delay_wait_us( timeout * a );
}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr45144.c b/gcc/testsuite/gcc.dg/tree-ssa/pr45144.c
index 1e0dabdee8b..85b2b159766 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr45144.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr45144.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-require-effective-target int32plus } */
void baz (unsigned);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr46076.c b/gcc/testsuite/gcc.dg/tree-ssa/pr46076.c
index e9dc434ece0..a2777a604b9 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr46076.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr46076.c
@@ -1,7 +1,7 @@
/* { dg-do link } */
/* { dg-options "-O2" } */
-extern void link_error (void) { /* XFAIL */ }
+extern void link_error (void);
typedef unsigned char(*Calculable)(void);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c b/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c
index 2cf245460ee..8120dad7fe9 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c
@@ -3,24 +3,26 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
-void blas (char xxx);
+void blas (signed char xxx);
void blau (unsigned char xxx);
void tst(void)
{
unsigned i;
- for (i = 0; i < 128; i++) /* This cast to char has to be preserved. */
- blas ((char) i);
- for (i = 0; i < 127; i++) /* And this one does not. */
- blas ((char) i);
- for (i = 0; i < 255; i++) /* This cast is not necessary. */
+ for (i = 0; i < 129; i++) /* This truncation to char has to be preserved. */
+ blas ((signed char) i);
+ for (i = 0; i < 128; i++) /* This one is not necessary, but nothing eliminates it. */
+ blas ((signed char) i);
+ for (i = 0; i < 127; i++) /* This one is not necessary, IVOPTS eliminates it. */
+ blas ((signed char) i);
+ for (i = 0; i < 256; i++) /* This one is not necessary, VRP eliminates it. */
+ blau ((unsigned char) i);
+ for (i = 0; i < 257; i++) /* This one is necessary. */
blau ((unsigned char) i);
- for (i = 0; i < 256; i++)
- blau ((unsigned char) i); /* This one is necessary. */
}
-/* { dg-final { scan-tree-dump-times "= \\(unsigned char\\)" 1 "optimized" } } */
-/* { dg-final { scan-tree-dump-times "= \\(char\\)" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "& 255" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "= \\(signed char\\)" 2 "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c
index 7d769ae176a..aece3c7cdc7 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c
@@ -18,7 +18,7 @@ int bar(void)
return ((struct Foo *)p)->i;
}
-const struct Foo g;
+extern const struct Foo g;
int foobar(void)
{
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-19.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-19.c
index ab4182246a3..c67373f017e 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-19.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-19.c
@@ -12,5 +12,5 @@ int g()
return *i; /* This should be turned into a.i */
}
-/* { dg-final { scan-tree-dump "= a.i;" "ccp1" } } */
+/* { dg-final { scan-tree-dump "= MEM\\\[\\\(int \\\*\\\)&a\\\];" "ccp1" } } */
/* { dg-final { cleanup-tree-dump "ccp1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c
index 89118a62621..261880cc240 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-cddce1" } */
+/* { dg-options "-O -fno-tree-fre -fdump-tree-cddce1" } */
int foo(int b)
{
@@ -14,5 +14,7 @@ int foo(int b)
return a[2] + b;
}
+/* Verify DCE removes all accesses to a but the last store and the
+ read from a[2]. */
/* { dg-final { scan-tree-dump-times "a\\\[\[^\n\]\\\]" 2 "cddce1" } } */
/* { dg-final { cleanup-tree-dump "cddce1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c
index 5bbfd3d17fb..70a905819cd 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-fre-details" } */
+/* { dg-options "-O2 -fdump-tree-fre1-details" } */
int t(int a) __attribute__ ((const));
void q (void);
void
@@ -12,5 +12,5 @@ threading(int a,int b)
}
}
/* We should thread the jump twice and eliminate it. */
-/* { dg-final { scan-tree-dump-times "Replaced.* t " 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Replaced.* t " 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c
new file mode 100644
index 00000000000..d851bf23fe8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c
@@ -0,0 +1,47 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-dom1-details" } */
+extern void abort (void) __attribute__ ((__noreturn__));
+union tree_node;
+typedef union tree_node *tree;
+enum tree_code
+{
+ VAR_DECL,
+ SSA_NAME,
+ MAX_TREE_CODES
+};
+extern unsigned char tree_contains_struct[MAX_TREE_CODES][64];
+struct tree_base
+{
+ enum tree_code code:16;
+};
+enum tree_node_structure_enum
+{
+ TS_DECL_COMMON
+};
+struct tree_ssa_name
+{
+ tree var;
+};
+union tree_node
+{
+ struct tree_base base;
+ struct tree_ssa_name ssa_name;
+};
+long
+expand_one_var (tree var, unsigned char toplevel, unsigned char really_expand)
+{
+ tree origvar = var;
+ var = var->ssa_name.var;
+ if (((enum tree_code) (origvar)->base.code) == SSA_NAME
+ && !((var->base.code != VAR_DECL)))
+ abort ();
+ if ((var->base.code) != VAR_DECL && ((origvar)->base.code) != SSA_NAME)
+ ;
+ else if (tree_contains_struct[(var->base.code)][(TS_DECL_COMMON)] != 1)
+ abort ();
+}
+/* We should thread the jump, through an intermediate block. */
+/* { dg-final { scan-tree-dump-times "Threaded" 1 "dom1"} } */
+/* { dg-final { scan-tree-dump-times "one or more intermediate" 1 "dom1"} } */
+/* { dg-final { cleanup-tree-dump "dom1" } } */
+
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
new file mode 100644
index 00000000000..e841429f61a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
@@ -0,0 +1,63 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-dom1-details" } */
+struct bitmap_head_def;
+typedef struct bitmap_head_def *bitmap;
+typedef const struct bitmap_head_def *const_bitmap;
+typedef unsigned long BITMAP_WORD;
+typedef struct bitmap_element_def
+{
+ struct bitmap_element_def *next;
+ unsigned int indx;
+} bitmap_element;
+
+
+
+
+
+
+
+
+
+unsigned char
+bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b,
+ const_bitmap kill)
+{
+ unsigned char changed = 0;
+
+ bitmap_element *dst_elt;
+ const bitmap_element *a_elt, *b_elt, *kill_elt, *dst_prev;
+
+ while (a_elt || b_elt)
+ {
+ unsigned char new_element = 0;
+
+ if (b_elt)
+ while (kill_elt && kill_elt->indx < b_elt->indx)
+ kill_elt = kill_elt->next;
+
+ if (b_elt && kill_elt && kill_elt->indx == b_elt->indx
+ && (!a_elt || a_elt->indx >= b_elt->indx))
+ {
+ bitmap_element tmp_elt;
+ unsigned ix;
+
+ BITMAP_WORD ior = 0;
+
+ changed = bitmap_elt_ior (dst, dst_elt, dst_prev,
+ a_elt, &tmp_elt, changed);
+
+ }
+
+ }
+
+
+ return changed;
+}
+/* The block starting the second conditional has 3 incoming edges,
+ we should thread all three, but due to a bug in the threading
+ code we missed the edge when the first conditional is false
+ (b_elt is zero, which means the second conditional is always
+ zero. */
+/* { dg-final { scan-tree-dump-times "Threaded" 3 "dom1"} } */
+/* { dg-final { cleanup-tree-dump "dom1" } } */
+
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-14.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-14.c
new file mode 100644
index 00000000000..1c74596adba
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-14.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-dse1-details" } */
+
+struct A { char c[4]; } a, b;
+
+void
+f1 (void)
+{
+ a.c[2] = '\0';
+ __builtin_memset (&a.c[1], 1, 2);
+}
+
+void
+f2 (void)
+{
+ __builtin_memcpy (&a.c[0], "a", 1);
+ __builtin_memcpy (&a, &b, 3);
+}
+
+/* { dg-final { scan-tree-dump-times "Deleted dead store" 2 "dse1" } } */
+/* { dg-final { cleanup-tree-dump "dse1" } } */
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 b9ec6bc720f..2c859d5e850 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
/* From PR27090. */
@@ -11,5 +11,5 @@ int f(int *a)
return *c + t;
}
-/* { dg-final { scan-tree-dump "Replaced \\\*a_\[^\n\].*with t_" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*c_\[^\n\].*with t_" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c
index 50bb5d96066..7bef07caff6 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
struct
{
@@ -22,5 +22,5 @@ foo (int y)
return (x);
}
-/* { dg-final { scan-tree-dump "Replaced S\\\[5\\\].x with 4" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced S\\\[5\\\].x with 4" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c
index 50bb5d96066..7bef07caff6 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
struct
{
@@ -22,5 +22,5 @@ foo (int y)
return (x);
}
-/* { dg-final { scan-tree-dump "Replaced S\\\[5\\\].x with 4" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced S\\\[5\\\].x with 4" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
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 972e6c69ef9..cfb72b8bcc5 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fstrict-aliasing -fno-tree-sra -fdump-tree-fre-details" } */
+/* { dg-options "-O -fstrict-aliasing -fno-tree-sra -fdump-tree-fre1-details" } */
/* Should be optimized, propagating &a into (*p)[i]. */
@@ -23,5 +23,5 @@ void foo(double (*q)[4], struct Foo *tmp1)
}
}
-/* { dg-final { scan-tree-dump "Replaced tmp1_.\\\(D\\\)->data with &a" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced tmp1_.\\\(D\\\)->data with &a" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
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 9d1b3f2ba92..2b677d5b598 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-details" } */
/* Should be optimized, propagating &a into (*p)[i]. */
@@ -27,5 +27,5 @@ void foo(double (*q)[4])
bar(a);
}
-/* { dg-final { scan-tree-dump "Replaced tmp1.data with &a" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced tmp1.data with &a" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c
index d24cd1e4c38..f24d0f6ab64 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-details" } */
/* Should be optimized, propagating &a into (*p)[i]. */
@@ -26,5 +26,5 @@ void foo(double (*q)[4])
bar(a);
}
-/* { dg-final { scan-tree-dump "Replaced" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-16.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-16.c
index 56d85e58e7f..fa5f3719a25 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-16.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-16.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
/* FRE should be able to combine i and j and perform simplification
on the condition. */
@@ -14,5 +14,5 @@ int foo(int b, int c)
link_error ();
}
-/* { dg-final { scan-tree-dump-not "link_error" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-not "link_error" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-17.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-17.c
index aced64977ea..01f57ed7e5c 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-17.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-17.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details -fno-tree-sra" } */
+/* { dg-options "-O -fdump-tree-fre1-details -fno-tree-sra" } */
struct Bar {
int dom;
@@ -18,6 +18,6 @@ int foo(int i, int j, int k)
return f.doms[0LL].dom;
}
-/* { dg-final { scan-tree-dump "Replaced f.doms\\\[0\\\].dom with i_" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced f.doms\\\[0\\\].dom with i_" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c
index 392b1f6cf7d..986fe0781ae 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
struct a
{
@@ -24,5 +24,5 @@ int f(struct a *c)
/* We should have CSEd the load from c->a. */
-/* { dg-final { scan-tree-dump-times "c_.*\\\.a" 1 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "c_.*\\\.a" 1 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c
index 688fe86403e..c121832de63 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
struct a
{
@@ -27,5 +27,5 @@ int f(struct a *c)
/* We should have CSEd the load from c->a. */
-/* { dg-final { scan-tree-dump-times "c_.*\\\.a" 1 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "c_.*\\\.a" 1 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c
index d1eabf69bae..f85c06139f2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-forwprop -fdump-tree-fre1-details" } */
/* From PR14287. */
@@ -14,5 +14,5 @@ foo (long a)
h = c;
}
-/* { dg-final { scan-tree-dump "Replaced \\\(short int\\\) c_.*with b_" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\(short int\\\) c_.*with b_" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c
index aadf32e21bd..219c0a926a6 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
struct f {
float a;
@@ -22,5 +22,5 @@ void g(void)
h(a1, b, c, d);
}
-/* { dg-final { scan-tree-dump-not "a\\\.? = " "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-not "a\\\.? = " "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-22.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-22.c
index ce311b68b9e..3504d1041e9 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-22.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-22.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
int i;
int foo (void)
@@ -11,5 +11,5 @@ int foo (void)
/* We should eliminate the redundant load of i. */
-/* { dg-final { scan-tree-dump-not "= i;" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-not "= i;" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-23.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-23.c
index 491836d28ef..f21360824cd 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-23.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-23.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
int f(int t, int a, int b)
{
@@ -17,5 +17,5 @@ int f(int t, int a, int b)
return c+d;
}
-/* { dg-final { scan-tree-dump-times "PHI" 1 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "PHI" 1 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-24.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-24.c
index 705993a4fb3..c683218799d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-24.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-24.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1" } */
int foo(void)
{
@@ -30,5 +30,5 @@ int bazzoo (void)
return b.i;
}
-/* { dg-final { scan-tree-dump-times "= 0;" 5 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "= 0;" 5 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-25.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-25.c
index f7f99bf74f5..e7723f9bc35 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-25.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-25.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1" } */
struct X { int i; int j; };
void bar (struct X *);
@@ -14,5 +14,5 @@ int foo (struct X *p)
/* We should optimize this to return 0. */
-/* { dg-final { scan-tree-dump "= 0;" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "= 0;" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-26.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-26.c
index 2b8e8e063d4..81d9ea0fa8e 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-26.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-26.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-details" } */
union U {
float f;
@@ -15,5 +15,5 @@ int foo (union U *p)
}
/* avr has 16 bit int and 32 bit float */
-/* { dg-final { scan-tree-dump "Replaced u.i with 0 in" "fre" {xfail avr-*-* } } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced u.i with 0 in" "fre1" {xfail avr-*-* } } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-27.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-27.c
index 39368707ce9..ba0710171f2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-27.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-27.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
int *q;
void __attribute__((noinline))
@@ -21,5 +21,5 @@ int foo(int which_p)
return x;
}
-/* { dg-final { scan-tree-dump "Replaced x with 0" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced x with 0" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c
index 85e444886d0..6813b432302 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c
@@ -6,7 +6,7 @@
When the condition is true, we distribute "(int) (a + b)" as
"(int) a + (int) b", otherwise we keep the original. */
/* { dg-do compile { target { { ! mips64 } && { ! spu-*-* } } } } */
-/* { dg-options "-O -fwrapv -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-forwprop -fwrapv -fdump-tree-fre1-details" } */
/* From PR14844. */
@@ -18,5 +18,5 @@ foo (int a, int b)
return aa + bb;
}
-/* { dg-final { scan-tree-dump "Replaced \\\(int\\\) aa_.*with a_" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\(int\\\) aa_.*with a_" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c
index ca8d4c96bb7..96738305bbc 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c
@@ -1,7 +1,7 @@
/* If the target returns false for TARGET_PROMOTE_PROTOTYPES, then there
will be no casts for FRE to eliminate and the test will fail. */
/* { dg-do compile { target i?86-*-* x86_64-*-* hppa*-*-* mips*-*-* m68k*-*-* } } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-forwprop -fdump-tree-fre1-details" } */
/* From PR21608. */
@@ -11,5 +11,5 @@ char bar(char f)
return wrap(f);
}
-/* { dg-final { scan-tree-dump "Replaced \\\(char\\\) .*with " "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\(char\\\) .*with " "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c
index 7ef20c2214d..e6010ca0318 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-forwprop -fdump-tree-fre1-details" } */
/* From PR19792. */
@@ -10,5 +10,5 @@ bar (unsigned int t)
return a == t;
}
-/* { dg-final { scan-tree-dump "Replaced \\\(unsigned int\\\) a_.*with t_" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\(unsigned int\\\) a_.*with t_" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c
index 6963c1ce483..65883cd14bd 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
int i; int foo(void) { i = 2; int j = i * 2; int k = i + 2; return j == k; }
-/* { dg-final { scan-tree-dump-times "Replaced " 5 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Replaced " 5 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c
index 895c05fdf91..a758efe5dda 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-details -fdump-tree-optimized" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-details -fdump-tree-optimized" } */
#if (__SIZEOF_INT__ == __SIZEOF_FLOAT__)
typedef int intflt;
#elif (__SIZEOF_LONG__ == __SIZEOF_FLOAT__)
@@ -29,10 +29,10 @@ intflt foo(intflt j)
return a.u.k;
}
-/* { dg-final { scan-tree-dump-times "Inserted pretmp" 1 "fre" } } */
-/* { dg-final { scan-tree-dump-times "Replaced a.u.f with pretmp" 3 "fre" } } */
-/* { dg-final { scan-tree-dump-times "Replaced a.u.k with j" 1 "fre" } } */
-/* { dg-final { scan-tree-dump "= VIEW_CONVERT_EXPR<float>\\\(j_" "fre" } } */
+/* { dg-final { scan-tree-dump-times "Inserted pretmp" 1 "fre1" } } */
+/* { dg-final { scan-tree-dump-times "Replaced a.u.f with pretmp" 3 "fre1" } } */
+/* { dg-final { scan-tree-dump-times "Replaced a.u.k with j" 1 "fre1" } } */
+/* { dg-final { scan-tree-dump "= VIEW_CONVERT_EXPR<float>\\\(j_" "fre1" } } */
/* { dg-final { scan-tree-dump "return j" "optimized" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c
index bc9f8e3992e..d6ab2ef247f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-details" } */
#if (__SIZEOF_INT__ == __SIZEOF_FLOAT__)
typedef int intflt;
#elif (__SIZEOF_LONG__ == __SIZEOF_FLOAT__)
@@ -28,6 +28,6 @@ intflt foo(int i, int b)
}
}
-/* { dg-final { scan-tree-dump-times "Replaced u.f with pretmp" 2 "fre" } } */
-/* { dg-final { scan-tree-dump-times "Inserted pretmp" 2 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Replaced u.f with pretmp" 2 "fre1" } } */
+/* { dg-final { scan-tree-dump-times "Inserted pretmp" 2 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c
index c8a434a2bba..57c6d4b5be7 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-stats" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-stats" } */
union loc {
unsigned reg;
@@ -23,6 +23,6 @@ void __frame_state_for1 (volatile char *state_in)
}
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 2 "fre" } } */
-/* { dg-final { scan-tree-dump-times "Insertions: 1" 2 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 2 "fre1" } } */
+/* { dg-final { scan-tree-dump-times "Insertions: 1" 2 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c
index 41af344989a..8cb1bebde43 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats -fno-finite-math-only" { target sh*-*-* } } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre1-stats" } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre1-stats -fno-finite-math-only" { target sh*-*-* } } */
double cos (double);
void link_error();
void f(double a)
@@ -11,5 +11,5 @@ void f(double a)
link_error();
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
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 b986bdd92a9..7342c3361a8 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 "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-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" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Deleted redundant store" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
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 f87476a3a9f..bc7ca4e68e4 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre1-stats" } */
int
foo (int *array)
{
@@ -8,5 +8,5 @@ foo (int *array)
return 0;
}
/* We should eliminate one load. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c
index ae933bbccec..f08ef7fde60 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre1-stats" } */
struct s {
int *n;
};
@@ -19,5 +19,5 @@ foo (__SIZE_TYPE__ i, struct s *array)
/* We should eliminate two address calculations, and one load. */
/* We used to eliminate a cast but that was before POINTER_PLUS_EXPR
was added. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
index 30d968b7c53..4f88624ae19 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre1-stats" } */
int
foo (unsigned long a)
{
@@ -9,5 +9,5 @@ foo (unsigned long a)
return 1;
return 0;
}
-/* { dg-final { scan-tree-dump-times "return 0;" 0 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "return 0;" 0 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c
index 65cd83d7cde..0cb027222fb 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fdump-tree-fre1-stats" } */
void vnum_test8(int *data)
{
@@ -17,5 +17,5 @@ void vnum_test8(int *data)
}
}
/* We should eliminate m - n, and set n = n + k into n = m. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c
index cc3661cc6d7..b4c3c14a265 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fdump-tree-fre1-stats" } */
int vnum_test8(int *data)
{
@@ -21,5 +21,5 @@ int vnum_test8(int *data)
}
/* We should eliminate m - n, and set n = n + k into n = m, and
set p to 0 */
-/* { dg-final { scan-tree-dump-times "Eliminated: 4" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 4" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c
index b80a8dc3bba..fb266bb5417 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fdump-tree-fre1-stats" } */
int main(int argc, char **argv)
{
int *p;
@@ -11,5 +11,5 @@ int main(int argc, char **argv)
return result;
}
/* We should eliminate result = *p by saying it has the value 2. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
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 7caf4eec6f8..7f0a9329737 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fdump-tree-fre1-stats" } */
int vnum_test8(int *data)
{
@@ -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: 5" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 5" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-6.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-6.c
new file mode 100644
index 00000000000..70e48121ee6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-6.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-sink" } */
+
+int foo(int *a, int r)
+{
+ int ret = 0;
+ *a = 1;
+ if (r == 3)
+ *a = 5;
+ else
+ ret = r + 20;
+ return ret;
+}
+
+/* *a = 1 should be sunk to the else block. */
+
+/* { dg-final { scan-tree-dump-times "Sinking" 1 "sink" } } */
+/* { dg-final { cleanup-tree-dump "sink" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-7.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-7.c
new file mode 100644
index 00000000000..ffee03368c5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-7.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-sink" } */
+
+int foo(int *a, int r, short *b)
+{
+ int ret = 0;
+ *a = 1;
+ if (r == 3)
+ *a = 5;
+ else
+ ret = r + 20;
+ *b = 9;
+ return ret;
+}
+
+/* *a = 1 should be sunk to the else block. */
+
+/* { dg-final { scan-tree-dump-times "Sinking" 1 "sink" } } */
+/* { dg-final { cleanup-tree-dump "sink" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-8.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-8.c
new file mode 100644
index 00000000000..4a575a7a485
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-8.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-sink" } */
+
+int foo(int *a, int r, short *b)
+{
+ int ret = 0;
+ *a = 1;
+ switch (r)
+ {
+ case 3:
+ *a = 5;
+ break;
+ case 4:
+ case 5:
+ *a = 9;
+ ret = r + 25;
+ break;
+ default:
+ ret = r + 20;
+ }
+ *b = 9;
+ return ret;
+}
+
+/* *a = 1 should be sunk into the default case. */
+
+/* { dg-final { scan-tree-dump-times "Sinking" 1 "sink" } } */
+/* { dg-final { cleanup-tree-dump "sink" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-9.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-9.c
new file mode 100644
index 00000000000..1a6e2b8d974
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-9.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-sink" } */
+
+int foo(int *a, int r, int *b)
+{
+ int ret = 0;
+ *a = 1;
+ if (r == 3)
+ {
+ *a = 5;
+ *b = 3;
+ }
+ return ret;
+}
+
+/* *a = 1 should be sunk to the else block. */
+
+/* { dg-final { scan-tree-dump-times "Sinking" 1 "sink" } } */
+/* { dg-final { cleanup-tree-dump "sink" } } */
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 87b44b530ec..495b7ba114e 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-details" } */
+/* { dg-options "-O2 -fdump-tree-fre1-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 "Replaced\[^\n\]*with i_." "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced\[^\n\]*with i_." "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
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 5acf083c71e..c348bdfe25b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-fre" } */
+/* { dg-options "-O2 -fdump-tree-fre1" } */
struct S { unsigned f; };
@@ -14,6 +14,6 @@ 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 "= \[^\n\]*p_.\\\(D\\\)" 1 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "= \[^\n\]*p_.\\\(D\\\)" 1 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c
new file mode 100644
index 00000000000..7adfe62052d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-vrp1-blocks-vops-details" } */
+
+fu (char *p, int x)
+{
+ if (x)
+ *p = 69;
+ if (p)
+ arf ();
+}
+
+/* { dg-final { scan-tree-dump-times "Threaded jump" 1 "vrp1" } } */
+/* { dg-final { cleanup-tree-dump "vrp1" } } */
+
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp56.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp56.c
new file mode 100644
index 00000000000..912d28e0f64
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp56.c
@@ -0,0 +1,42 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-vrp1-details" } */
+typedef struct basic_block_def *basic_block;
+struct basic_block_def;
+struct edge_def;
+typedef struct edge_def *edge;
+typedef struct VEC_edge_base
+{
+ unsigned num;
+} VEC_edge_base;
+typedef struct VEC_edge_none
+{
+ VEC_edge_base base;
+} VEC_edge_none;
+static __inline__ unsigned
+VEC_edge_base_length (VEC_edge_base * vec_)
+{
+ return vec_ ? vec_->num : 0;
+}
+
+typedef struct VEC_edge_gc
+{
+ VEC_edge_base base;
+} VEC_edge_gc;
+struct basic_block_def
+{
+ VEC_edge_gc *succs;
+};
+
+unsigned char
+cleanup_empty_eh (basic_block bb)
+{
+ edge e_out;
+ switch (VEC_edge_base_length (&bb->succs->base))
+ {
+ case 1:
+ foo ();
+ }
+}
+/* { dg-final { scan-tree-dump-times "Threaded" 1 "vrp1"} } */
+/* { dg-final { cleanup-tree-dump "vrp1" } } */
+
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp57.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp57.c
new file mode 100644
index 00000000000..c736adc9e3e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp57.c
@@ -0,0 +1,17 @@
+/* PR40052 */
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-vrp -fdump-tree-optimized" } */
+
+int foo(_Bool b)
+{
+ return b | 1;
+}
+
+int bar(_Bool b)
+{
+ return b & -2;
+}
+
+/* { dg-final { scan-tree-dump "return 0;" "optimized" } } */
+/* { dg-final { scan-tree-dump "return 1;" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/uninit-pred-7_d.c b/gcc/testsuite/gcc.dg/uninit-pred-7_d.c
new file mode 100644
index 00000000000..06111731a63
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/uninit-pred-7_d.c
@@ -0,0 +1,54 @@
+
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-Wuninitialized -O2 -mbranch-cost=0" } */
+
+int g;
+void bar();
+void blah(int);
+
+int foo (int n, int l, int m, int r)
+{
+ int v;
+
+ if (n || l)
+ v = r;
+
+ if (m) g++;
+ else bar();
+
+ if ( n && l)
+ blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+ if ( n )
+ blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+ if ( l )
+ blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+ return 0;
+}
+
+int foo_2 (int n, int l, int m, int r)
+{
+ int v;
+
+ if (n || l)
+ v = r;
+
+ if (m) g++;
+ else bar();
+
+ if ( n && l)
+ blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+ if ( n )
+ blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+ if (m || l)
+ blah (v); /* { dg-warning "uninitialized" "warning" } */
+
+ if ( l )
+ blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/uninit-pred-8_d.c b/gcc/testsuite/gcc.dg/uninit-pred-8_d.c
new file mode 100644
index 00000000000..ccdea2967ad
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/uninit-pred-8_d.c
@@ -0,0 +1,45 @@
+
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-Wuninitialized -O2 -mbranch-cost=0" } */
+
+int g;
+void bar();
+void blah(int);
+
+int foo (int n, int l, int m, int r)
+{
+ int v;
+
+ if (n || m || r || l)
+ v = r;
+
+ if (m) g++;
+ else bar();
+
+ if ( n || m || r || l)
+ blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+ if ( n )
+ blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+ if ( l )
+ blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+ return 0;
+}
+
+int foo_2 (int n, int l, int m, int r)
+{
+ int v;
+
+ if (n || m || r )
+ v = r;
+
+ if (m) g++;
+ else bar();
+
+ if ( n || m || r || l)
+ blah(v); /* { dg-warning "uninitialized" "warning" } */
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/uninit-suppress.c b/gcc/testsuite/gcc.dg/uninit-suppress.c
new file mode 100644
index 00000000000..64038a3a239
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/uninit-suppress.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-fno-tree-ccp -O2 -Wuninitialized -Wno-maybe-uninitialized" } */
+void blah();
+int gflag;
+
+void foo()
+{
+ int v;
+ if (gflag)
+ v = 10;
+
+ blah(); /* *gflag may be killed, but compiler won't know */
+
+ if (gflag)
+ bar(v); /* { dg-bogus "uninitialized" "should be suppressed" } */
+}
diff --git a/gcc/testsuite/gcc.dg/uninit-suppress_2.c b/gcc/testsuite/gcc.dg/uninit-suppress_2.c
new file mode 100644
index 00000000000..a48b182f8cb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/uninit-suppress_2.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-fno-tree-ccp -O2 -Wuninitialized -Werror=uninitialized -Wno-error=maybe-uninitialized" } */
+void blah();
+int gflag;
+
+void foo()
+{
+ int v;
+ if (gflag)
+ v = 10;
+
+ blah(); /* *gflag may be killed, but compiler won't know */
+
+ if (gflag)
+ bar(v); /* { dg-warning "uninitialized" "should not be promoted to error" } */
+}
diff --git a/gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c b/gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c
index 7d6af7b82f3..400ff29164e 100644
--- a/gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c
+++ b/gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c
@@ -26,7 +26,7 @@ foo ()
}
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided_wide } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided_wide } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided4 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
index 4d75d565b98..d9adf6f333c 100644
--- a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
+++ b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
@@ -113,7 +113,7 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {target { vect_strided && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target { vect_strided && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {target { vect_strided8 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target { vect_strided8 && vect_int_mult } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-ifcvt-1.c b/gcc/testsuite/gcc.dg/vect/fast-math-ifcvt-1.c
new file mode 100644
index 00000000000..ba22d8d7889
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/fast-math-ifcvt-1.c
@@ -0,0 +1,18 @@
+/* PR 47892 */
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_float } */
+/* { dg-require-effective-target vect_condition } */
+
+void
+bestseries9 (float * __restrict__ arr, int len)
+{
+ int i;
+ for (i = 0; i < len; ++i)
+ {
+ float or = arr[i];
+ arr[i] = (or > 0.0f) * (2 - or * or);
+ }
+}
+
+/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c b/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c
index 6a01782bb3d..d8394060bad 100644
--- a/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c
+++ b/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c
@@ -20,7 +20,7 @@ float method2_int16 (struct mem *mem)
return avg;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_extract_even_odd_wide } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_extract_even_odd_wide } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_extract_even_odd } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_extract_even_odd } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c b/gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
index 81240023777..4c2c5c510f4 100644
--- a/gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
+++ b/gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
@@ -13,5 +13,5 @@ void foo(void)
}
}
-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_strided } } } */
+/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c b/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
index 3fcf77e0c34..db55b30098d 100644
--- a/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
+++ b/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
@@ -56,5 +56,5 @@ main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd_wide } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c b/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
new file mode 100644
index 00000000000..38906a94af2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
@@ -0,0 +1,69 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 50
+
+typedef struct {
+ short a;
+ short b;
+} data;
+
+data in1[N], in2[N], out[N];
+short result[N*2] = {10,-7,11,-6,12,-5,13,-4,14,-3,15,-2,16,-1,17,0,18,1,19,2,20,3,21,4,22,5,23,6,24,7,25,8,26,9,27,10,28,11,29,12,30,13,31,14,32,15,33,16,34,17,35,18,36,19,37,20,38,21,39,22,40,23,41,24,42,25,43,26,44,27,45,28,46,29,47,30,48,31,49,32,50,33,51,34,52,35,53,36,54,37,55,38,56,39,57,40,58,41,59,42};
+short out1[N], out2[N];
+
+__attribute__ ((noinline)) void
+foo ()
+{
+ int i;
+ short c, d;
+
+ for (i = 0; i < N; i++)
+ {
+ c = in1[i].b;
+ d = in2[i].b;
+
+ if (c >= d)
+ {
+ out[i].b = in1[i].a;
+ out[i].a = d + 5;
+ }
+ else
+ {
+ out[i].b = d - 12;
+ out[i].a = in2[i].a + d;
+ }
+ }
+}
+
+int
+main (void)
+{
+ int i;
+
+ check_vect ();
+
+ for (i = 0; i < N; i++)
+ {
+ in1[i].a = i;
+ in1[i].b = i + 2;
+ in2[i].a = 5;
+ in2[i].b = i + 5;
+ __asm__ volatile ("");
+ }
+
+ foo ();
+
+ for (i = 0; i < N; i++)
+ {
+ if (out[i].a != result[2*i] || out[i].b != result[2*i+1])
+ abort ();
+ }
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || { ! vect_strided2 } } } } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c b/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c
index 9a71b498da7..95906baedd6 100644
--- a/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c
+++ b/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c
@@ -54,5 +54,5 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c b/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
index b28111c22c8..544b89ae8c6 100644
--- a/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
+++ b/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
@@ -53,5 +53,5 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c b/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c
index 7a6788a0da2..60cb00de485 100644
--- a/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c
+++ b/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c
@@ -47,5 +47,5 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_interleave } } } */
+/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c b/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c
index 18e50874a5c..22b4aa96f60 100644
--- a/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c
+++ b/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c
@@ -50,5 +50,5 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c b/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
index 954474eb925..0bbb8e943ce 100644
--- a/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
+++ b/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
@@ -8,7 +8,7 @@ __attribute__ ((noinline))
void with_restrict(int * __restrict p)
{
int i;
- int *q = p - 2;
+ int *q = p - 1;
for (i = 0; i < 1000; ++i) {
p[i] = q[i];
@@ -19,7 +19,7 @@ __attribute__ ((noinline))
void without_restrict(int * p)
{
int i;
- int *q = p - 2;
+ int *q = p - 1;
for (i = 0; i < 1000; ++i) {
p[i] = q[i];
@@ -38,8 +38,8 @@ int main(void)
a[i] = b[i] = i;
}
- with_restrict(a + 2);
- without_restrict(b + 2);
+ with_restrict(a + 1);
+ without_restrict(b + 1);
for (i = 0; i < 1002; ++i) {
if (a[i] != b[i])
@@ -48,6 +48,6 @@ int main(void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" { xfail vect_no_align } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr30843.c b/gcc/testsuite/gcc.dg/vect/pr30843.c
index 616b618f4d8..2e0855f6cb8 100644
--- a/gcc/testsuite/gcc.dg/vect/pr30843.c
+++ b/gcc/testsuite/gcc.dg/vect/pr30843.c
@@ -20,6 +20,6 @@ void dacP98FillRGBMap (unsigned char *pBuffer)
}
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided4 } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr33866.c b/gcc/testsuite/gcc.dg/vect/pr33866.c
index 9beaeff5b4b..8adb2e7edc1 100644
--- a/gcc/testsuite/gcc.dg/vect/pr33866.c
+++ b/gcc/testsuite/gcc.dg/vect/pr33866.c
@@ -27,6 +27,6 @@ void test_select_fill_hyper_simple (long *offset)
}
/* Needs interleaving support. */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr37539.c b/gcc/testsuite/gcc.dg/vect/pr37539.c
index 1e73425de9e..560c484636c 100644
--- a/gcc/testsuite/gcc.dg/vect/pr37539.c
+++ b/gcc/testsuite/gcc.dg/vect/pr37539.c
@@ -40,7 +40,7 @@ int main ()
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_strided_wide } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_strided4 && vect_strided2 } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr48377.c b/gcc/testsuite/gcc.dg/vect/pr48377.c
new file mode 100644
index 00000000000..b9aaf49ee73
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr48377.c
@@ -0,0 +1,24 @@
+/* PR tree-optimization/48377 */
+
+typedef unsigned int U __attribute__((__aligned__ (1), __may_alias__));
+
+__attribute__((noinline, noclone)) unsigned int
+foo (const char *s, int len)
+{
+ const U *p = (const U *) s;
+ unsigned int f = len / sizeof (unsigned int), hash = len, i;
+
+ for (i = 0; i < f; ++i)
+ hash += *p++;
+ return hash;
+}
+
+char buf[64] __attribute__((aligned (32)));
+
+int
+main (void)
+{
+ return foo (buf + 1, 26) != 26;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr48765.c b/gcc/testsuite/gcc.dg/vect/pr48765.c
new file mode 100644
index 00000000000..469c4f423ce
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr48765.c
@@ -0,0 +1,82 @@
+/* { dg-do compile { target powerpc*-*-* } } */
+/* { dg-options "-m64 -O3 -mcpu=power6" } */
+
+enum reg_class
+{
+ NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS, XGRF_REGS, ALL_REGS,
+ LIM_REG_CLASSES
+};
+enum machine_mode
+{
+ VOIDmode, QImode, HImode, PSImode, SImode, PDImode, DImode, TImode, OImode,
+ QFmode, HFmode, TQFmode, SFmode, DFmode, XFmode, TFmode, SCmode, DCmode,
+ XCmode, TCmode, CQImode, CHImode, CSImode, CDImode, CTImode, COImode,
+ BLKmode, CCmode, CCEVENmode, MAX_MACHINE_MODE
+};
+typedef struct rtx_def
+{
+ int mode:8;
+}
+ *rtx;
+extern rtx *regno_reg_rtx;
+typedef unsigned int HARD_REG_ELT_TYPE;
+typedef HARD_REG_ELT_TYPE HARD_REG_SET[((64 + 32 - 1) / 32)];
+extern int reg_alloc_order[64];
+extern int max_regno;
+extern int *reg_n_calls_crossed;
+extern short *reg_renumber;
+static int *reg_where_dead;
+static int *reg_where_born;
+static int *reg_order;
+static char *regs_change_size;
+static HARD_REG_SET *after_insn_hard_regs;
+static int stupid_find_reg (int, enum reg_class, enum machine_mode, int, int,
+ int);
+void
+stupid_life_analysis (f, nregs, file)
+ rtx f;
+{
+ register int i;
+ for (i = (((64)) + 3) + 1; i < max_regno; i++)
+ {
+ register int r = reg_order[i];
+ if ((int) LIM_REG_CLASSES > 1)
+ reg_renumber[r] =
+ stupid_find_reg (reg_n_calls_crossed[r], reg_preferred_class (r),
+ ((regno_reg_rtx[r])->mode), reg_where_born[r],
+ reg_where_dead[r], regs_change_size[r]);
+ }
+}
+
+static int
+stupid_find_reg (call_preserved, class, mode, born_insn, dead_insn,
+ changes_size)
+ int call_preserved;
+ enum reg_class class;
+ enum machine_mode mode;
+{
+ register int i, ins;
+ HARD_REG_SET used, this_reg;
+ for (ins = born_insn; ins < dead_insn; ins++)
+ do
+ {
+ register HARD_REG_ELT_TYPE *scan_tp_ = (used), *scan_fp_ =
+ (after_insn_hard_regs[ins]);
+ for (i = 0; i < ((64 + 32 - 1) / 32); i++)
+ *scan_tp_++ |= *scan_fp_++;
+ }
+ while (0);
+ for (i = 0; i < 64; i++)
+ {
+ int regno = reg_alloc_order[i];
+ if (((used)[(regno) / ((unsigned) 32)] &
+ (((HARD_REG_ELT_TYPE) (1)) << ((regno) % ((unsigned) 32)))))
+ {
+ register int j;
+ if (j == regno)
+ return regno;
+ }
+ }
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-11.c b/gcc/testsuite/gcc.dg/vect/slp-11a.c
index 9f44e517e93..520bb74df2b 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-11.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-11a.c
@@ -3,7 +3,7 @@
#include <stdarg.h>
#include "tree-vect.h"
-#define N 8
+#define N 8
int
main1 ()
@@ -11,7 +11,6 @@ main1 ()
int i;
unsigned int out[N*8], a0, a1, a2, a3, a4, a5, a6, a7, b1, b0, b2, b3, b4, b5, b6, b7;
unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
- float out2[N*8];
/* Different operations - not SLPable. */
for (i = 0; i < N; i++)
@@ -35,7 +34,7 @@ main1 ()
b7 = a7 * 2;
out[i*8] = b0 - 2;
- out[i*8 + 1] = b1 - 3;
+ out[i*8 + 1] = b1 - 3;
out[i*8 + 2] = b2 - 2;
out[i*8 + 3] = b3 - 1;
out[i*8 + 4] = b4 - 8;
@@ -58,41 +57,6 @@ main1 ()
abort ();
}
- /* Requires permutation - not SLPable. */
- for (i = 0; i < N*2; i++)
- {
- out[i*4] = (in[i*4] + 2) * 3;
- out[i*4 + 1] = (in[i*4 + 2] + 2) * 7;
- out[i*4 + 2] = (in[i*4 + 1] + 7) * 3;
- out[i*4 + 3] = (in[i*4 + 3] + 3) * 4;
- }
-
- /* check results: */
- for (i = 0; i < N*2; i++)
- {
- if (out[i*4] != (in[i*4] + 2) * 3
- || out[i*4 + 1] != (in[i*4 + 2] + 2) * 7
- || out[i*4 + 2] != (in[i*4 + 1] + 7) * 3
- || out[i*4 + 3] != (in[i*4 + 3] + 3) * 4)
- abort ();
- }
-
- /* Different operations - not SLPable. */
- for (i = 0; i < N*4; i++)
- {
- out2[i*2] = ((float) in[i*2] * 2 + 6) ;
- out2[i*2 + 1] = (float) (in[i*2 + 1] * 3 + 7);
- }
-
- /* check results: */
- for (i = 0; i < N*4; i++)
- {
- if (out2[i*2] != ((float) in[i*2] * 2 + 6)
- || out2[i*2 + 1] != (float) (in[i*2 + 1] * 3 + 7))
- abort ();
- }
-
-
return 0;
}
@@ -105,9 +69,7 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { target { { vect_uintfloat_cvt && vect_strided_wide } && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { { { ! vect_uintfloat_cvt } && vect_strided_wide } && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" {target { ! { vect_int_mult && vect_strided_wide } } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
-
diff --git a/gcc/testsuite/gcc.dg/vect/slp-11b.c b/gcc/testsuite/gcc.dg/vect/slp-11b.c
new file mode 100644
index 00000000000..6942c578b6f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-11b.c
@@ -0,0 +1,49 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 8
+
+int
+main1 ()
+{
+ int i;
+ unsigned int out[N*8], a0, a1, a2, a3, a4, a5, a6, a7, b1, b0, b2, b3, b4, b5, b6, b7;
+ unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+
+ /* Requires permutation - not SLPable. */
+ for (i = 0; i < N*2; i++)
+ {
+ out[i*4] = (in[i*4] + 2) * 3;
+ out[i*4 + 1] = (in[i*4 + 2] + 2) * 7;
+ out[i*4 + 2] = (in[i*4 + 1] + 7) * 3;
+ out[i*4 + 3] = (in[i*4 + 3] + 3) * 4;
+ }
+
+ /* check results: */
+ for (i = 0; i < N*2; i++)
+ {
+ if (out[i*4] != (in[i*4] + 2) * 3
+ || out[i*4 + 1] != (in[i*4 + 2] + 2) * 7
+ || out[i*4 + 2] != (in[i*4 + 1] + 7) * 3
+ || out[i*4 + 3] != (in[i*4 + 3] + 3) * 4)
+ abort ();
+ }
+
+ return 0;
+}
+
+int main (void)
+{
+ check_vect ();
+
+ main1 ();
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided4 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided4 && vect_int_mult } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-11c.c b/gcc/testsuite/gcc.dg/vect/slp-11c.c
new file mode 100644
index 00000000000..42b358aa697
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-11c.c
@@ -0,0 +1,46 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 8
+
+int
+main1 ()
+{
+ int i;
+ unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+ float out[N*8];
+
+ /* Different operations - not SLPable. */
+ for (i = 0; i < N*4; i++)
+ {
+ out[i*2] = ((float) in[i*2] * 2 + 6) ;
+ out[i*2 + 1] = (float) (in[i*2 + 1] * 3 + 7);
+ }
+
+ /* check results: */
+ for (i = 0; i < N*4; i++)
+ {
+ if (out[i*2] != ((float) in[i*2] * 2 + 6)
+ || out[i*2 + 1] != (float) (in[i*2 + 1] * 3 + 7))
+ abort ();
+ }
+
+
+ return 0;
+}
+
+int main (void)
+{
+ check_vect ();
+
+ main1 ();
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { vect_uintfloat_cvt && vect_strided2 } && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { { vect_uintfloat_cvt && vect_strided2 } && vect_int_mult } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-12a.c b/gcc/testsuite/gcc.dg/vect/slp-12a.c
index 6bbeb879faf..5c1c5a7a50c 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-12a.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-12a.c
@@ -11,7 +11,7 @@ main1 ()
int i;
unsigned int out[N*8], a0, a1, a2, a3, a4, a5, a6, a7, b1, b0, b2, b3, b4, b5, b6, b7;
unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
- unsigned int ia[N], ib[N*2];
+ unsigned int ia[N];
for (i = 0; i < N; i++)
{
@@ -61,27 +61,6 @@ main1 ()
abort ();
}
- for (i = 0; i < N*2; i++)
- {
- out[i*4] = (in[i*4] + 2) * 3;
- out[i*4 + 1] = (in[i*4 + 1] + 2) * 7;
- out[i*4 + 2] = (in[i*4 + 2] + 7) * 3;
- out[i*4 + 3] = (in[i*4 + 3] + 7) * 7;
-
- ib[i] = 7;
- }
-
- /* check results: */
- for (i = 0; i < N*2; i++)
- {
- if (out[i*4] != (in[i*4] + 2) * 3
- || out[i*4 + 1] != (in[i*4 + 1] + 2) * 7
- || out[i*4 + 2] != (in[i*4 + 2] + 7) * 3
- || out[i*4 + 3] != (in[i*4 + 3] + 7) * 7
- || ib[i] != 7)
- abort ();
- }
-
return 0;
}
@@ -94,11 +73,8 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" {target { vect_strided_wide && vect_int_mult} } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {target { {! {vect_strided_wide}} && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" {target { ! vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" {target { vect_strided_wide && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" {target { {! {vect_strided_wide}} && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" {target { ! vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
-
diff --git a/gcc/testsuite/gcc.dg/vect/slp-12b.c b/gcc/testsuite/gcc.dg/vect/slp-12b.c
index 863652a5b8a..69e9f315ff4 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-12b.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-12b.c
@@ -43,9 +43,9 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {target { vect_strided_wide && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" {target { { ! { vect_int_mult }} || { ! {vect_strided_wide}}} } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" {target { vect_strided_wide && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" {target { { ! { vect_int_mult }} || { ! {vect_strided_wide}}} } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided2 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided2 && vect_int_mult } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_strided2 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided2 && vect_int_mult } } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-12c.c b/gcc/testsuite/gcc.dg/vect/slp-12c.c
new file mode 100644
index 00000000000..5152d21145b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-12c.c
@@ -0,0 +1,53 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 8
+
+int
+main1 ()
+{
+ int i;
+ unsigned int out[N*8], a0, a1, a2, a3, a4, a5, a6, a7, b1, b0, b2, b3, b4, b5, b6, b7;
+ unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+ unsigned int ia[N*2];
+
+ for (i = 0; i < N*2; i++)
+ {
+ out[i*4] = (in[i*4] + 2) * 3;
+ out[i*4 + 1] = (in[i*4 + 1] + 2) * 7;
+ out[i*4 + 2] = (in[i*4 + 2] + 7) * 3;
+ out[i*4 + 3] = (in[i*4 + 3] + 7) * 7;
+
+ ia[i] = 7;
+ }
+
+ /* check results: */
+ for (i = 0; i < N*2; i++)
+ {
+ if (out[i*4] != (in[i*4] + 2) * 3
+ || out[i*4 + 1] != (in[i*4 + 1] + 2) * 7
+ || out[i*4 + 2] != (in[i*4 + 2] + 7) * 3
+ || out[i*4 + 3] != (in[i*4 + 3] + 7) * 7
+ || ia[i] != 7)
+ abort ();
+ }
+
+ return 0;
+}
+
+int main (void)
+{
+ check_vect ();
+
+ main1 ();
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_int_mult } } } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-18.c b/gcc/testsuite/gcc.dg/vect/slp-18.c
index 8cdb0ddb9ee..6cc6fbae346 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-18.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-18.c
@@ -91,7 +91,7 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target { vect_strided } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided8 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-19a.c b/gcc/testsuite/gcc.dg/vect/slp-19a.c
new file mode 100644
index 00000000000..02a4cd008b6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-19a.c
@@ -0,0 +1,61 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 16
+
+int
+main1 ()
+{
+ unsigned int i;
+ unsigned int out[N*8];
+ unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+ unsigned int ia[N*2];
+
+ for (i = 0; i < N; i++)
+ {
+ out[i*8] = in[i*8];
+ out[i*8 + 1] = in[i*8 + 1];
+ out[i*8 + 2] = in[i*8 + 2];
+ out[i*8 + 3] = in[i*8 + 3];
+ out[i*8 + 4] = in[i*8 + 4];
+ out[i*8 + 5] = in[i*8 + 5];
+ out[i*8 + 6] = in[i*8 + 6];
+ out[i*8 + 7] = in[i*8 + 7];
+
+ ia[i] = in[i*8 + 2];
+ }
+
+ /* check results: */
+ for (i = 0; i < N; i++)
+ {
+ if (out[i*8] != in[i*8]
+ || out[i*8 + 1] != in[i*8 + 1]
+ || out[i*8 + 2] != in[i*8 + 2]
+ || out[i*8 + 3] != in[i*8 + 3]
+ || out[i*8 + 4] != in[i*8 + 4]
+ || out[i*8 + 5] != in[i*8 + 5]
+ || out[i*8 + 6] != in[i*8 + 6]
+ || out[i*8 + 7] != in[i*8 + 7]
+ || ia[i] != in[i*8 + 2])
+ abort ();
+ }
+
+ return 0;
+}
+
+int main (void)
+{
+ check_vect ();
+
+ main1 ();
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided8 } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided8 } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided8} } } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-19b.c b/gcc/testsuite/gcc.dg/vect/slp-19b.c
new file mode 100644
index 00000000000..1f29a0d2e4d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-19b.c
@@ -0,0 +1,58 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 16
+
+int
+main1 ()
+{
+ unsigned int i;
+ unsigned int out[N*8];
+ unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+ unsigned int ia[N*2], a0, a1, a2, a3;
+
+ for (i = 0; i < N*2; i++)
+ {
+ a0 = in[i*4] + 1;
+ a1 = in[i*4 + 1] + 2;
+ a2 = in[i*4 + 2] + 3;
+ a3 = in[i*4 + 3] + 4;
+
+ out[i*4] = a0;
+ out[i*4 + 1] = a1;
+ out[i*4 + 2] = a2;
+ out[i*4 + 3] = a3;
+
+ ia[i] = a2;
+ }
+
+ /* check results: */
+ for (i = 0; i < N*2; i++)
+ {
+ if (out[i*4] != in[i*4] + 1
+ || out[i*4 + 1] != in[i*4 + 1] + 2
+ || out[i*4 + 2] != in[i*4 + 2] + 3
+ || out[i*4 + 3] != in[i*4 + 3] + 4
+ || ia[i] != in[i*4 + 2] + 3)
+ abort ();
+ }
+
+ return 0;
+}
+
+int main (void)
+{
+ check_vect ();
+
+ main1 ();
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided4 } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided4 } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided4 } } } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-19.c b/gcc/testsuite/gcc.dg/vect/slp-19c.c
index 349c5ec6c92..f0df25f5346 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-19.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-19c.c
@@ -3,7 +3,7 @@
#include <stdarg.h>
#include "tree-vect.h"
-#define N 16
+#define N 16
int
main1 ()
@@ -13,62 +13,7 @@ main1 ()
unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
unsigned int ia[N*2], a0, a1, a2, a3;
- for (i = 0; i < N; i++)
- {
- out[i*8] = in[i*8];
- out[i*8 + 1] = in[i*8 + 1];
- out[i*8 + 2] = in[i*8 + 2];
- out[i*8 + 3] = in[i*8 + 3];
- out[i*8 + 4] = in[i*8 + 4];
- out[i*8 + 5] = in[i*8 + 5];
- out[i*8 + 6] = in[i*8 + 6];
- out[i*8 + 7] = in[i*8 + 7];
-
- ia[i] = in[i*8 + 2];
- }
-
- /* check results: */
- for (i = 0; i < N; i++)
- {
- if (out[i*8] != in[i*8]
- || out[i*8 + 1] != in[i*8 + 1]
- || out[i*8 + 2] != in[i*8 + 2]
- || out[i*8 + 3] != in[i*8 + 3]
- || out[i*8 + 4] != in[i*8 + 4]
- || out[i*8 + 5] != in[i*8 + 5]
- || out[i*8 + 6] != in[i*8 + 6]
- || out[i*8 + 7] != in[i*8 + 7]
- || ia[i] != in[i*8 + 2])
- abort ();
- }
-
- for (i = 0; i < N*2; i++)
- {
- a0 = in[i*4] + 1;
- a1 = in[i*4 + 1] + 2;
- a2 = in[i*4 + 2] + 3;
- a3 = in[i*4 + 3] + 4;
-
- out[i*4] = a0;
- out[i*4 + 1] = a1;
- out[i*4 + 2] = a2;
- out[i*4 + 3] = a3;
-
- ia[i] = a2;
- }
-
- /* check results: */
- for (i = 0; i < N*2; i++)
- {
- if (out[i*4] != in[i*4] + 1
- || out[i*4 + 1] != in[i*4 + 1] + 2
- || out[i*4 + 2] != in[i*4 + 2] + 3
- || out[i*4 + 3] != in[i*4 + 3] + 4
- || ia[i] != in[i*4 + 2] + 3)
- abort ();
- }
-
- /* The last stmt requires interleaving of not power of 2 size - not
+ /* The last stmt requires interleaving of not power of 2 size - not
vectorizable. */
for (i = 0; i < N/2; i++)
{
@@ -116,10 +61,10 @@ main1 ()
out[i*6 + 3] = in[i*6 + 3];
out[i*6 + 4] = in[i*6 + 4];
out[i*6 + 5] = in[i*6 + 5];
-
+
ia[i] = i;
- }
-
+ }
+
/* check results: */
for (i = 0; i < N/2; i++)
{
@@ -133,7 +78,6 @@ main1 ()
abort ();
}
-
return 0;
}
@@ -146,9 +90,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { target vect_strided_wide } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided_wide } } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { target vect_strided_wide } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { ! { vect_strided_wide } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
-
diff --git a/gcc/testsuite/gcc.dg/vect/slp-21.c b/gcc/testsuite/gcc.dg/vect/slp-21.c
index b4f4e24e0f4..39146b8fd11 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-21.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-21.c
@@ -199,9 +199,9 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" { target { vect_strided || vect_extract_even_odd } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided || vect_extract_even_odd } } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" { target { vect_strided4 || vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided4 || vect_extract_even_odd } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided4 } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided4 } } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-23.c b/gcc/testsuite/gcc.dg/vect/slp-23.c
index 3a64284b056..5a04c900e02 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-23.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-23.c
@@ -106,8 +106,8 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_strided_wide } && {! { vect_no_align} } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided_wide || vect_no_align} } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_strided8 && { ! { vect_no_align} } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided8 || vect_no_align } } } } } */
/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-3.c b/gcc/testsuite/gcc.dg/vect/slp-3.c
index 8c99b01e8e4..9a504d901e0 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-3.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-3.c
@@ -4,9 +4,9 @@
#include <stdarg.h>
#include "tree-vect.h"
-#define N 8
+#define N 12
-unsigned short in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+unsigned short in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
int
main1 ()
@@ -101,7 +101,7 @@ main1 ()
}
/* SLP with unrolling by 8. */
- for (i = 0; i < N/2; i++)
+ for (i = 0; i < N/4; i++)
{
out[i*9] = in[i*9];
out[i*9 + 1] = in[i*9 + 1];
@@ -115,7 +115,7 @@ main1 ()
}
/* check results: */
- for (i = 0; i < N/2; i++)
+ for (i = 0; i < N/4; i++)
{
if (out[i*9] != in[i*9]
|| out[i*9 + 1] != in[i*9 + 1]
@@ -142,7 +142,7 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_align } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { xfail vect_no_align } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
index 5c0761ebaab..3c04b6d21c5 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
@@ -1,5 +1,5 @@
/* { dg-require-effective-target vect_int } */
-/* { dg-do run { xfail { sparc*-*-* && ilp32 } } } PR rtl-opt/46603 */
+/* { dg-xfail-run-if "PR rtl-optimization/46603" { sparc*-*-* && { ilp32 && gas } } } */
#include <stdarg.h>
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
index ccfb888fc5a..d43f329a9cb 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
@@ -42,7 +42,7 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_int_add || { ! vect_unpack } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_int_add || { ! { vect_unpack || vect_strided2 } } } } } } */
/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
/* { dg-final { scan-tree-dump-times "different interleaving chains in one node" 1 "vect" { target { ! vect_no_int_add } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-1.c b/gcc/testsuite/gcc.dg/vect/vect-1.c
index 21975afa01e..04392ea78da 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-1.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-1.c
@@ -85,6 +85,6 @@ foo (int n)
fbar (a);
}
-/* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target vect_extract_even_odd_wide } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail vect_extract_even_odd_wide } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target vect_strided2 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-10.c b/gcc/testsuite/gcc.dg/vect/vect-10.c
index 6447b75a4f8..faa500d2a18 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-10.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-10.c
@@ -22,5 +22,5 @@ int foo ()
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { ! vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { ! vect_strided2 } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-107.c b/gcc/testsuite/gcc.dg/vect/vect-107.c
index 201d4ab4e34..0053b3321a4 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-107.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-107.c
@@ -40,6 +40,6 @@ int main (void)
return main1 ();
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_extract_even_odd_wide } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_extract_even_odd_wide } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-119.c b/gcc/testsuite/gcc.dg/vect/vect-119.c
new file mode 100644
index 00000000000..fa40f15c934
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-119.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+
+#define OUTER 32
+#define INNER 40
+
+static unsigned int
+bar (const unsigned int x[INNER][2], unsigned int sum)
+{
+ int i;
+
+ for (i = 0; i < INNER; i++)
+ sum += x[i][0] * x[i][0] + x[i][1] * x[i][1];
+ return sum;
+}
+
+unsigned int foo (const unsigned int x[OUTER][INNER][2])
+{
+ int i;
+ unsigned int sum;
+
+ sum = 0.0f;
+ for (i = 0; i < OUTER; i++)
+ sum = bar (x[i], sum);
+ return sum;
+}
+
+/* { dg-final { scan-tree-dump-times "Detected interleaving of size 2" 1 "vect" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-98.c b/gcc/testsuite/gcc.dg/vect/vect-98.c
index 118f28fd334..01c9153878f 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-98.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-98.c
@@ -38,6 +38,6 @@ int main (void)
}
/* Needs interleaving support. */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd_wide } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail { vect_interleave && vect_extract_even_odd_wide } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail vect_strided4 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c b/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
new file mode 100644
index 00000000000..3c21918efb7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
@@ -0,0 +1,86 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 50
+
+typedef struct {
+ short a;
+ short b;
+} data;
+
+data in1[N], in2[N], out[N];
+short result[N*2] = {7,-7,9,-6,11,-5,13,-4,15,-3,17,-2,19,-1,21,0,23,1,25,2,27,3,29,4,31,5,33,6,35,7,37,8,39,9,41,10,43,11,45,12,47,13,49,14,51,15,53,16,55,17,57,18,59,19,61,20,63,21,65,22,67,23,69,24,71,25,73,26,75,27,77,28,79,29,81,30,83,31,85,32,87,33,89,34,91,35,93,36,95,37,97,38,99,39,101,40,103,41,105,42};
+short out1[N], out2[N];
+
+__attribute__ ((noinline)) void
+foo ()
+{
+ int i;
+ short c, d;
+
+ /* Vectorizable with conditional store sinking. */
+ for (i = 0; i < N; i++)
+ {
+ c = in1[i].b;
+ d = in2[i].b;
+
+ if (c >= d)
+ {
+ out[i].b = c;
+ out[i].a = d + 5;
+ }
+ else
+ {
+ out[i].b = d - 12;
+ out[i].a = c + d;
+ }
+ }
+
+ /* Not vectorizable. */
+ for (i = 0; i < N; i++)
+ {
+ c = in1[i].b;
+ d = in2[i].b;
+
+ if (c >= d)
+ {
+ out1[i] = c;
+ }
+ else
+ {
+ out2[i] = c + d;
+ }
+ }
+}
+
+int
+main (void)
+{
+ int i;
+
+ check_vect ();
+
+ for (i = 0; i < N; i++)
+ {
+ in1[i].a = i;
+ in1[i].b = i + 2;
+ in2[i].a = 5;
+ in2[i].b = i + 5;
+ __asm__ volatile ("");
+ }
+
+ foo ();
+
+ for (i = 0; i < N; i++)
+ {
+ if (out[i].a != result[2*i] || out[i].b != result[2*i+1])
+ abort ();
+ }
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || { ! vect_strided2 } } } } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-cselim-2.c b/gcc/testsuite/gcc.dg/vect/vect-cselim-2.c
new file mode 100644
index 00000000000..accfcf398c6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-cselim-2.c
@@ -0,0 +1,65 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 50
+
+int a[N], b[N], in1[N], in2[N];
+int result[2*N] = {5,-7,7,-6,9,-5,11,-4,13,-3,15,-2,17,-1,19,0,21,1,23,2,25,3,27,4,29,5,31,6,33,7,35,8,37,9,39,10,41,11,43,12,45,13,47,14,49,15,51,16,53,17,55,18,57,19,59,20,61,21,63,22,65,23,67,24,69,25,71,26,73,27,75,28,77,29,79,30,81,31,83,32,85,33,87,34,89,35,91,36,93,37,95,38,97,39,99,40,101,41,103,42};
+
+__attribute__ ((noinline)) void
+foo (int *pa, int *pb)
+{
+ int i;
+ int c, d;
+
+ /* Store sinking should not work here since the pointers may alias. */
+ for (i = 0; i < N; i++)
+ {
+ c = in1[i];
+ d = in2[i];
+
+ if (c >= d)
+ {
+ *pa = c;
+ *pb = d + 5;
+ }
+ else
+ {
+ *pb = d - 12;
+ *pa = c + d;
+ }
+
+ pa++;
+ pb++;
+ }
+}
+
+int
+main (void)
+{
+ int i;
+
+ check_vect ();
+
+ for (i = 0; i < N; i++)
+ {
+ in1[i] = i;
+ in2[i] = i + 5;
+ __asm__ volatile ("");
+ }
+
+ foo (a, b);
+
+ for (i = 0; i < N; i++)
+ {
+ if (a[i] != result[2*i] || b[i] != result[2*i+1])
+ abort ();
+ }
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-5.c b/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
index f5027d626cc..05ed39a3da2 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
@@ -17,7 +17,7 @@ int main1 ()
float B[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float C[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float D[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
- float E[4] = {0,1,2,480};
+ float E[4] = {0,480,960,1440};
float s;
int i, j;
@@ -55,7 +55,7 @@ int main1 ()
s = 0;
for (j=0; j<N; j+=4)
s += C[j];
- B[i+3] = B[i] + s;
+ B[i+1] = B[i] + s;
}
/* check results: */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-peel-1.c b/gcc/testsuite/gcc.dg/vect/vect-peel-1.c
index 58a0cdbf203..2a150e91203 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-peel-1.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-peel-1.c
@@ -14,10 +14,10 @@ int main1 ()
int i;
int ia[N+1];
- /* All the accesses are misaligned. With cost model disabled, we count the
- the number of aligned accesses for each peeling option, and in this case
- we align the two loads if possible (i.e., if misaligned stores are
- supported). */
+ /* All the accesses are misaligned. With cost model disabled, we
+ count the number of aligned accesses for each peeling option, and
+ in this case we align the two loads if possible (i.e., if
+ misaligned stores are supported). */
for (i = 1; i <= N; i++)
{
ia[i] = ib[i+2] + ib[i+6];
diff --git a/gcc/testsuite/gcc.dg/vect/vect-shift-3.c b/gcc/testsuite/gcc.dg/vect/vect-shift-3.c
new file mode 100644
index 00000000000..78ed935ae59
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-shift-3.c
@@ -0,0 +1,37 @@
+/* { dg-require-effective-target vect_shift } */
+/* { dg-require-effective-target vect_int } */
+
+#include "tree-vect.h"
+
+#define N 32
+
+unsigned short dst[N] __attribute__((aligned(N)));
+unsigned short src[N] __attribute__((aligned(N)));
+
+__attribute__ ((noinline))
+void array_shift(void)
+{
+ int i;
+ for (i = 0; i < N; i++)
+ dst[i] = src[i] >> 3;
+}
+
+int main()
+{
+ volatile int i;
+ check_vect ();
+
+ for (i = 0; i < N; i++)
+ src[i] = i << 3;
+
+ array_shift ();
+
+ for (i = 0; i < N; i++)
+ if (dst[i] != i)
+ abort ();
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-shift-4.c b/gcc/testsuite/gcc.dg/vect/vect-shift-4.c
new file mode 100644
index 00000000000..e705feadde0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-shift-4.c
@@ -0,0 +1,37 @@
+/* { dg-require-effective-target vect_shift_char } */
+/* { dg-require-effective-target vect_int } */
+
+#include "tree-vect.h"
+
+#define N 32
+
+unsigned char dst[N] __attribute__((aligned(N)));
+unsigned char src[N] __attribute__((aligned(N)));
+
+__attribute__ ((noinline))
+void array_shift(void)
+{
+ int i;
+ for (i = 0; i < N; i++)
+ dst[i] = src[i] >> 3;
+}
+
+int main()
+{
+ volatile int i;
+ check_vect ();
+
+ for (i = 0; i < N; i++)
+ src[i] = i << 3;
+
+ array_shift ();
+
+ for (i = 0; i < N; i++)
+ if (dst[i] != i)
+ abort ();
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c b/gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
index c88814297ec..779913a4f2b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
@@ -71,6 +71,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
index 702d911ad4c..25cabb693c5 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
@@ -55,6 +55,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
index 93c1b582ca8..8f04b730f57 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
@@ -68,6 +68,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
index afb2f4697bc..cd941a827f1 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
@@ -62,6 +62,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
index bac1caa1ce9..4e742b20180 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
@@ -61,6 +61,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
index cda57393538..9b0142b1d8d 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
@@ -69,6 +69,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
index 426069ffe46..4fb5494a4d3 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
@@ -76,6 +76,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
index 8dfb21be915..cc09fa608dc 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
@@ -81,6 +81,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-float.c b/gcc/testsuite/gcc.dg/vect/vect-strided-float.c
index 38c50b9cd43..302be5f578b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-float.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-float.c
@@ -39,7 +39,7 @@ int main (void)
}
/* Needs interleaving support. */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd_wide } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave && vect_extract_even_odd_wide } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c b/gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
index 3890a796888..3c8062cea12 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
@@ -71,6 +71,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-mult.c b/gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
index 6ddf0932411..49399c4e78c 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
@@ -71,6 +71,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c b/gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
index 5f18baab4e3..f16aa1a94d7 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
@@ -72,5 +72,5 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c b/gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
index 8548d267ede..26311a8bc80 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
@@ -55,6 +55,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c b/gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
index 5c02c0da214..19af351e6cf 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
@@ -65,8 +65,8 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_interleave && vect_pack_trunc } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { ! { vect_interleave } } && { vect_pack_trunc } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { { vect_interleave || vect_strided4 } && vect_pack_trunc } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { ! { vect_interleave || vect_strided4 } } && { vect_pack_trunc } } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c b/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
index c30c98d7e0d..3be94f10c8a 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
@@ -39,7 +39,7 @@ int main (void)
}
/* Needs interleaving support. */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave || vect_strided2 } } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
index eb6ecc69bd4..6694897316e 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
@@ -55,6 +55,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i3.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i3.c
new file mode 100644
index 00000000000..e423148407d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i3.c
@@ -0,0 +1,112 @@
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 128
+
+typedef struct {
+ unsigned short a;
+ unsigned short b;
+ unsigned short c;
+} s;
+
+#define A(I) (I)
+#define B(I) ((I) * 2)
+#define C(I) ((unsigned short) ~((I) ^ 0x18))
+
+void __attribute__ ((noinline))
+check1 (s *res)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ if (res[i].a != C (i)
+ || res[i].b != A (i)
+ || res[i].c != B (i))
+ abort ();
+}
+
+void __attribute__ ((noinline))
+check2 (unsigned short *res)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ if (res[i] != (unsigned short) (A (i) + B (i) + C (i)))
+ abort ();
+}
+
+void __attribute__ ((noinline))
+check3 (s *res)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ if (res[i].a != i
+ || res[i].b != i
+ || res[i].c != i)
+ abort ();
+}
+
+void __attribute__ ((noinline))
+check4 (unsigned short *res)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ if (res[i] != (unsigned short) (A (i) + B (i)))
+ abort ();
+}
+
+void __attribute__ ((noinline))
+main1 (s *arr)
+{
+ int i;
+ s *ptr = arr;
+ s res1[N];
+ unsigned short res2[N];
+
+ for (i = 0; i < N; i++)
+ {
+ res1[i].a = arr[i].c;
+ res1[i].b = arr[i].a;
+ res1[i].c = arr[i].b;
+ }
+ check1 (res1);
+
+ for (i = 0; i < N; i++)
+ res2[i] = arr[i].a + arr[i].b + arr[i].c;
+ check2 (res2);
+
+ for (i = 0; i < N; i++)
+ {
+ res1[i].a = i;
+ res1[i].b = i;
+ res1[i].c = i;
+ }
+ check3 (res1);
+
+ for (i = 0; i < N; i++)
+ res2[i] = arr[i].a + arr[i].b;
+ check4 (res2);
+}
+
+int main (void)
+{
+ int i;
+ s arr[N];
+
+ check_vect ();
+
+ for (i = 0; i < N; i++)
+ {
+ arr[i].a = A (i);
+ arr[i].b = B (i);
+ arr[i].c = C (i);
+ }
+ main1 (arr);
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" { target vect_strided3 } } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
index da5a72855d9..82a6c605674 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
@@ -68,6 +68,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
index 96ee2544242..d743fac1d62 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
@@ -63,6 +63,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
index 5f5a66e6318..663f3763249 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
@@ -77,6 +77,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
index f900b71f10d..d825898a469 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
@@ -60,6 +60,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
index b18b6605851..8055c9b5f8f 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
@@ -71,6 +71,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
index 2f44b8e4a3d..be06437550e 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
@@ -54,6 +54,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
index f5285361a3b..349e8693926 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
@@ -78,6 +78,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
index 1bd932b8af7..537bcc87dfb 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
@@ -98,6 +98,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
index be8ef671a36..76cb66d0861 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
@@ -83,6 +83,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
index ff5171d92e6..ff80c0418e9 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
@@ -85,6 +85,6 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-vfa-03.c b/gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
index 7d684aa1ff0..2c06ce6b0ae 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
@@ -53,6 +53,6 @@ main (void)
}
/* Needs interleaving support. */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail vect_strided2 } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc/testsuite/gcc.dg/vect/vect.exp
index 170c33db2a5..b783ec39ba8 100644
--- a/gcc/testsuite/gcc.dg/vect/vect.exp
+++ b/gcc/testsuite/gcc.dg/vect/vect.exp
@@ -75,15 +75,20 @@ lappend DEFAULT_VECTCFLAGS "-fdump-tree-vect-details"
lappend VECT_SLP_CFLAGS "-fdump-tree-slp-details"
# Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.\[cS\]]] \
- "" $DEFAULT_VECTCFLAGS
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vect-*.\[cS\]]] \
- "" $DEFAULT_VECTCFLAGS
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-*.\[cS\]]] \
- "" $DEFAULT_VECTCFLAGS
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/bb-slp*.\[cS\]]] \
- "" $VECT_SLP_CFLAGS
-
+set VECT_ADDITIONAL_FLAGS [list ""]
+if { [check_effective_target_lto] } {
+ lappend VECT_ADDITIONAL_FLAGS "-flto"
+}
+foreach flags $VECT_ADDITIONAL_FLAGS {
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.\[cS\]]] \
+ $flags $DEFAULT_VECTCFLAGS
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vect-*.\[cS\]]] \
+ $flags $DEFAULT_VECTCFLAGS
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-*.\[cS\]]] \
+ $flags $DEFAULT_VECTCFLAGS
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/bb-slp*.\[cS\]]] \
+ $flags $VECT_SLP_CFLAGS
+}
#### Tests with special options
global SAVED_DEFAULT_VECTCFLAGS
@@ -210,6 +215,12 @@ lappend DEFAULT_VECTCFLAGS "--param" "ggc-min-expand=0" "--param" "ggc-min-heaps
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/ggc-*.\[cS\]]] \
"" $DEFAULT_VECTCFLAGS
+# -ftree-loop-if-convert-stores
+set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
+lappend DEFAULT_VECTCFLAGS "-ftree-loop-if-convert-stores"
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/if-cvt-stores-vect-*.\[cS\]]] \
+ "" $DEFAULT_VECTCFLAGS
+
# With -O3.
# Don't allow IPA cloning, because it throws our counts out of whack.
set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
diff --git a/gcc/testsuite/gcc.dg/winline-5.c b/gcc/testsuite/gcc.dg/winline-5.c
index ad1fc4100bb..a42ae943fe0 100644
--- a/gcc/testsuite/gcc.dg/winline-5.c
+++ b/gcc/testsuite/gcc.dg/winline-5.c
@@ -15,15 +15,7 @@ inline int q(void) /* { dg-warning "inline-unit-growth" } */
big();
big();
}
-inline int q1(void)
-{
- big();
- big();
- big();
-}
int t (void)
{
- /* We allow one inlining over limit. */
- q1();
return q (); /* { dg-warning "called from here" } */
}
diff --git a/gcc/testsuite/gcc.target/arm/cold-lc.c b/gcc/testsuite/gcc.target/arm/cold-lc.c
new file mode 100644
index 00000000000..295c29fe8f0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/cold-lc.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mlong-calls" } */
+/* { dg-final { scan-assembler-not "bl\[^\n\]*dump_stack" } } */
+
+extern void dump_stack (void) __attribute__ ((__cold__)) __attribute__ ((noinline));
+struct thread_info {
+ struct task_struct *task;
+};
+extern struct thread_info *current_thread_info (void);
+
+void dump_stack (void)
+{
+ unsigned long stack;
+ show_stack ((current_thread_info ()->task), &stack);
+}
+
+void die (char *str, void *fp, int nr)
+{
+ dump_stack ();
+ while (1);
+}
+
diff --git a/gcc/testsuite/gcc.target/arm/neon-modes-2.c b/gcc/testsuite/gcc.target/arm/neon-modes-2.c
new file mode 100644
index 00000000000..40f1bba363b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-modes-2.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O1" } */
+/* { dg-add-options arm_neon } */
+
+#include "arm_neon.h"
+
+#define SETUP(A) x##A = vld3_u32 (ptr + A * 0x20)
+#define MODIFY(A) x##A = vld3_lane_u32 (ptr + A * 0x20 + 0x10, x##A, 1)
+#define STORE(A) vst3_u32 (ptr + A * 0x20, x##A)
+
+#define MANY(A) A (0), A (1), A (2), A (3), A (4), A (5)
+
+void
+bar (uint32_t *ptr, int y)
+{
+ uint32x2x3_t MANY (SETUP);
+ int *x = __builtin_alloca (y);
+ int z[0x1000];
+ foo (x, z);
+ MANY (MODIFY);
+ foo (x, z);
+ MANY (STORE);
+}
diff --git a/gcc/testsuite/gcc.target/arm/neon-vld-1.c b/gcc/testsuite/gcc.target/arm/neon-vld-1.c
new file mode 100644
index 00000000000..f6bf6911d42
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vld-1.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O1" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint8x16_t
+foo (uint8_t *a, uint8x16_t b)
+{
+ vst1q_lane_u8 (a, b, 14);
+ return vld1q_lane_u8 (a + 0x100, b, 15);
+}
diff --git a/gcc/testsuite/gcc.target/arm/neon-vld3-1.c b/gcc/testsuite/gcc.target/arm/neon-vld3-1.c
new file mode 100644
index 00000000000..0cc5c8826db
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vld3-1.c
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+/* { dg-require-effective-target arm_neon_hw } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include "arm_neon.h"
+
+uint32_t buffer[12];
+
+void __attribute__((noinline))
+foo (uint32_t *a)
+{
+ uint32x4x3_t x;
+
+ x = vld3q_u32 (a);
+ x.val[0] = vaddq_u32 (x.val[0], x.val[1]);
+ vst3q_u32 (a, x);
+}
+
+int
+main (void)
+{
+ buffer[0] = 1;
+ buffer[1] = 2;
+ foo (buffer);
+ return buffer[0] != 3;
+}
diff --git a/gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c b/gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c
new file mode 100644
index 00000000000..e87102edbe2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c
@@ -0,0 +1,21 @@
+/* Test the `vset_lane_s8' ARM Neon intrinsic. */
+
+/* { dg-do run } */
+/* { dg-require-effective-target arm_neon_hw } */
+/* { dg-options "-O0" } */
+/* { dg-add-options arm_neon } */
+
+#include "arm_neon.h"
+#include <stdlib.h>
+#include <string.h>
+
+int8x8_t x = { 1, 2, 3, 4, 5, 6, 7, 8 };
+int8x8_t y = { 1, 2, 3, 16, 5, 6, 7, 8 };
+
+int main (void)
+{
+ x = vset_lane_s8 (16, x, 3);
+ if (memcmp (&x, &y, sizeof (x)) != 0)
+ abort();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/arm/neon-vst3-1.c b/gcc/testsuite/gcc.target/arm/neon-vst3-1.c
new file mode 100644
index 00000000000..a3bee6cb56f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vst3-1.c
@@ -0,0 +1,25 @@
+/* { dg-do run } */
+/* { dg-require-effective-target arm_neon_hw } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include "arm_neon.h"
+
+uint32_t buffer[64];
+
+void __attribute__((noinline))
+foo (uint32_t *a)
+{
+ uint32x4x3_t x;
+
+ x = vld3q_u32 (a);
+ a[35] = 1;
+ vst3q_lane_u32 (a + 32, x, 1);
+}
+
+int
+main (void)
+{
+ foo (buffer);
+ return buffer[35] != 1;
+}
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
index 073d88f2b5e..fa9cf20f558 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
@@ -15,5 +15,5 @@ void test_vld1Q_dupf32 (void)
out_float32x4_t = vld1q_dup_f32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
index 1202e929a12..4e830382571 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
@@ -15,5 +15,5 @@ void test_vld1Q_dupp16 (void)
out_poly16x8_t = vld1q_dup_p16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
index 27d75509720..70fb898850f 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
@@ -15,5 +15,5 @@ void test_vld1Q_dupp8 (void)
out_poly8x16_t = vld1q_dup_p8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
index df1e00880d4..1fedcf94d2a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
@@ -15,5 +15,5 @@ void test_vld1Q_dups16 (void)
out_int16x8_t = vld1q_dup_s16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
index b371299bda0..2abd4e44740 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
@@ -15,5 +15,5 @@ void test_vld1Q_dups32 (void)
out_int32x4_t = vld1q_dup_s32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
index b4c3a8cc9fe..912b93d1d6c 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
@@ -15,5 +15,5 @@ void test_vld1Q_dups64 (void)
out_int64x2_t = vld1q_dup_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
index badeb3b8045..e431a5cf108 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
@@ -15,5 +15,5 @@ void test_vld1Q_dups8 (void)
out_int8x16_t = vld1q_dup_s8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
index d247fea5620..6da756774f6 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
@@ -15,5 +15,5 @@ void test_vld1Q_dupu16 (void)
out_uint16x8_t = vld1q_dup_u16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
index 1160f9820b6..8e400bd25f2 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
@@ -15,5 +15,5 @@ void test_vld1Q_dupu32 (void)
out_uint32x4_t = vld1q_dup_u32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
index 8cbc89c9482..234db407b37 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
@@ -15,5 +15,5 @@ void test_vld1Q_dupu64 (void)
out_uint64x2_t = vld1q_dup_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
index c6d52a3d74c..b1e540d702e 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
@@ -15,5 +15,5 @@ void test_vld1Q_dupu8 (void)
out_uint8x16_t = vld1q_dup_u8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
index bccdd26c209..8c7689edb05 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
@@ -16,5 +16,5 @@ void test_vld1Q_lanef32 (void)
out_float32x4_t = vld1q_lane_f32 (0, arg1_float32x4_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
index f080107a66c..163c2a7a959 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
@@ -16,5 +16,5 @@ void test_vld1Q_lanep16 (void)
out_poly16x8_t = vld1q_lane_p16 (0, arg1_poly16x8_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
index 4887ebcd0c2..7f7a22eba4b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
@@ -16,5 +16,5 @@ void test_vld1Q_lanep8 (void)
out_poly8x16_t = vld1q_lane_p8 (0, arg1_poly8x16_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
index aeb824c2333..0d56492c257 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
@@ -16,5 +16,5 @@ void test_vld1Q_lanes16 (void)
out_int16x8_t = vld1q_lane_s16 (0, arg1_int16x8_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
index 90556ac9b21..3c5869fcdf5 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
@@ -16,5 +16,5 @@ void test_vld1Q_lanes32 (void)
out_int32x4_t = vld1q_lane_s32 (0, arg1_int32x4_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
index db68bd0873d..154583b677d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
@@ -16,5 +16,5 @@ void test_vld1Q_lanes64 (void)
out_int64x2_t = vld1q_lane_s64 (0, arg1_int64x2_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
index 3494c077dcd..a6aa3f804b4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
@@ -16,5 +16,5 @@ void test_vld1Q_lanes8 (void)
out_int8x16_t = vld1q_lane_s8 (0, arg1_int8x16_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
index eb791e7d399..1653dd31cb6 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
@@ -16,5 +16,5 @@ void test_vld1Q_laneu16 (void)
out_uint16x8_t = vld1q_lane_u16 (0, arg1_uint16x8_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
index 3841c9b96b0..034e24d5266 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
@@ -16,5 +16,5 @@ void test_vld1Q_laneu32 (void)
out_uint32x4_t = vld1q_lane_u32 (0, arg1_uint32x4_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
index 082e6a625b8..ff92e91fcb8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
@@ -16,5 +16,5 @@ void test_vld1Q_laneu64 (void)
out_uint64x2_t = vld1q_lane_u64 (0, arg1_uint64x2_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
index 194f7491248..be338f18707 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
@@ -16,5 +16,5 @@ void test_vld1Q_laneu8 (void)
out_uint8x16_t = vld1q_lane_u8 (0, arg1_uint8x16_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
index 1c84b9127ee..d792148d09a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
@@ -15,5 +15,5 @@ void test_vld1Qf32 (void)
out_float32x4_t = vld1q_f32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
index f470da6bc69..84bceb557e4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
@@ -15,5 +15,5 @@ void test_vld1Qp16 (void)
out_poly16x8_t = vld1q_p16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
index a46d48bc2eb..e756b1bc7f7 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
@@ -15,5 +15,5 @@ void test_vld1Qp8 (void)
out_poly8x16_t = vld1q_p8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
index 39ab3fe55c0..aaa29e982cb 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
@@ -15,5 +15,5 @@ void test_vld1Qs16 (void)
out_int16x8_t = vld1q_s16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
index e12e8d97a40..14bc4221eae 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
@@ -15,5 +15,5 @@ void test_vld1Qs32 (void)
out_int32x4_t = vld1q_s32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
index 1c6aca4a872..093aee61a39 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
@@ -15,5 +15,5 @@ void test_vld1Qs64 (void)
out_int64x2_t = vld1q_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
index 64e6b006444..d4fffd0a100 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
@@ -15,5 +15,5 @@ void test_vld1Qs8 (void)
out_int8x16_t = vld1q_s8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
index 191deb0d769..267f7d15bcc 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
@@ -15,5 +15,5 @@ void test_vld1Qu16 (void)
out_uint16x8_t = vld1q_u16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
index e3e01a61268..53ccab0c5b1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
@@ -15,5 +15,5 @@ void test_vld1Qu32 (void)
out_uint32x4_t = vld1q_u32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
index 24b55bab12c..56b0dbd3e62 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
@@ -15,5 +15,5 @@ void test_vld1Qu64 (void)
out_uint64x2_t = vld1q_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
index 47e6ad07dea..d68fc89eaa0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
@@ -15,5 +15,5 @@ void test_vld1Qu8 (void)
out_uint8x16_t = vld1q_u8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
index 41eec0ef0a1..6f8435b3629 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
@@ -15,5 +15,5 @@ void test_vld1_dupf32 (void)
out_float32x2_t = vld1_dup_f32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
index b38b29c7253..1287b471b56 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
@@ -15,5 +15,5 @@ void test_vld1_dupp16 (void)
out_poly16x4_t = vld1_dup_p16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
index 69017c4ac59..8fde6455355 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
@@ -15,5 +15,5 @@ void test_vld1_dupp8 (void)
out_poly8x8_t = vld1_dup_p8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
index 61e0377fa4c..084f89e064a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
@@ -15,5 +15,5 @@ void test_vld1_dups16 (void)
out_int16x4_t = vld1_dup_s16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
index 0429ee513a6..ba6697a4ce6 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
@@ -15,5 +15,5 @@ void test_vld1_dups32 (void)
out_int32x2_t = vld1_dup_s32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
index 90ee403d663..410ee6fcd5e 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
@@ -15,5 +15,5 @@ void test_vld1_dups64 (void)
out_int64x1_t = vld1_dup_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
index aacac04bb13..18b21b527a4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
@@ -15,5 +15,5 @@ void test_vld1_dups8 (void)
out_int8x8_t = vld1_dup_s8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
index 64d736298ba..1d893cd3b8a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
@@ -15,5 +15,5 @@ void test_vld1_dupu16 (void)
out_uint16x4_t = vld1_dup_u16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
index 6f3fd967e11..f640846403a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
@@ -15,5 +15,5 @@ void test_vld1_dupu32 (void)
out_uint32x2_t = vld1_dup_u32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
index 262147d79ee..17be90a0bcd 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
@@ -15,5 +15,5 @@ void test_vld1_dupu64 (void)
out_uint64x1_t = vld1_dup_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
index 6038bec9caa..5811f25fb4d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
@@ -15,5 +15,5 @@ void test_vld1_dupu8 (void)
out_uint8x8_t = vld1_dup_u8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
index 3d4b0a4de6e..6165897ecf8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
@@ -16,5 +16,5 @@ void test_vld1_lanef32 (void)
out_float32x2_t = vld1_lane_f32 (0, arg1_float32x2_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
index 832abbd2a1c..feecf1baa29 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
@@ -16,5 +16,5 @@ void test_vld1_lanep16 (void)
out_poly16x4_t = vld1_lane_p16 (0, arg1_poly16x4_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
index 04823322e04..0d172993653 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
@@ -16,5 +16,5 @@ void test_vld1_lanep8 (void)
out_poly8x8_t = vld1_lane_p8 (0, arg1_poly8x8_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
index 571f87673f4..26272410e36 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
@@ -16,5 +16,5 @@ void test_vld1_lanes16 (void)
out_int16x4_t = vld1_lane_s16 (0, arg1_int16x4_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
index 057a7ffc30e..39575d45680 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
@@ -16,5 +16,5 @@ void test_vld1_lanes32 (void)
out_int32x2_t = vld1_lane_s32 (0, arg1_int32x2_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
index 1e46d6a1f96..1216405bfc7 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
@@ -16,5 +16,5 @@ void test_vld1_lanes64 (void)
out_int64x1_t = vld1_lane_s64 (0, arg1_int64x1_t, 0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
index eeebc9bbd09..7c763fd909b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
@@ -16,5 +16,5 @@ void test_vld1_lanes8 (void)
out_int8x8_t = vld1_lane_s8 (0, arg1_int8x8_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
index 116a35f03b4..9d2c45ed93b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
@@ -16,5 +16,5 @@ void test_vld1_laneu16 (void)
out_uint16x4_t = vld1_lane_u16 (0, arg1_uint16x4_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
index f4907d202b2..3a7f3eec96b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
@@ -16,5 +16,5 @@ void test_vld1_laneu32 (void)
out_uint32x2_t = vld1_lane_u32 (0, arg1_uint32x2_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
index b5058b0f806..b9e5d2042e1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
@@ -16,5 +16,5 @@ void test_vld1_laneu64 (void)
out_uint64x1_t = vld1_lane_u64 (0, arg1_uint64x1_t, 0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
index caa08f63723..7e4835afe42 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
@@ -16,5 +16,5 @@ void test_vld1_laneu8 (void)
out_uint8x8_t = vld1_lane_u8 (0, arg1_uint8x8_t, 1);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1f32.c b/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
index 17deac967cb..2d90ac55902 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
@@ -15,5 +15,5 @@ void test_vld1f32 (void)
out_float32x2_t = vld1_f32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1p16.c b/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
index ef2e73ac598..62aa89e8af9 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
@@ -15,5 +15,5 @@ void test_vld1p16 (void)
out_poly16x4_t = vld1_p16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1p8.c b/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
index 048bdeb06b2..60e47c2d567 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
@@ -15,5 +15,5 @@ void test_vld1p8 (void)
out_poly8x8_t = vld1_p8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1s16.c b/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
index 39e12d76cd1..1d4cf525fd5 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
@@ -15,5 +15,5 @@ void test_vld1s16 (void)
out_int16x4_t = vld1_s16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1s32.c b/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
index 80fbfd07d70..7af67c383a1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
@@ -15,5 +15,5 @@ void test_vld1s32 (void)
out_int32x2_t = vld1_s32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1s64.c b/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
index 3ea125d36bb..dadb9de2264 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
@@ -15,5 +15,5 @@ void test_vld1s64 (void)
out_int64x1_t = vld1_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1s8.c b/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
index 599c3234535..c27ebcd061f 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
@@ -15,5 +15,5 @@ void test_vld1s8 (void)
out_int8x8_t = vld1_s8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1u16.c b/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
index 550ca118b6f..f973d6ec5ca 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
@@ -15,5 +15,5 @@ void test_vld1u16 (void)
out_uint16x4_t = vld1_u16 (0);
}
-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1u32.c b/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
index e0b673cf8b1..4b455b29290 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
@@ -15,5 +15,5 @@ void test_vld1u32 (void)
out_uint32x2_t = vld1_u32 (0);
}
-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1u64.c b/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
index eba002cd7db..1504215d8e8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
@@ -15,5 +15,5 @@ void test_vld1u64 (void)
out_uint64x1_t = vld1_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1u8.c b/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
index a63bcf2cd4b..600d0351843 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
@@ -15,5 +15,5 @@ void test_vld1u8 (void)
out_uint8x8_t = vld1_u8 (0);
}
-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
index de05fd78f4b..9afbbecf720 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
@@ -16,5 +16,5 @@ void test_vld2Q_lanef32 (void)
out_float32x4x2_t = vld2q_lane_f32 (0, arg1_float32x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
index 30dd2d9b72c..e1b85aad9d4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
@@ -16,5 +16,5 @@ void test_vld2Q_lanep16 (void)
out_poly16x8x2_t = vld2q_lane_p16 (0, arg1_poly16x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
index bc256dd67d5..467c02b64bc 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
@@ -16,5 +16,5 @@ void test_vld2Q_lanes16 (void)
out_int16x8x2_t = vld2q_lane_s16 (0, arg1_int16x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
index bf184df22c5..5f9c4a8b239 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
@@ -16,5 +16,5 @@ void test_vld2Q_lanes32 (void)
out_int32x4x2_t = vld2q_lane_s32 (0, arg1_int32x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
index 37919becf45..851572917bf 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
@@ -16,5 +16,5 @@ void test_vld2Q_laneu16 (void)
out_uint16x8x2_t = vld2q_lane_u16 (0, arg1_uint16x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
index d42638cd159..65ec23a6f42 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
@@ -16,5 +16,5 @@ void test_vld2Q_laneu32 (void)
out_uint32x4x2_t = vld2q_lane_u32 (0, arg1_uint32x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
index 6e7d1d3d533..afde42c20a0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
@@ -15,6 +15,6 @@ void test_vld2Qf32 (void)
out_float32x4x2_t = vld2q_f32 (0);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
index 18ee431698d..f74004628de 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
@@ -15,6 +15,6 @@ void test_vld2Qp16 (void)
out_poly16x8x2_t = vld2q_p16 (0);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
index 4751de7b8ab..9e4ff25f3df 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
@@ -15,6 +15,6 @@ void test_vld2Qp8 (void)
out_poly8x16x2_t = vld2q_p8 (0);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
index 638f24accf2..97c8a2c5f8a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
@@ -15,6 +15,6 @@ void test_vld2Qs16 (void)
out_int16x8x2_t = vld2q_s16 (0);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
index 51d7dc87fb8..cd03e17d2e1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
@@ -15,6 +15,6 @@ void test_vld2Qs32 (void)
out_int32x4x2_t = vld2q_s32 (0);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
index b3fb47d55fc..b33a5a8f4ef 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
@@ -15,6 +15,6 @@ void test_vld2Qs8 (void)
out_int8x16x2_t = vld2q_s8 (0);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
index 7955de6aec4..76169af569d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
@@ -15,6 +15,6 @@ void test_vld2Qu16 (void)
out_uint16x8x2_t = vld2q_u16 (0);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
index 6099c06c62c..347e164bf09 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
@@ -15,6 +15,6 @@ void test_vld2Qu32 (void)
out_uint32x4x2_t = vld2q_u32 (0);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
index 82632ed383e..3b738a7aede 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
@@ -15,6 +15,6 @@ void test_vld2Qu8 (void)
out_uint8x16x2_t = vld2q_u8 (0);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
index aa74e38ec49..54fbd3da974 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
@@ -15,5 +15,5 @@ void test_vld2_dupf32 (void)
out_float32x2x2_t = vld2_dup_f32 (0);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
index 71be4c12790..b5ec4e227f2 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
@@ -15,5 +15,5 @@ void test_vld2_dupp16 (void)
out_poly16x4x2_t = vld2_dup_p16 (0);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
index 17d4ec1b736..2ad81b53ab7 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
@@ -15,5 +15,5 @@ void test_vld2_dupp8 (void)
out_poly8x8x2_t = vld2_dup_p8 (0);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
index 128e715bec8..43b245d3de3 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
@@ -15,5 +15,5 @@ void test_vld2_dups16 (void)
out_int16x4x2_t = vld2_dup_s16 (0);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
index 41461be8725..51e4fc8e63b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
@@ -15,5 +15,5 @@ void test_vld2_dups32 (void)
out_int32x2x2_t = vld2_dup_s32 (0);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
index e9d4b53823c..644db84cab2 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
@@ -15,5 +15,5 @@ void test_vld2_dups64 (void)
out_int64x1x2_t = vld2_dup_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
index 8b3f7979ae1..01592339203 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
@@ -15,5 +15,5 @@ void test_vld2_dups8 (void)
out_int8x8x2_t = vld2_dup_s8 (0);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
index 6b9df90eb92..85bbc4681f1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
@@ -15,5 +15,5 @@ void test_vld2_dupu16 (void)
out_uint16x4x2_t = vld2_dup_u16 (0);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
index d34acecf5ce..3549fde1ca9 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
@@ -15,5 +15,5 @@ void test_vld2_dupu32 (void)
out_uint32x2x2_t = vld2_dup_u32 (0);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
index 16b04657404..a830f831021 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
@@ -15,5 +15,5 @@ void test_vld2_dupu64 (void)
out_uint64x1x2_t = vld2_dup_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
index 94c80a98199..c3763c8f2c6 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
@@ -15,5 +15,5 @@ void test_vld2_dupu8 (void)
out_uint8x8x2_t = vld2_dup_u8 (0);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
index 2e02a2831a5..f60279efd0a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
@@ -16,5 +16,5 @@ void test_vld2_lanef32 (void)
out_float32x2x2_t = vld2_lane_f32 (0, arg1_float32x2x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
index d52864b8957..0d7f415b77e 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
@@ -16,5 +16,5 @@ void test_vld2_lanep16 (void)
out_poly16x4x2_t = vld2_lane_p16 (0, arg1_poly16x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
index 07938a1877c..8174e7bee03 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
@@ -16,5 +16,5 @@ void test_vld2_lanep8 (void)
out_poly8x8x2_t = vld2_lane_p8 (0, arg1_poly8x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
index c19aacf5142..5a1eb54bdcc 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
@@ -16,5 +16,5 @@ void test_vld2_lanes16 (void)
out_int16x4x2_t = vld2_lane_s16 (0, arg1_int16x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
index 6394d9a3488..a663c52ff9d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
@@ -16,5 +16,5 @@ void test_vld2_lanes32 (void)
out_int32x2x2_t = vld2_lane_s32 (0, arg1_int32x2x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
index 603d3234cf7..073ba54179c 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
@@ -16,5 +16,5 @@ void test_vld2_lanes8 (void)
out_int8x8x2_t = vld2_lane_s8 (0, arg1_int8x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
index e6a873b12c1..7250b562ed3 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
@@ -16,5 +16,5 @@ void test_vld2_laneu16 (void)
out_uint16x4x2_t = vld2_lane_u16 (0, arg1_uint16x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
index 58e806faa40..9a46c65d00b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
@@ -16,5 +16,5 @@ void test_vld2_laneu32 (void)
out_uint32x2x2_t = vld2_lane_u32 (0, arg1_uint32x2x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
index b662354f823..ba2007109b8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
@@ -16,5 +16,5 @@ void test_vld2_laneu8 (void)
out_uint8x8x2_t = vld2_lane_u8 (0, arg1_uint8x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2f32.c b/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
index 75974376a96..c790de94125 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
@@ -15,5 +15,5 @@ void test_vld2f32 (void)
out_float32x2x2_t = vld2_f32 (0);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2p16.c b/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
index f166d3554e1..4c4338cfc14 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
@@ -15,5 +15,5 @@ void test_vld2p16 (void)
out_poly16x4x2_t = vld2_p16 (0);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2p8.c b/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
index 612fab6fa75..d319c22e2f9 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
@@ -15,5 +15,5 @@ void test_vld2p8 (void)
out_poly8x8x2_t = vld2_p8 (0);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2s16.c b/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
index 70f6af946b3..f725d79de5b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
@@ -15,5 +15,5 @@ void test_vld2s16 (void)
out_int16x4x2_t = vld2_s16 (0);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2s32.c b/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
index 4a84effcc87..3f417eeee9c 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
@@ -15,5 +15,5 @@ void test_vld2s32 (void)
out_int32x2x2_t = vld2_s32 (0);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2s64.c b/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
index 0a388d0901e..b9900893fd1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
@@ -15,5 +15,5 @@ void test_vld2s64 (void)
out_int64x1x2_t = vld2_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2s8.c b/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
index 110e88320fb..1df9eee6fcd 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
@@ -15,5 +15,5 @@ void test_vld2s8 (void)
out_int8x8x2_t = vld2_s8 (0);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2u16.c b/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
index f2e721bf821..7440e0c0879 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
@@ -15,5 +15,5 @@ void test_vld2u16 (void)
out_uint16x4x2_t = vld2_u16 (0);
}
-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2u32.c b/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
index f0f069e9836..940fd749776 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
@@ -15,5 +15,5 @@ void test_vld2u32 (void)
out_uint32x2x2_t = vld2_u32 (0);
}
-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2u64.c b/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
index 1d2a3bccb30..35c046a0c55 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
@@ -15,5 +15,5 @@ void test_vld2u64 (void)
out_uint64x1x2_t = vld2_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2u8.c b/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
index eb0c5a6d4fa..2231e26c073 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
@@ -15,5 +15,5 @@ void test_vld2u8 (void)
out_uint8x8x2_t = vld2_u8 (0);
}
-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
index 6c6f52032f8..6bdc1e14ade 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
@@ -16,5 +16,5 @@ void test_vld3Q_lanef32 (void)
out_float32x4x3_t = vld3q_lane_f32 (0, arg1_float32x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
index e4e60bc65fd..12b3be0efa7 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
@@ -16,5 +16,5 @@ void test_vld3Q_lanep16 (void)
out_poly16x8x3_t = vld3q_lane_p16 (0, arg1_poly16x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
index 0456d3b4bfe..8ed21e3d7ca 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
@@ -16,5 +16,5 @@ void test_vld3Q_lanes16 (void)
out_int16x8x3_t = vld3q_lane_s16 (0, arg1_int16x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
index fca11ae2024..af0118da001 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
@@ -16,5 +16,5 @@ void test_vld3Q_lanes32 (void)
out_int32x4x3_t = vld3q_lane_s32 (0, arg1_int32x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
index 56c94b2f264..7880b98e49f 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
@@ -16,5 +16,5 @@ void test_vld3Q_laneu16 (void)
out_uint16x8x3_t = vld3q_lane_u16 (0, arg1_uint16x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
index a73a5a2662e..0b1bce5c537 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
@@ -16,5 +16,5 @@ void test_vld3Q_laneu32 (void)
out_uint32x4x3_t = vld3q_lane_u32 (0, arg1_uint32x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
index 45899176953..6f16d9d870b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
@@ -15,6 +15,6 @@ void test_vld3Qf32 (void)
out_float32x4x3_t = vld3q_f32 (0);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
index 8c3e5beb4d3..ff4ef8653be 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
@@ -15,6 +15,6 @@ void test_vld3Qp16 (void)
out_poly16x8x3_t = vld3q_p16 (0);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
index 0197f517517..a23749378cb 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
@@ -15,6 +15,6 @@ void test_vld3Qp8 (void)
out_poly8x16x3_t = vld3q_p8 (0);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
index ea7709690b1..cfa01367f55 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
@@ -15,6 +15,6 @@ void test_vld3Qs16 (void)
out_int16x8x3_t = vld3q_s16 (0);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
index 10896957fe5..e1721ef3dfe 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
@@ -15,6 +15,6 @@ void test_vld3Qs32 (void)
out_int32x4x3_t = vld3q_s32 (0);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
index ca389ad1c43..9f762ca6fb3 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
@@ -15,6 +15,6 @@ void test_vld3Qs8 (void)
out_int8x16x3_t = vld3q_s8 (0);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
index efef26fd759..a2308729fdd 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
@@ -15,6 +15,6 @@ void test_vld3Qu16 (void)
out_uint16x8x3_t = vld3q_u16 (0);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
index 077533c2bed..21f20f880eb 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
@@ -15,6 +15,6 @@ void test_vld3Qu32 (void)
out_uint32x4x3_t = vld3q_u32 (0);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
index c8093b8c1a7..7cbcc46908e 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
@@ -15,6 +15,6 @@ void test_vld3Qu8 (void)
out_uint8x16x3_t = vld3q_u8 (0);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
index e38a1354138..54233697169 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
@@ -15,5 +15,5 @@ void test_vld3_dupf32 (void)
out_float32x2x3_t = vld3_dup_f32 (0);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
index d9f3d14bc44..6c08c8343ca 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
@@ -15,5 +15,5 @@ void test_vld3_dupp16 (void)
out_poly16x4x3_t = vld3_dup_p16 (0);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
index 43c7fe8e229..fd4a6603fe8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
@@ -15,5 +15,5 @@ void test_vld3_dupp8 (void)
out_poly8x8x3_t = vld3_dup_p8 (0);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
index 8fec7c51203..4c11e7ef8ee 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
@@ -15,5 +15,5 @@ void test_vld3_dups16 (void)
out_int16x4x3_t = vld3_dup_s16 (0);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
index 1118d2467e0..b500c24a901 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
@@ -15,5 +15,5 @@ void test_vld3_dups32 (void)
out_int32x2x3_t = vld3_dup_s32 (0);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
index 2e49c0ed989..cf11f5c1c7c 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
@@ -15,5 +15,5 @@ void test_vld3_dups64 (void)
out_int64x1x3_t = vld3_dup_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
index 7327c9fca08..4f0c8300dec 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
@@ -15,5 +15,5 @@ void test_vld3_dups8 (void)
out_int8x8x3_t = vld3_dup_s8 (0);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
index d188fad7543..57e3597bf14 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
@@ -15,5 +15,5 @@ void test_vld3_dupu16 (void)
out_uint16x4x3_t = vld3_dup_u16 (0);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
index 17436e047b5..e4abde4f38a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
@@ -15,5 +15,5 @@ void test_vld3_dupu32 (void)
out_uint32x2x3_t = vld3_dup_u32 (0);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
index cedf058298e..a9171262386 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
@@ -15,5 +15,5 @@ void test_vld3_dupu64 (void)
out_uint64x1x3_t = vld3_dup_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
index 1ebe6159410..84261878529 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
@@ -15,5 +15,5 @@ void test_vld3_dupu8 (void)
out_uint8x8x3_t = vld3_dup_u8 (0);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
index 3ee94ed0bb5..ccbe45f00c6 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
@@ -16,5 +16,5 @@ void test_vld3_lanef32 (void)
out_float32x2x3_t = vld3_lane_f32 (0, arg1_float32x2x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
index 3c8598869e2..94b4ce42152 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
@@ -16,5 +16,5 @@ void test_vld3_lanep16 (void)
out_poly16x4x3_t = vld3_lane_p16 (0, arg1_poly16x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
index f5f9761d03d..12b0786bdc6 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
@@ -16,5 +16,5 @@ void test_vld3_lanep8 (void)
out_poly8x8x3_t = vld3_lane_p8 (0, arg1_poly8x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
index 51cf8a3cf96..5ab744fc2bd 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
@@ -16,5 +16,5 @@ void test_vld3_lanes16 (void)
out_int16x4x3_t = vld3_lane_s16 (0, arg1_int16x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
index 59a29f77e2f..168f3f3639a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
@@ -16,5 +16,5 @@ void test_vld3_lanes32 (void)
out_int32x2x3_t = vld3_lane_s32 (0, arg1_int32x2x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
index e4513aeb960..9d0d1a4b563 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
@@ -16,5 +16,5 @@ void test_vld3_lanes8 (void)
out_int8x8x3_t = vld3_lane_s8 (0, arg1_int8x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
index 86a787c09ab..baf97a98a88 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
@@ -16,5 +16,5 @@ void test_vld3_laneu16 (void)
out_uint16x4x3_t = vld3_lane_u16 (0, arg1_uint16x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
index e4bca9e39fc..05d7107f2e9 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
@@ -16,5 +16,5 @@ void test_vld3_laneu32 (void)
out_uint32x2x3_t = vld3_lane_u32 (0, arg1_uint32x2x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
index 554178a735b..af755635069 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
@@ -16,5 +16,5 @@ void test_vld3_laneu8 (void)
out_uint8x8x3_t = vld3_lane_u8 (0, arg1_uint8x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3f32.c b/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
index ba18fe0d300..120f834d5b9 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
@@ -15,5 +15,5 @@ void test_vld3f32 (void)
out_float32x2x3_t = vld3_f32 (0);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3p16.c b/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
index 513a3ad77a5..2c47f5e8e56 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
@@ -15,5 +15,5 @@ void test_vld3p16 (void)
out_poly16x4x3_t = vld3_p16 (0);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3p8.c b/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
index c93984ea7ed..77c2462e2c9 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
@@ -15,5 +15,5 @@ void test_vld3p8 (void)
out_poly8x8x3_t = vld3_p8 (0);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3s16.c b/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
index f9e6212bd40..355ede8c8eb 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
@@ -15,5 +15,5 @@ void test_vld3s16 (void)
out_int16x4x3_t = vld3_s16 (0);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3s32.c b/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
index cd1256649b2..8d18a8843ce 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
@@ -15,5 +15,5 @@ void test_vld3s32 (void)
out_int32x2x3_t = vld3_s32 (0);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3s64.c b/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
index 5a62f84ccf8..67bb3568f99 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
@@ -15,5 +15,5 @@ void test_vld3s64 (void)
out_int64x1x3_t = vld3_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3s8.c b/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
index b3c3125f933..1be5d11bf86 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
@@ -15,5 +15,5 @@ void test_vld3s8 (void)
out_int8x8x3_t = vld3_s8 (0);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3u16.c b/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
index 0cd54998658..4db18f04987 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
@@ -15,5 +15,5 @@ void test_vld3u16 (void)
out_uint16x4x3_t = vld3_u16 (0);
}
-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3u32.c b/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
index bdb66e00080..82c10ff1602 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
@@ -15,5 +15,5 @@ void test_vld3u32 (void)
out_uint32x2x3_t = vld3_u32 (0);
}
-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3u64.c b/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
index ba9465d4e85..bca1df48f10 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
@@ -15,5 +15,5 @@ void test_vld3u64 (void)
out_uint64x1x3_t = vld3_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3u8.c b/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
index ec6e2a4db46..c8ac20af1a4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
@@ -15,5 +15,5 @@ void test_vld3u8 (void)
out_uint8x8x3_t = vld3_u8 (0);
}
-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
index 9e596b71bbf..5c2499cdc61 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
@@ -16,5 +16,5 @@ void test_vld4Q_lanef32 (void)
out_float32x4x4_t = vld4q_lane_f32 (0, arg1_float32x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
index 3ca293a8837..1d2d84e6370 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
@@ -16,5 +16,5 @@ void test_vld4Q_lanep16 (void)
out_poly16x8x4_t = vld4q_lane_p16 (0, arg1_poly16x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
index f6de5e378e3..df23d281c6b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
@@ -16,5 +16,5 @@ void test_vld4Q_lanes16 (void)
out_int16x8x4_t = vld4q_lane_s16 (0, arg1_int16x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
index 0c3c0715161..db1daff7b8d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
@@ -16,5 +16,5 @@ void test_vld4Q_lanes32 (void)
out_int32x4x4_t = vld4q_lane_s32 (0, arg1_int32x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
index 301cf8f24a2..e2da0ea27c4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
@@ -16,5 +16,5 @@ void test_vld4Q_laneu16 (void)
out_uint16x8x4_t = vld4q_lane_u16 (0, arg1_uint16x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
index 4ff7a9d7b74..d2960ecfc4a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
@@ -16,5 +16,5 @@ void test_vld4Q_laneu32 (void)
out_uint32x4x4_t = vld4q_lane_u32 (0, arg1_uint32x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
index 2b59415cc9a..0a6e7e6bea4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
@@ -15,6 +15,6 @@ void test_vld4Qf32 (void)
out_float32x4x4_t = vld4q_f32 (0);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
index 510e0f20cf7..5d902f531dd 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
@@ -15,6 +15,6 @@ void test_vld4Qp16 (void)
out_poly16x8x4_t = vld4q_p16 (0);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
index c89ae63496e..e6d66b048a0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
@@ -15,6 +15,6 @@ void test_vld4Qp8 (void)
out_poly8x16x4_t = vld4q_p8 (0);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
index 98f42705f8e..04394215d59 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
@@ -15,6 +15,6 @@ void test_vld4Qs16 (void)
out_int16x8x4_t = vld4q_s16 (0);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
index 16d6133c601..4101fa1bf9d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
@@ -15,6 +15,6 @@ void test_vld4Qs32 (void)
out_int32x4x4_t = vld4q_s32 (0);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
index 3a4620f7896..9e74f1e4bec 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
@@ -15,6 +15,6 @@ void test_vld4Qs8 (void)
out_int8x16x4_t = vld4q_s8 (0);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
index 197adf8115e..6b84331f647 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
@@ -15,6 +15,6 @@ void test_vld4Qu16 (void)
out_uint16x8x4_t = vld4q_u16 (0);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
index 942ccfb743a..55f7e93e928 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
@@ -15,6 +15,6 @@ void test_vld4Qu32 (void)
out_uint32x4x4_t = vld4q_u32 (0);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
index 93dad160332..9c766c127fe 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
@@ -15,6 +15,6 @@ void test_vld4Qu8 (void)
out_uint8x16x4_t = vld4q_u8 (0);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
index c7fe78ff6c2..5315db2d176 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
@@ -15,5 +15,5 @@ void test_vld4_dupf32 (void)
out_float32x2x4_t = vld4_dup_f32 (0);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
index b88a76c2fdf..7ed8224cfcd 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
@@ -15,5 +15,5 @@ void test_vld4_dupp16 (void)
out_poly16x4x4_t = vld4_dup_p16 (0);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
index cc9d17e7097..ca1f8fa9810 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
@@ -15,5 +15,5 @@ void test_vld4_dupp8 (void)
out_poly8x8x4_t = vld4_dup_p8 (0);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
index c167f01c4ed..43dab8f2e9d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
@@ -15,5 +15,5 @@ void test_vld4_dups16 (void)
out_int16x4x4_t = vld4_dup_s16 (0);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
index 8279d31b810..183e3e9ef20 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
@@ -15,5 +15,5 @@ void test_vld4_dups32 (void)
out_int32x2x4_t = vld4_dup_s32 (0);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
index 30b1b2b9a0d..f4c50493a3a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
@@ -15,5 +15,5 @@ void test_vld4_dups64 (void)
out_int64x1x4_t = vld4_dup_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
index 1775b524c62..3a4684a0977 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
@@ -15,5 +15,5 @@ void test_vld4_dups8 (void)
out_int8x8x4_t = vld4_dup_s8 (0);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
index 43571141f0d..a436cf09291 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
@@ -15,5 +15,5 @@ void test_vld4_dupu16 (void)
out_uint16x4x4_t = vld4_dup_u16 (0);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
index aefcac61be9..6836abd69e0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
@@ -15,5 +15,5 @@ void test_vld4_dupu32 (void)
out_uint32x2x4_t = vld4_dup_u32 (0);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
index 59f6e04c370..244eb61886f 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
@@ -15,5 +15,5 @@ void test_vld4_dupu64 (void)
out_uint64x1x4_t = vld4_dup_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
index 7ace026a5cc..33c78751755 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
@@ -15,5 +15,5 @@ void test_vld4_dupu8 (void)
out_uint8x8x4_t = vld4_dup_u8 (0);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
index 1fd27263070..0fc0ab5fcb9 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
@@ -16,5 +16,5 @@ void test_vld4_lanef32 (void)
out_float32x2x4_t = vld4_lane_f32 (0, arg1_float32x2x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
index 0f021aff0fc..b7407ade183 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
@@ -16,5 +16,5 @@ void test_vld4_lanep16 (void)
out_poly16x4x4_t = vld4_lane_p16 (0, arg1_poly16x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
index a6d6a9f6a09..7e084106d67 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
@@ -16,5 +16,5 @@ void test_vld4_lanep8 (void)
out_poly8x8x4_t = vld4_lane_p8 (0, arg1_poly8x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
index 3b29ec8c9a8..0dc653c5ffb 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
@@ -16,5 +16,5 @@ void test_vld4_lanes16 (void)
out_int16x4x4_t = vld4_lane_s16 (0, arg1_int16x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
index 86383dbdb07..a3bdaf2349d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
@@ -16,5 +16,5 @@ void test_vld4_lanes32 (void)
out_int32x2x4_t = vld4_lane_s32 (0, arg1_int32x2x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
index 80586c3d669..8555220fab5 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
@@ -16,5 +16,5 @@ void test_vld4_lanes8 (void)
out_int8x8x4_t = vld4_lane_s8 (0, arg1_int8x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
index 4425b5e19f1..4a417f744be 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
@@ -16,5 +16,5 @@ void test_vld4_laneu16 (void)
out_uint16x4x4_t = vld4_lane_u16 (0, arg1_uint16x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
index 09d27220e35..c1e013a9f2e 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
@@ -16,5 +16,5 @@ void test_vld4_laneu32 (void)
out_uint32x2x4_t = vld4_lane_u32 (0, arg1_uint32x2x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
index 5c1a76f2832..31dcf8ae6d6 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
@@ -16,5 +16,5 @@ void test_vld4_laneu8 (void)
out_uint8x8x4_t = vld4_lane_u8 (0, arg1_uint8x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4f32.c b/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
index e3315813eed..aa755c0f232 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
@@ -15,5 +15,5 @@ void test_vld4f32 (void)
out_float32x2x4_t = vld4_f32 (0);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4p16.c b/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
index d5b415eca5e..e0300e8b48a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
@@ -15,5 +15,5 @@ void test_vld4p16 (void)
out_poly16x4x4_t = vld4_p16 (0);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4p8.c b/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
index 785e86a2fac..7fbb29cf3dc 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
@@ -15,5 +15,5 @@ void test_vld4p8 (void)
out_poly8x8x4_t = vld4_p8 (0);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4s16.c b/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
index b725e5d9c50..a5ef07b202f 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
@@ -15,5 +15,5 @@ void test_vld4s16 (void)
out_int16x4x4_t = vld4_s16 (0);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4s32.c b/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
index eaa7b36d58a..08b929475e2 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
@@ -15,5 +15,5 @@ void test_vld4s32 (void)
out_int32x2x4_t = vld4_s32 (0);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4s64.c b/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
index 3bc5e43f11d..99ea5480374 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
@@ -15,5 +15,5 @@ void test_vld4s64 (void)
out_int64x1x4_t = vld4_s64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4s8.c b/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
index 94789dca9c6..c9574671ee8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
@@ -15,5 +15,5 @@ void test_vld4s8 (void)
out_int8x8x4_t = vld4_s8 (0);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4u16.c b/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
index bd4cef90b57..4dea8af02be 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
@@ -15,5 +15,5 @@ void test_vld4u16 (void)
out_uint16x4x4_t = vld4_u16 (0);
}
-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4u32.c b/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
index d98f0d4768b..aee2225897d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
@@ -15,5 +15,5 @@ void test_vld4u32 (void)
out_uint32x2x4_t = vld4_u32 (0);
}
-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4u64.c b/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
index 55418309a85..2e8575406f4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
@@ -15,5 +15,5 @@ void test_vld4u64 (void)
out_uint64x1x4_t = vld4_u64 (0);
}
-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4u8.c b/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
index af2e686e067..ec1d9f9c400 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
@@ -15,5 +15,5 @@ void test_vld4u8 (void)
out_uint8x8x4_t = vld4_u8 (0);
}
-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
index 4b09964191f..1f95128e644 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
@@ -16,5 +16,5 @@ void test_vst1Q_lanef32 (void)
vst1q_lane_f32 (arg0_float32_t, arg1_float32x4_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
index d619d5fc94d..90e7ccc1bf0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
@@ -16,5 +16,5 @@ void test_vst1Q_lanep16 (void)
vst1q_lane_p16 (arg0_poly16_t, arg1_poly16x8_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
index 9bc250befe6..6abb646c41a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
@@ -16,5 +16,5 @@ void test_vst1Q_lanep8 (void)
vst1q_lane_p8 (arg0_poly8_t, arg1_poly8x16_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
index 81281a25d10..ec283e228a7 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
@@ -16,5 +16,5 @@ void test_vst1Q_lanes16 (void)
vst1q_lane_s16 (arg0_int16_t, arg1_int16x8_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
index 43f769e6d74..6e73d6e118f 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
@@ -16,5 +16,5 @@ void test_vst1Q_lanes32 (void)
vst1q_lane_s32 (arg0_int32_t, arg1_int32x4_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
index 7ea5940d445..46d369c99a8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
@@ -16,5 +16,5 @@ void test_vst1Q_lanes64 (void)
vst1q_lane_s64 (arg0_int64_t, arg1_int64x2_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
index f34faa5e2d6..d7b3a1c12a3 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
@@ -16,5 +16,5 @@ void test_vst1Q_lanes8 (void)
vst1q_lane_s8 (arg0_int8_t, arg1_int8x16_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
index e90dccf96db..27958f6d07e 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
@@ -16,5 +16,5 @@ void test_vst1Q_laneu16 (void)
vst1q_lane_u16 (arg0_uint16_t, arg1_uint16x8_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
index 42816c0431e..b4aa760e481 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
@@ -16,5 +16,5 @@ void test_vst1Q_laneu32 (void)
vst1q_lane_u32 (arg0_uint32_t, arg1_uint32x4_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
index 8b87921a169..54faaa3fec0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
@@ -16,5 +16,5 @@ void test_vst1Q_laneu64 (void)
vst1q_lane_u64 (arg0_uint64_t, arg1_uint64x2_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
index 4eeee81bbe9..9b09e72c2cc 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
@@ -16,5 +16,5 @@ void test_vst1Q_laneu8 (void)
vst1q_lane_u8 (arg0_uint8_t, arg1_uint8x16_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
index bd25c0656ab..a4b3d8a1cdf 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
@@ -16,5 +16,5 @@ void test_vst1Qf32 (void)
vst1q_f32 (arg0_float32_t, arg1_float32x4_t);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
index a055bb63a68..9b48733716b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
@@ -16,5 +16,5 @@ void test_vst1Qp16 (void)
vst1q_p16 (arg0_poly16_t, arg1_poly16x8_t);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
index fa98e7ab8a7..f3843399e52 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
@@ -16,5 +16,5 @@ void test_vst1Qp8 (void)
vst1q_p8 (arg0_poly8_t, arg1_poly8x16_t);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
index 4265f3118c9..e6c39cf35f8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
@@ -16,5 +16,5 @@ void test_vst1Qs16 (void)
vst1q_s16 (arg0_int16_t, arg1_int16x8_t);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
index d252f9a348c..587dcf0ecdf 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
@@ -16,5 +16,5 @@ void test_vst1Qs32 (void)
vst1q_s32 (arg0_int32_t, arg1_int32x4_t);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
index 01aeebf9825..50511d1ea2f 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
@@ -16,5 +16,5 @@ void test_vst1Qs64 (void)
vst1q_s64 (arg0_int64_t, arg1_int64x2_t);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
index 860b8c5f21b..2de9814b070 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
@@ -16,5 +16,5 @@ void test_vst1Qs8 (void)
vst1q_s8 (arg0_int8_t, arg1_int8x16_t);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
index 2c3cc222dab..81d8cc5ef96 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
@@ -16,5 +16,5 @@ void test_vst1Qu16 (void)
vst1q_u16 (arg0_uint16_t, arg1_uint16x8_t);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
index f67fc1abe4d..408c6b29ea1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
@@ -16,5 +16,5 @@ void test_vst1Qu32 (void)
vst1q_u32 (arg0_uint32_t, arg1_uint32x4_t);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
index e0a4d984128..1c17e5b0c1c 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
@@ -16,5 +16,5 @@ void test_vst1Qu64 (void)
vst1q_u64 (arg0_uint64_t, arg1_uint64x2_t);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
index ff9c66fc9d2..1605e275680 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
@@ -16,5 +16,5 @@ void test_vst1Qu8 (void)
vst1q_u8 (arg0_uint8_t, arg1_uint8x16_t);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
index 57f1106008f..78170314030 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
@@ -16,5 +16,5 @@ void test_vst1_lanef32 (void)
vst1_lane_f32 (arg0_float32_t, arg1_float32x2_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
index a5fc94fe104..c6a19daf2b0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
@@ -16,5 +16,5 @@ void test_vst1_lanep16 (void)
vst1_lane_p16 (arg0_poly16_t, arg1_poly16x4_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
index 6a5ca7ea939..1b5dd4f77f4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
@@ -16,5 +16,5 @@ void test_vst1_lanep8 (void)
vst1_lane_p8 (arg0_poly8_t, arg1_poly8x8_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
index 9e1ee3a7fae..4efdc502497 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
@@ -16,5 +16,5 @@ void test_vst1_lanes16 (void)
vst1_lane_s16 (arg0_int16_t, arg1_int16x4_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
index 251b8a96808..9c3c1354cb9 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
@@ -16,5 +16,5 @@ void test_vst1_lanes32 (void)
vst1_lane_s32 (arg0_int32_t, arg1_int32x2_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
index fb48c8b62cd..64fed4a1006 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
@@ -16,5 +16,5 @@ void test_vst1_lanes64 (void)
vst1_lane_s64 (arg0_int64_t, arg1_int64x1_t, 0);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
index bc932aed417..59646f8a0f4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
@@ -16,5 +16,5 @@ void test_vst1_lanes8 (void)
vst1_lane_s8 (arg0_int8_t, arg1_int8x8_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
index 0ba3d3838d9..6ae71664723 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
@@ -16,5 +16,5 @@ void test_vst1_laneu16 (void)
vst1_lane_u16 (arg0_uint16_t, arg1_uint16x4_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
index bf953c4b2d8..369abf7fa35 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
@@ -16,5 +16,5 @@ void test_vst1_laneu32 (void)
vst1_lane_u32 (arg0_uint32_t, arg1_uint32x2_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
index 4f486d3f190..7296fee8bdd 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
@@ -16,5 +16,5 @@ void test_vst1_laneu64 (void)
vst1_lane_u64 (arg0_uint64_t, arg1_uint64x1_t, 0);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
index 144864f788d..ba6076e1f77 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
@@ -16,5 +16,5 @@ void test_vst1_laneu8 (void)
vst1_lane_u8 (arg0_uint8_t, arg1_uint8x8_t, 1);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1f32.c b/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
index 3690958bcd1..f3460f5e7c2 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
@@ -16,5 +16,5 @@ void test_vst1f32 (void)
vst1_f32 (arg0_float32_t, arg1_float32x2_t);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1p16.c b/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
index aa38de11179..7504c5cf8a5 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
@@ -16,5 +16,5 @@ void test_vst1p16 (void)
vst1_p16 (arg0_poly16_t, arg1_poly16x4_t);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1p8.c b/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
index bfef51d6d54..3059aac60e9 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
@@ -16,5 +16,5 @@ void test_vst1p8 (void)
vst1_p8 (arg0_poly8_t, arg1_poly8x8_t);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1s16.c b/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
index a5e785d3e36..fbddb2fd79d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
@@ -16,5 +16,5 @@ void test_vst1s16 (void)
vst1_s16 (arg0_int16_t, arg1_int16x4_t);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1s32.c b/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
index a0088ae51d4..f264db0363f 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
@@ -16,5 +16,5 @@ void test_vst1s32 (void)
vst1_s32 (arg0_int32_t, arg1_int32x2_t);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1s64.c b/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
index fc304f92a70..64de48bb013 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
@@ -16,5 +16,5 @@ void test_vst1s64 (void)
vst1_s64 (arg0_int64_t, arg1_int64x1_t);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1s8.c b/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
index b63274004a6..7916448d88b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
@@ -16,5 +16,5 @@ void test_vst1s8 (void)
vst1_s8 (arg0_int8_t, arg1_int8x8_t);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1u16.c b/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
index 381a47e89ef..797aef16f86 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
@@ -16,5 +16,5 @@ void test_vst1u16 (void)
vst1_u16 (arg0_uint16_t, arg1_uint16x4_t);
}
-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1u32.c b/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
index ec73ac68123..563ea9dc391 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
@@ -16,5 +16,5 @@ void test_vst1u32 (void)
vst1_u32 (arg0_uint32_t, arg1_uint32x2_t);
}
-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1u64.c b/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
index 8cd9a28d81e..b95f5d587a1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
@@ -16,5 +16,5 @@ void test_vst1u64 (void)
vst1_u64 (arg0_uint64_t, arg1_uint64x1_t);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1u8.c b/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
index ff557cee44d..75358e769a1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
@@ -16,5 +16,5 @@ void test_vst1u8 (void)
vst1_u8 (arg0_uint8_t, arg1_uint8x8_t);
}
-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
index 2d35d1ce4da..4857356321d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
@@ -16,5 +16,5 @@ void test_vst2Q_lanef32 (void)
vst2q_lane_f32 (arg0_float32_t, arg1_float32x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
index 8a8a84672d3..bed15034c27 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
@@ -16,5 +16,5 @@ void test_vst2Q_lanep16 (void)
vst2q_lane_p16 (arg0_poly16_t, arg1_poly16x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
index 5b01c0ce709..57867352f13 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
@@ -16,5 +16,5 @@ void test_vst2Q_lanes16 (void)
vst2q_lane_s16 (arg0_int16_t, arg1_int16x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
index 81e125f20d1..cf0dc15dd46 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
@@ -16,5 +16,5 @@ void test_vst2Q_lanes32 (void)
vst2q_lane_s32 (arg0_int32_t, arg1_int32x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
index ed4a1e610ad..b751e6b97af 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
@@ -16,5 +16,5 @@ void test_vst2Q_laneu16 (void)
vst2q_lane_u16 (arg0_uint16_t, arg1_uint16x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
index d2f39ffd1b3..b5fbe0e2814 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
@@ -16,5 +16,5 @@ void test_vst2Q_laneu32 (void)
vst2q_lane_u32 (arg0_uint32_t, arg1_uint32x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
index 426a19570cb..56f9adcda51 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
@@ -16,6 +16,6 @@ void test_vst2Qf32 (void)
vst2q_f32 (arg0_float32_t, arg1_float32x4x2_t);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
index aeae48c0f09..1841990339c 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
@@ -16,6 +16,6 @@ void test_vst2Qp16 (void)
vst2q_p16 (arg0_poly16_t, arg1_poly16x8x2_t);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
index d18410cb505..2d98ec910e0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
@@ -16,6 +16,6 @@ void test_vst2Qp8 (void)
vst2q_p8 (arg0_poly8_t, arg1_poly8x16x2_t);
}
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
index 9fad004eb53..39395f6d021 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
@@ -16,6 +16,6 @@ void test_vst2Qs16 (void)
vst2q_s16 (arg0_int16_t, arg1_int16x8x2_t);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
index 6cd063d757e..1768d478682 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
@@ -16,6 +16,6 @@ void test_vst2Qs32 (void)
vst2q_s32 (arg0_int32_t, arg1_int32x4x2_t);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
index c09dea2e31b..423cb8c8f72 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
@@ -16,6 +16,6 @@ void test_vst2Qs8 (void)
vst2q_s8 (arg0_int8_t, arg1_int8x16x2_t);
}
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
index 6a5cf5635f6..a25958a720a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
@@ -16,6 +16,6 @@ void test_vst2Qu16 (void)
vst2q_u16 (arg0_uint16_t, arg1_uint16x8x2_t);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
index 4b4d27fb4b2..47722b3521d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
@@ -16,6 +16,6 @@ void test_vst2Qu32 (void)
vst2q_u32 (arg0_uint32_t, arg1_uint32x4x2_t);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
index e1b32e84eff..b794780266a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
@@ -16,6 +16,6 @@ void test_vst2Qu8 (void)
vst2q_u8 (arg0_uint8_t, arg1_uint8x16x2_t);
}
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
index 5aa11e799e8..e7752920e79 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
@@ -16,5 +16,5 @@ void test_vst2_lanef32 (void)
vst2_lane_f32 (arg0_float32_t, arg1_float32x2x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
index 27fe65056d2..be9913b3960 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
@@ -16,5 +16,5 @@ void test_vst2_lanep16 (void)
vst2_lane_p16 (arg0_poly16_t, arg1_poly16x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
index b6ee44109cb..0a95e268d67 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
@@ -16,5 +16,5 @@ void test_vst2_lanep8 (void)
vst2_lane_p8 (arg0_poly8_t, arg1_poly8x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
index 00303752f47..728593ccbae 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
@@ -16,5 +16,5 @@ void test_vst2_lanes16 (void)
vst2_lane_s16 (arg0_int16_t, arg1_int16x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
index 6f2cf260d1e..32d49b58c6c 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
@@ -16,5 +16,5 @@ void test_vst2_lanes32 (void)
vst2_lane_s32 (arg0_int32_t, arg1_int32x2x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
index 5e32ccb61c7..9e67eb32343 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
@@ -16,5 +16,5 @@ void test_vst2_lanes8 (void)
vst2_lane_s8 (arg0_int8_t, arg1_int8x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
index bfdf447b15b..d56f2096151 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
@@ -16,5 +16,5 @@ void test_vst2_laneu16 (void)
vst2_lane_u16 (arg0_uint16_t, arg1_uint16x4x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
index 22580003f62..053704cea07 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
@@ -16,5 +16,5 @@ void test_vst2_laneu32 (void)
vst2_lane_u32 (arg0_uint32_t, arg1_uint32x2x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
index b10c78abf1c..a35360088b0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
@@ -16,5 +16,5 @@ void test_vst2_laneu8 (void)
vst2_lane_u8 (arg0_uint8_t, arg1_uint8x8x2_t, 1);
}
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2f32.c b/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
index 45c084f082c..b43c4135ba1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
@@ -16,5 +16,5 @@ void test_vst2f32 (void)
vst2_f32 (arg0_float32_t, arg1_float32x2x2_t);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2p16.c b/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
index 9f29ddf26de..1d112ff658b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
@@ -16,5 +16,5 @@ void test_vst2p16 (void)
vst2_p16 (arg0_poly16_t, arg1_poly16x4x2_t);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2p8.c b/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
index 92ae9c40a85..59c4d62e349 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
@@ -16,5 +16,5 @@ void test_vst2p8 (void)
vst2_p8 (arg0_poly8_t, arg1_poly8x8x2_t);
}
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2s16.c b/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
index 30b6a2b0433..eb6cb59a40d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
@@ -16,5 +16,5 @@ void test_vst2s16 (void)
vst2_s16 (arg0_int16_t, arg1_int16x4x2_t);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2s32.c b/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
index 208e2586b8a..a17b58dc474 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
@@ -16,5 +16,5 @@ void test_vst2s32 (void)
vst2_s32 (arg0_int32_t, arg1_int32x2x2_t);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2s64.c b/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
index 4cc53b46797..668ae50a434 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
@@ -16,5 +16,5 @@ void test_vst2s64 (void)
vst2_s64 (arg0_int64_t, arg1_int64x1x2_t);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2s8.c b/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
index e56b49341fa..343414e34d2 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
@@ -16,5 +16,5 @@ void test_vst2s8 (void)
vst2_s8 (arg0_int8_t, arg1_int8x8x2_t);
}
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2u16.c b/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
index 7d8d83ec537..903279d0dc4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
@@ -16,5 +16,5 @@ void test_vst2u16 (void)
vst2_u16 (arg0_uint16_t, arg1_uint16x4x2_t);
}
-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2u32.c b/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
index dafab12ca57..1396ed119ef 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
@@ -16,5 +16,5 @@ void test_vst2u32 (void)
vst2_u32 (arg0_uint32_t, arg1_uint32x2x2_t);
}
-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2u64.c b/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
index 64f433b18e2..006e31f257e 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
@@ -16,5 +16,5 @@ void test_vst2u64 (void)
vst2_u64 (arg0_uint64_t, arg1_uint64x1x2_t);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2u8.c b/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
index 1b1b6e26602..55cd3477993 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
@@ -16,5 +16,5 @@ void test_vst2u8 (void)
vst2_u8 (arg0_uint8_t, arg1_uint8x8x2_t);
}
-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
index 334bc26adc8..8e4f0dca93d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
@@ -16,5 +16,5 @@ void test_vst3Q_lanef32 (void)
vst3q_lane_f32 (arg0_float32_t, arg1_float32x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
index c108bac1db4..f8fcb977f53 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
@@ -16,5 +16,5 @@ void test_vst3Q_lanep16 (void)
vst3q_lane_p16 (arg0_poly16_t, arg1_poly16x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
index c32ffb6fca1..3fde1a3afc7 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
@@ -16,5 +16,5 @@ void test_vst3Q_lanes16 (void)
vst3q_lane_s16 (arg0_int16_t, arg1_int16x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
index faafb9333c8..1eb428922e4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
@@ -16,5 +16,5 @@ void test_vst3Q_lanes32 (void)
vst3q_lane_s32 (arg0_int32_t, arg1_int32x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
index f3fc1c60d9b..ca98dded6fa 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
@@ -16,5 +16,5 @@ void test_vst3Q_laneu16 (void)
vst3q_lane_u16 (arg0_uint16_t, arg1_uint16x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
index e11f4a395e6..a2a59d7a789 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
@@ -16,5 +16,5 @@ void test_vst3Q_laneu32 (void)
vst3q_lane_u32 (arg0_uint32_t, arg1_uint32x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
index 61dc577d7b4..b4b480fb78d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
@@ -16,6 +16,6 @@ void test_vst3Qf32 (void)
vst3q_f32 (arg0_float32_t, arg1_float32x4x3_t);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
index 87d76964272..aa34886f97b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
@@ -16,6 +16,6 @@ void test_vst3Qp16 (void)
vst3q_p16 (arg0_poly16_t, arg1_poly16x8x3_t);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
index 0681c9a47f2..b13fcd7e288 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
@@ -16,6 +16,6 @@ void test_vst3Qp8 (void)
vst3q_p8 (arg0_poly8_t, arg1_poly8x16x3_t);
}
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
index e9b86407519..6cac405f05d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
@@ -16,6 +16,6 @@ void test_vst3Qs16 (void)
vst3q_s16 (arg0_int16_t, arg1_int16x8x3_t);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
index 2ec2ef0b7c4..3c8437094fd 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
@@ -16,6 +16,6 @@ void test_vst3Qs32 (void)
vst3q_s32 (arg0_int32_t, arg1_int32x4x3_t);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
index d6362573a8b..fee56af4244 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
@@ -16,6 +16,6 @@ void test_vst3Qs8 (void)
vst3q_s8 (arg0_int8_t, arg1_int8x16x3_t);
}
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
index f10c69f4d6a..af3910b7f44 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
@@ -16,6 +16,6 @@ void test_vst3Qu16 (void)
vst3q_u16 (arg0_uint16_t, arg1_uint16x8x3_t);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
index 08820891e6e..8828885aff8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
@@ -16,6 +16,6 @@ void test_vst3Qu32 (void)
vst3q_u32 (arg0_uint32_t, arg1_uint32x4x3_t);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
index 919a1cbbb00..c273fe6dc98 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
@@ -16,6 +16,6 @@ void test_vst3Qu8 (void)
vst3q_u8 (arg0_uint8_t, arg1_uint8x16x3_t);
}
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
index d527c7803a6..de654e90788 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
@@ -16,5 +16,5 @@ void test_vst3_lanef32 (void)
vst3_lane_f32 (arg0_float32_t, arg1_float32x2x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
index 491f8eb399b..de733ff676a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
@@ -16,5 +16,5 @@ void test_vst3_lanep16 (void)
vst3_lane_p16 (arg0_poly16_t, arg1_poly16x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
index 0546c3ab57c..a9a26447f94 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
@@ -16,5 +16,5 @@ void test_vst3_lanep8 (void)
vst3_lane_p8 (arg0_poly8_t, arg1_poly8x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
index 48257891956..a98b40714d8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
@@ -16,5 +16,5 @@ void test_vst3_lanes16 (void)
vst3_lane_s16 (arg0_int16_t, arg1_int16x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
index 51da4144d78..5b2450c6756 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
@@ -16,5 +16,5 @@ void test_vst3_lanes32 (void)
vst3_lane_s32 (arg0_int32_t, arg1_int32x2x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
index b75f2109ba1..8cd04f71649 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
@@ -16,5 +16,5 @@ void test_vst3_lanes8 (void)
vst3_lane_s8 (arg0_int8_t, arg1_int8x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
index 9686054976b..692058d9110 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
@@ -16,5 +16,5 @@ void test_vst3_laneu16 (void)
vst3_lane_u16 (arg0_uint16_t, arg1_uint16x4x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
index da1af40523b..32a5193a351 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
@@ -16,5 +16,5 @@ void test_vst3_laneu32 (void)
vst3_lane_u32 (arg0_uint32_t, arg1_uint32x2x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
index 47eccc0dffa..952ffcbec03 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
@@ -16,5 +16,5 @@ void test_vst3_laneu8 (void)
vst3_lane_u8 (arg0_uint8_t, arg1_uint8x8x3_t, 1);
}
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3f32.c b/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
index ac871786a9c..e80b8e91622 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
@@ -16,5 +16,5 @@ void test_vst3f32 (void)
vst3_f32 (arg0_float32_t, arg1_float32x2x3_t);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3p16.c b/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
index 08a861b9f41..1d7831264ef 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
@@ -16,5 +16,5 @@ void test_vst3p16 (void)
vst3_p16 (arg0_poly16_t, arg1_poly16x4x3_t);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3p8.c b/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
index d357fdfadf8..ca8c5ec439d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
@@ -16,5 +16,5 @@ void test_vst3p8 (void)
vst3_p8 (arg0_poly8_t, arg1_poly8x8x3_t);
}
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3s16.c b/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
index 4fc940e691a..5c1bcf9dedd 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
@@ -16,5 +16,5 @@ void test_vst3s16 (void)
vst3_s16 (arg0_int16_t, arg1_int16x4x3_t);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3s32.c b/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
index 82b4cfa6a71..3f5a3aad149 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
@@ -16,5 +16,5 @@ void test_vst3s32 (void)
vst3_s32 (arg0_int32_t, arg1_int32x2x3_t);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3s64.c b/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
index a8e86d2368f..8c6a851db94 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
@@ -16,5 +16,5 @@ void test_vst3s64 (void)
vst3_s64 (arg0_int64_t, arg1_int64x1x3_t);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3s8.c b/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
index 563534db21c..8853fbaf510 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
@@ -16,5 +16,5 @@ void test_vst3s8 (void)
vst3_s8 (arg0_int8_t, arg1_int8x8x3_t);
}
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3u16.c b/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
index 679d7b833eb..e17c6c8d68a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
@@ -16,5 +16,5 @@ void test_vst3u16 (void)
vst3_u16 (arg0_uint16_t, arg1_uint16x4x3_t);
}
-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3u32.c b/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
index 8705c5eb640..3b7d8ce20b9 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
@@ -16,5 +16,5 @@ void test_vst3u32 (void)
vst3_u32 (arg0_uint32_t, arg1_uint32x2x3_t);
}
-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3u64.c b/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
index 4b15e68b324..08d9c7a0841 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
@@ -16,5 +16,5 @@ void test_vst3u64 (void)
vst3_u64 (arg0_uint64_t, arg1_uint64x1x3_t);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3u8.c b/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
index 0e31b3b3ab1..78944cba084 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
@@ -16,5 +16,5 @@ void test_vst3u8 (void)
vst3_u8 (arg0_uint8_t, arg1_uint8x8x3_t);
}
-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
index cb2de05bb4b..adbb4d56992 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
@@ -16,5 +16,5 @@ void test_vst4Q_lanef32 (void)
vst4q_lane_f32 (arg0_float32_t, arg1_float32x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
index 3d0f81d0c7d..587477c87fd 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
@@ -16,5 +16,5 @@ void test_vst4Q_lanep16 (void)
vst4q_lane_p16 (arg0_poly16_t, arg1_poly16x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
index 6e174a0c9d6..3febdf7d864 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
@@ -16,5 +16,5 @@ void test_vst4Q_lanes16 (void)
vst4q_lane_s16 (arg0_int16_t, arg1_int16x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
index 323626c9252..71406af83b8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
@@ -16,5 +16,5 @@ void test_vst4Q_lanes32 (void)
vst4q_lane_s32 (arg0_int32_t, arg1_int32x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
index 5a396ac3e2e..1229c86a3f1 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
@@ -16,5 +16,5 @@ void test_vst4Q_laneu16 (void)
vst4q_lane_u16 (arg0_uint16_t, arg1_uint16x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
index 4c3dd6a85d2..5e0683f30ed 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
@@ -16,5 +16,5 @@ void test_vst4Q_laneu32 (void)
vst4q_lane_u32 (arg0_uint32_t, arg1_uint32x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
index 4da79bff128..2ecb6b173ad 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
@@ -16,6 +16,6 @@ void test_vst4Qf32 (void)
vst4q_f32 (arg0_float32_t, arg1_float32x4x4_t);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
index 4892d6df4ea..a9b9b7ca95d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
@@ -16,6 +16,6 @@ void test_vst4Qp16 (void)
vst4q_p16 (arg0_poly16_t, arg1_poly16x8x4_t);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
index 3d51e971373..17142c1a066 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
@@ -16,6 +16,6 @@ void test_vst4Qp8 (void)
vst4q_p8 (arg0_poly8_t, arg1_poly8x16x4_t);
}
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
index 9fccc6a6226..8511619fe3c 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
@@ -16,6 +16,6 @@ void test_vst4Qs16 (void)
vst4q_s16 (arg0_int16_t, arg1_int16x8x4_t);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
index faa1db202a5..f65894eabe5 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
@@ -16,6 +16,6 @@ void test_vst4Qs32 (void)
vst4q_s32 (arg0_int32_t, arg1_int32x4x4_t);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
index c68fc821dc9..a74d58b5f10 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
@@ -16,6 +16,6 @@ void test_vst4Qs8 (void)
vst4q_s8 (arg0_int8_t, arg1_int8x16x4_t);
}
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
index 98f9b094d32..b124c7cc99a 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
@@ -16,6 +16,6 @@ void test_vst4Qu16 (void)
vst4q_u16 (arg0_uint16_t, arg1_uint16x8x4_t);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
index c9bfd05f235..fa7d2130db8 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
@@ -16,6 +16,6 @@ void test_vst4Qu32 (void)
vst4q_u32 (arg0_uint32_t, arg1_uint32x4x4_t);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
index 8b86161fa84..d853b12bd19 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
@@ -16,6 +16,6 @@ void test_vst4Qu8 (void)
vst4q_u8 (arg0_uint8_t, arg1_uint8x16x4_t);
}
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
index 4bdde6ea5fe..acef9f0a310 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
@@ -16,5 +16,5 @@ void test_vst4_lanef32 (void)
vst4_lane_f32 (arg0_float32_t, arg1_float32x2x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
index c9889b382b0..64e4713ff09 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
@@ -16,5 +16,5 @@ void test_vst4_lanep16 (void)
vst4_lane_p16 (arg0_poly16_t, arg1_poly16x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
index 3d8ef6e4f02..1ac58df28fc 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
@@ -16,5 +16,5 @@ void test_vst4_lanep8 (void)
vst4_lane_p8 (arg0_poly8_t, arg1_poly8x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
index 255b4b9b799..e7e1e2aeadc 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
@@ -16,5 +16,5 @@ void test_vst4_lanes16 (void)
vst4_lane_s16 (arg0_int16_t, arg1_int16x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
index fc5217381a6..2c99611a868 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
@@ -16,5 +16,5 @@ void test_vst4_lanes32 (void)
vst4_lane_s32 (arg0_int32_t, arg1_int32x2x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
index e9dec5d88c2..7eebc1644e3 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
@@ -16,5 +16,5 @@ void test_vst4_lanes8 (void)
vst4_lane_s8 (arg0_int8_t, arg1_int8x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
index ee513a6409e..decc7caf228 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
@@ -16,5 +16,5 @@ void test_vst4_laneu16 (void)
vst4_lane_u16 (arg0_uint16_t, arg1_uint16x4x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
index 516d04c8840..4cfeddbbbbe 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
@@ -16,5 +16,5 @@ void test_vst4_laneu32 (void)
vst4_lane_u32 (arg0_uint32_t, arg1_uint32x2x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
index 531c2b97494..217ced27a96 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
@@ -16,5 +16,5 @@ void test_vst4_laneu8 (void)
vst4_lane_u8 (arg0_uint8_t, arg1_uint8x8x4_t, 1);
}
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4f32.c b/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
index e3268f9b8ee..931b8ed1571 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
@@ -16,5 +16,5 @@ void test_vst4f32 (void)
vst4_f32 (arg0_float32_t, arg1_float32x2x4_t);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4p16.c b/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
index 67f32f29699..ea58c44fd3f 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
@@ -16,5 +16,5 @@ void test_vst4p16 (void)
vst4_p16 (arg0_poly16_t, arg1_poly16x4x4_t);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4p8.c b/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
index 2ed766a8db3..95e5ccdf134 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
@@ -16,5 +16,5 @@ void test_vst4p8 (void)
vst4_p8 (arg0_poly8_t, arg1_poly8x8x4_t);
}
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4s16.c b/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
index 94794662dd6..7811d74c138 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
@@ -16,5 +16,5 @@ void test_vst4s16 (void)
vst4_s16 (arg0_int16_t, arg1_int16x4x4_t);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4s32.c b/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
index 8d22a040617..f93ea4097e5 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
@@ -16,5 +16,5 @@ void test_vst4s32 (void)
vst4_s32 (arg0_int32_t, arg1_int32x2x4_t);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4s64.c b/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
index c9dffec77ef..796762a3e89 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
@@ -16,5 +16,5 @@ void test_vst4s64 (void)
vst4_s64 (arg0_int64_t, arg1_int64x1x4_t);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4s8.c b/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
index 0dbdfc0476f..877e2c4077e 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
@@ -16,5 +16,5 @@ void test_vst4s8 (void)
vst4_s8 (arg0_int8_t, arg1_int8x8x4_t);
}
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4u16.c b/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
index 4eddaf6d643..5de43f591ab 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
@@ -16,5 +16,5 @@ void test_vst4u16 (void)
vst4_u16 (arg0_uint16_t, arg1_uint16x4x4_t);
}
-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4u32.c b/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
index 06a5d33cbab..1ae9e5e6006 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
@@ -16,5 +16,5 @@ void test_vst4u32 (void)
vst4_u32 (arg0_uint32_t, arg1_uint32x2x4_t);
}
-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4u64.c b/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
index 063a046afcc..2453d6bd512 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
@@ -16,5 +16,5 @@ void test_vst4u64 (void)
vst4_u64 (arg0_uint64_t, arg1_uint64x1x4_t);
}
-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4u8.c b/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
index d4da67b9294..380acc647f3 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
@@ -16,5 +16,5 @@ void test_vst4u8 (void)
vst4_u8 (arg0_uint8_t, arg1_uint8x8x4_t);
}
-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/pr43698.c b/gcc/testsuite/gcc.target/arm/pr43698.c
index 407cf7eac2c..1fc497c22c2 100644
--- a/gcc/testsuite/gcc.target/arm/pr43698.c
+++ b/gcc/testsuite/gcc.target/arm/pr43698.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-Os -march=armv7-a" } */
+/* { dg-options "-Os" } */
#include <stdint.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/arm/pr43920-1.c b/gcc/testsuite/gcc.target/arm/pr43920-1.c
new file mode 100644
index 00000000000..d673f1e88b1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr43920-1.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-mthumb -Os" } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+
+int
+f (int start, int end, int *start_)
+{
+ if (start == -1 || end == -1)
+ return -1;
+
+ if (end - start)
+ return -1;
+
+ *start_ = start;
+
+ return 0;
+}
+
+/* { dg-final { scan-assembler-times "\torr" 0 } } */
+/* { dg-final { scan-assembler-times "\tit\t" 0 } } */
+/* { dg-final { scan-assembler "\tbeq" } } */
diff --git a/gcc/testsuite/gcc.target/arm/pr43920-2.c b/gcc/testsuite/gcc.target/arm/pr43920-2.c
new file mode 100644
index 00000000000..f647165bd63
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr43920-2.c
@@ -0,0 +1,30 @@
+/* { dg-do assemble } */
+/* { dg-options "-mthumb -Os -save-temps" } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+
+#include <stdio.h>
+
+int getFileStartAndLength (int fd, int *start_, size_t *length_)
+{
+ int start, end;
+ size_t length;
+
+ start = lseek (fd, 0L, SEEK_CUR);
+ end = lseek (fd, 0L, SEEK_END);
+
+ if (start == -1 || end == -1)
+ return -1;
+
+ length = end - start;
+ if (length == 0)
+ return -1;
+
+ *start_ = start;
+ *length_ = length;
+
+ return 0;
+}
+
+/* { dg-final { scan-assembler-times "pop" 2 } } */
+/* { dg-final { scan-assembler-times "beq" 3 } } */
+/* { dg-final { object-size text <= 54 } } */
diff --git a/gcc/testsuite/gcc.target/arm/pr46329.c b/gcc/testsuite/gcc.target/arm/pr46329.c
new file mode 100644
index 00000000000..9dd939c7f93
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr46329.c
@@ -0,0 +1,9 @@
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+int __attribute__ ((vector_size (32))) x;
+void
+foo (void)
+{
+ x <<= x;
+}
diff --git a/gcc/testsuite/gcc.target/arm/pr46788.c b/gcc/testsuite/gcc.target/arm/pr46788.c
new file mode 100644
index 00000000000..2236769461a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr46788.c
@@ -0,0 +1,26 @@
+/* { dg-options "-mthumb -O2" } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-final { scan-assembler-not "-32768" } } */
+
+typedef union
+{
+ unsigned long int u_32_value;
+ struct
+ {
+ unsigned short int u_16_value_0;
+ unsigned short int u_16_value_1;
+ } u_16_values;
+} my_union;
+
+
+unsigned long int Test(const unsigned short int wXe)
+{
+ my_union dwCalcVal;
+
+ dwCalcVal.u_16_values.u_16_value_0=wXe;
+ dwCalcVal.u_16_values.u_16_value_1=0x8000u;
+
+ dwCalcVal.u_32_value /=3;
+
+ return (dwCalcVal.u_32_value);
+}
diff --git a/gcc/testsuite/gcc.target/arm/pr46934.c b/gcc/testsuite/gcc.target/arm/pr46934.c
new file mode 100644
index 00000000000..22b8aa83846
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr46934.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-march=armv5te -mthumb -Os" } */
+/* { dg-require-effective-target arm_thumb1_ok } */
+
+int caller (unsigned int reg_type)
+{
+ switch (reg_type)
+ {
+ case 0x80000000:
+ return (int)foo();
+
+ case 0x80000003:
+ return (int) bar();
+
+ case 0x80000001:
+ return (int) baz();
+
+ case 0x80000004:
+ return (int) fooz();
+ }
+}
diff --git a/gcc/testsuite/gcc.target/arm/pr48252.c b/gcc/testsuite/gcc.target/arm/pr48252.c
new file mode 100644
index 00000000000..1a06c71e1be
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr48252.c
@@ -0,0 +1,31 @@
+/* { dg-do run } */
+/* { dg-require-effective-target arm_neon_hw } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include "arm_neon.h"
+#include <stdlib.h>
+
+int main(void)
+{
+ uint8x8_t v1 = {1, 1, 1, 1, 1, 1, 1, 1};
+ uint8x8_t v2 = {2, 2, 2, 2, 2, 2, 2, 2};
+ uint8x8x2_t vd1, vd2;
+ union {uint8x8_t v; uint8_t buf[8];} d1, d2, d3, d4;
+ int i;
+
+ vd1 = vzip_u8(v1, vdup_n_u8(0));
+ vd2 = vzip_u8(v2, vdup_n_u8(0));
+
+ vst1_u8(d1.buf, vd1.val[0]);
+ vst1_u8(d2.buf, vd1.val[1]);
+ vst1_u8(d3.buf, vd2.val[0]);
+ vst1_u8(d4.buf, vd2.val[1]);
+
+ for (i = 0; i < 8; i++)
+ if ((i % 2 == 0 && d4.buf[i] != 2)
+ || (i % 2 == 1 && d4.buf[i] != 0))
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/arm/sync-1.c b/gcc/testsuite/gcc.target/arm/sync-1.c
index ad85a04b398..d1b64810518 100644
--- a/gcc/testsuite/gcc.target/arm/sync-1.c
+++ b/gcc/testsuite/gcc.target/arm/sync-1.c
@@ -1,5 +1,6 @@
-/* { dg-do run } */
-/* { dg-options "-O2 -march=armv7-a" } */
+
+/* { dg-do run { target sync_int_long } } */
+/* { dg-options "-O2" } */
volatile int mem;
diff --git a/gcc/testsuite/gcc.target/arm/unsigned-extend-1.c b/gcc/testsuite/gcc.target/arm/unsigned-extend-1.c
new file mode 100644
index 00000000000..6c55561df95
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/unsigned-extend-1.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=armv6" } */
+
+unsigned char foo (unsigned char c)
+{
+ return (c >= '0') && (c <= '9');
+}
+
+/* { dg-final { scan-assembler-not "uxtb" } } */
diff --git a/gcc/testsuite/gcc.target/arm/xor-and.c b/gcc/testsuite/gcc.target/arm/xor-and.c
new file mode 100644
index 00000000000..4b0f79013fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/xor-and.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O -march=armv6" } */
+
+unsigned short foo (unsigned short x)
+{
+ x ^= 0x4002;
+ x >>= 1;
+ x |= 0x8000;
+ return x;
+}
+
+/* { dg-final { scan-assembler "orr" } } */
+/* { dg-final { scan-assembler-not "mvn" } } */
+/* { dg-final { scan-assembler-not "uxth" } } */
diff --git a/gcc/testsuite/gcc.target/avr/pr46779-1.c b/gcc/testsuite/gcc.target/avr/pr46779-1.c
new file mode 100644
index 00000000000..24522f175be
--- /dev/null
+++ b/gcc/testsuite/gcc.target/avr/pr46779-1.c
@@ -0,0 +1,51 @@
+/* { dg-do run } */
+/* { dg-options "-Os -fsplit-wide-types" } */
+
+/* This testcase should uncover bugs like
+ PR46779
+ PR45291
+ PR41894
+
+ The inline asm just serves to direct y into the Y register.
+ Otherwise, it is hard to write a "stable" test case that
+ also fails with slight variations in source code, middle- resp.
+ backend.
+
+ The problem is that Y is also the frame-pointer, and
+ avr.c:avr_hard_regno_mode_ok disallows QI to get in Y-reg.
+ However, the y.a = 0 generates a
+ (set (subreg:QI (reg:HI pseudo)) ...)
+ where pseudo gets allocated to Y.
+
+ Reload fails to generate the right spill.
+*/
+
+#include <stdlib.h>
+
+struct S
+{
+ unsigned char a, b;
+} ab = {12, 34};
+
+void yoo (struct S y)
+{
+ __asm volatile ("ldi %B0, 56" : "+y" (y));
+ y.a = 0;
+ __asm volatile ("; y = %0" : "+y" (y));
+ ab = y;
+}
+
+int main ()
+{
+ yoo (ab);
+
+ if (ab.a != 0)
+ abort();
+
+ if (ab.b != 56)
+ abort();
+
+ exit (0);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/avr/pr46779-2.c b/gcc/testsuite/gcc.target/avr/pr46779-2.c
new file mode 100644
index 00000000000..682070b5ef9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/avr/pr46779-2.c
@@ -0,0 +1,51 @@
+/* { dg-do run } */
+/* { dg-options "-Os -fno-split-wide-types" } */
+
+/* This testcase should uncover bugs like
+ PR46779
+ PR45291
+ PR41894
+
+ The inline asm just serves to direct y into the Y register.
+ Otherwise, it is hard to write a "stable" test case that
+ also fails with slight variations in source code, middle- resp.
+ backend.
+
+ The problem is that Y is also the frame-pointer, and
+ avr.c:avr_hard_regno_mode_ok disallows QI to get in Y-reg.
+ However, the y.a = 0 generates a
+ (set (subreg:QI (reg:HI pseudo)) ...)
+ where pseudo gets allocated to Y.
+
+ Reload fails to generate the right spill.
+*/
+
+#include <stdlib.h>
+
+struct S
+{
+ unsigned char a, b;
+} ab = {12, 34};
+
+void yoo (struct S y)
+{
+ __asm volatile ("ldi %B0, 56" : "+y" (y));
+ y.a = 0;
+ __asm volatile ("; y = %0" : "+y" (y));
+ ab = y;
+}
+
+int main ()
+{
+ yoo (ab);
+
+ if (ab.a != 0)
+ abort();
+
+ if (ab.b != 56)
+ abort();
+
+ exit (0);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr41885.c b/gcc/testsuite/gcc.target/avr/torture/pr41885.c
index 90d00121255..f46bc5a7588 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr41885.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr41885.c
@@ -1,4 +1,4 @@
-/* { dg-options "-w -std=c99" } */
+/* { dg-options "-w -std=c99 -fno-inline" } */
/* { dg-do run } */
#include <limits.h>
diff --git a/gcc/testsuite/gcc.target/avr/torture/trivial.c b/gcc/testsuite/gcc.target/avr/torture/trivial.c
index 91163f9226e..f1beecb1ece 100644
--- a/gcc/testsuite/gcc.target/avr/torture/trivial.c
+++ b/gcc/testsuite/gcc.target/avr/torture/trivial.c
@@ -1,14 +1,15 @@
-/* { dg-do run } */
-#include <stdio.h>
-
-#define __ATTR_PROGMEM__ __attribute__((__progmem__))
-
-#define PROGMEM __ATTR_PROGMEM__
-char PROGMEM a1 = 0x12;
-int PROGMEM a2 = 0x2345;
-long PROGMEM a3 = 0x12345678;
-int main(void)
-{
- printf("Hello World\n");
- return 0;
-}
+/* { dg-do run } */
+
+#include <stdio.h>
+
+#define PROGMEM __attribute__((__progmem__))
+
+const char PROGMEM a1 = 0x12;
+const int PROGMEM a2 = 0x2345;
+const long PROGMEM a3 = 0x12345678;
+
+int main(void)
+{
+ printf ("Hello World\n");
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/avr/trivial.c b/gcc/testsuite/gcc.target/avr/trivial.c
index 91163f9226e..f1beecb1ece 100644
--- a/gcc/testsuite/gcc.target/avr/trivial.c
+++ b/gcc/testsuite/gcc.target/avr/trivial.c
@@ -1,14 +1,15 @@
-/* { dg-do run } */
-#include <stdio.h>
-
-#define __ATTR_PROGMEM__ __attribute__((__progmem__))
-
-#define PROGMEM __ATTR_PROGMEM__
-char PROGMEM a1 = 0x12;
-int PROGMEM a2 = 0x2345;
-long PROGMEM a3 = 0x12345678;
-int main(void)
-{
- printf("Hello World\n");
- return 0;
-}
+/* { dg-do run } */
+
+#include <stdio.h>
+
+#define PROGMEM __attribute__((__progmem__))
+
+const char PROGMEM a1 = 0x12;
+const int PROGMEM a2 = 0x2345;
+const long PROGMEM a3 = 0x12345678;
+
+int main(void)
+{
+ printf ("Hello World\n");
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c
new file mode 100644
index 00000000000..9ca524d29f9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_abs_fr1x16 (0x7777);
+ if (t1 != 0x7777)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c
new file mode 100644
index 00000000000..00ef1dc1699
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_abs_fr1x16 (0x8000);
+ if (t1 != 0x7fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c
new file mode 100644
index 00000000000..a464c02d58a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_abs_fr1x32 (0x77777777);
+ if (t != 0x77777777)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-2.c
new file mode 100644
index 00000000000..9d642b1231f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_abs_fr1x32 (0x80000000);
+ if (t != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-1.c
new file mode 100644
index 00000000000..86badedce1f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-1.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff);
+
+ t = __builtin_bfin_abs_fr2x16 (a);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x5fff || t2 != 0x1)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-2.c
new file mode 100644
index 00000000000..80844bdaf69
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/abs_fr2x16-2.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = __builtin_bfin_abs_fr2x16 (a);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x1001 || t2 != 0x0001)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-1.c
new file mode 100644
index 00000000000..bd8f46d838d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-1.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_add_fr1x16 (0x3000, 0x2000);
+ if (t1 != 0x5000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-2.c
new file mode 100644
index 00000000000..1054e95aa46
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x16-2.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_add_fr1x16 (0x3000, 0xd000);
+ if (t1 != 0x0)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-1.c
new file mode 100644
index 00000000000..a14ad688dd4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_add_fr1x32 (0x40003000, 0x50002000);
+ if (t != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c
new file mode 100644
index 00000000000..2345cb09e96
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_add_fr1x32 (0x40003000, 0xc000d000);
+ if (t != 0x00010000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c
new file mode 100644
index 00000000000..69736978bcc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x4000, 0x2000);
+ b = __builtin_bfin_compose_2x16 (0x8000, 0x5000);
+
+ t = __builtin_bfin_add_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffffc000 || t2 != 0x7000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c
new file mode 100644
index 00000000000..f7a309b8c9c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x7000, 0xc000);
+ b = __builtin_bfin_compose_2x16 (0x8000, 0xc000);
+
+ t = __builtin_bfin_add_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xfffff000 || t2 != 0xffff8000)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp b/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp
new file mode 100644
index 00000000000..645460e03c6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp
@@ -0,0 +1,39 @@
+# Copyright (C) 2009 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# GCC testsuite that uses the `c-torture.exp' driver, looping over
+# optimization options.
+
+load_lib c-torture.exp
+load_lib target-supports.exp
+load_lib torture-options.exp
+
+if { ![istarget bfin-*-*] } then {
+ return
+}
+
+
+torture-init
+set-torture-options [list {} -Os -O0 -O1 -O2 -O3 {-ffast-math -mfast-fp -O2} {-mfast-fp -O2} {-ffast-math -O2}]
+set additional_flags "-W -Wall"
+
+foreach src [lsort [find $srcdir/$subdir *.c]] {
+ if {[runtest_file_p $runtests $src]} {
+ c-torture-execute [list $src] $additional_flags
+ }
+}
+
+torture-finish
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/circptr.c b/gcc/testsuite/gcc.target/bfin/builtins/circptr.c
new file mode 100644
index 00000000000..8419aa680cc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/circptr.c
@@ -0,0 +1,29 @@
+#include <stdlib.h>
+
+int t[] = { 1, 2, 3, 4, 5, 6, 7 };
+int expect[] = { 1, 3, 6, 10, 15, 21, 28, 29, 31, 34, 38, 43, 49, 56 };
+
+int foo (int n)
+{
+ int *p = t;
+ int sum = 0;
+ int i;
+ for (i = 0; i < n; i++) {
+ sum += *p;
+ p = __builtin_bfin_circptr (p, sizeof *p, t, sizeof t);
+ }
+ return sum;
+}
+
+int main ()
+{
+ int i;
+ int *p = expect;
+ for (i = 0; i < 14; i++) {
+ int sum = foo (i + 1);
+ if (sum != *p)
+ abort ();
+ p = __builtin_bfin_circptr (p, sizeof *p, expect, sizeof expect);
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c
new file mode 100644
index 00000000000..17344bf06e0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, c, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x2000, 0x1000);
+ b = __builtin_bfin_compose_2x16 (0x2000, 0x1000);
+ c = __builtin_bfin_compose_2x16 (0x2000, 0x1000);
+
+ t = __builtin_bfin_cmplx_mac (a, b, c);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x2800 || t2 != 0x0a00)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c
new file mode 100644
index 00000000000..99471165195
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, c, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x2000, 0x1000);
+ b = __builtin_bfin_compose_2x16 (0xb000, 0xe000);
+ c = __builtin_bfin_compose_2x16 (0xa000, 0x8000);
+
+ t = __builtin_bfin_cmplx_mac (a, b, c);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x7fff || t2 != 0xfffff400)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-1.c
new file mode 100644
index 00000000000..10fcd4ca4fb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-1.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, c, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x0000, 0x0000);
+ b = __builtin_bfin_compose_2x16 (0x2000, 0x1000);
+ c = __builtin_bfin_compose_2x16 (0x2000, 0x1000);
+
+ t = __builtin_bfin_cmplx_msu (a, b, c);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xfffff800 || t2 != 0x600)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-2.c
new file mode 100644
index 00000000000..b2a7c5db397
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_msu_fr2x16-2.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, c, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x2000, 0x1000);
+ b = __builtin_bfin_compose_2x16 (0xb000, 0xe000);
+ c = __builtin_bfin_compose_2x16 (0xa000, 0x8000);
+
+ t = __builtin_bfin_cmplx_msu (a, b, c);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffffb800 || t2 != 0x2c00)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-1.c
new file mode 100644
index 00000000000..c6b12257e17
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-1.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x2000, 0x1000);
+ b = __builtin_bfin_compose_2x16 (0x2000, 0x1000);
+
+ t = __builtin_bfin_cmplx_mul (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x800 || t2 != 0xfffffa00)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-2.c
new file mode 100644
index 00000000000..d31fc15676a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mul_fr2x16-2.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xa000, 0x8000);
+ b = __builtin_bfin_compose_2x16 (0xb000, 0xe000);
+
+ t = __builtin_bfin_cmplx_mul (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x6800 || t2 != 0xffffe400)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-1.c
new file mode 100644
index 00000000000..1d1c0f701a4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-1.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a;
+ fract16 t;
+
+ a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff);
+
+ t = __builtin_bfin_diff_hl_fr2x16 (a);
+ if (t != 0x6000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-2.c
new file mode 100644
index 00000000000..329ff2eb8a8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/diff_hl_fr2x16-2.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a;
+ fract16 t;
+
+ a = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = __builtin_bfin_diff_hl_fr2x16 (a);
+ if (t != 0x1000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-1.c
new file mode 100644
index 00000000000..02d93e758f0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-1.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a;
+ fract16 t;
+
+ a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff);
+
+ t = __builtin_bfin_diff_lh_fr2x16 (a);
+ if (t != 0xffffa000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-2.c
new file mode 100644
index 00000000000..1e5dc699f43
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/diff_lh_fr2x16-2.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a;
+ fract16 t;
+
+ a = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = __builtin_bfin_diff_lh_fr2x16 (a);
+ if (t != -0x1000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-1.c
new file mode 100644
index 00000000000..cb66ecfb366
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-1.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0x3000);
+ b = __builtin_bfin_compose_2x16 (0x4000, 0x2000);
+
+ t = __builtin_bfin_dspaddsubsat (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x7fff || t2 != 0x1000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-2.c
new file mode 100644
index 00000000000..8d6cab6913d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/dspaddsubsat_fr2x16-2.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xd000, 0x8000);
+ b = __builtin_bfin_compose_2x16 (0x1000, 0x5000);
+
+ t = __builtin_bfin_dspaddsubsat (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffffe000 || t2 != 0xffff8000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-1.c
new file mode 100644
index 00000000000..0a16a4894e6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-1.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0x3000);
+ b = __builtin_bfin_compose_2x16 (0x6000, 0x6000);
+
+ t = __builtin_bfin_dspsubaddsat (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != -0x1000 || t2 != 0x7fff)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-2.c
new file mode 100644
index 00000000000..a69451ebaca
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/dspsubaddsat_fr2x16-2.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xd000, 0xa000);
+ b = __builtin_bfin_compose_2x16 (0x1000, 0xc000);
+
+ t = __builtin_bfin_dspsubaddsat (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffffc000 || t2 != 0xffff8000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/hisilh.c b/gcc/testsuite/gcc.target/bfin/builtins/hisilh.c
index 4efbfd44915..4efbfd44915 100644
--- a/gcc/testsuite/gcc.target/bfin/hisilh.c
+++ b/gcc/testsuite/gcc.target/bfin/builtins/hisilh.c
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-1.c
new file mode 100644
index 00000000000..c27d56a96df
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_lshl_fr1x16 (0x1101, 4);
+ if (t1 != 0x1010)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-2.c
new file mode 100644
index 00000000000..9be2abf8888
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_lshl_fr1x16 (0x4004, -4);
+ if (t1 != 0x0400)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-1.c
new file mode 100644
index 00000000000..b9cf84f1874
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-1.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = __builtin_bfin_lshl_fr2x16 (a, 4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xfffffff0 || t2 != 0xfffffff0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-2.c
new file mode 100644
index 00000000000..c2f13d57e07
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/lshl_fr2x16-2.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = __builtin_bfin_lshl_fr2x16 (a, -4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x0cff || t2 != 0x0fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-1.c
new file mode 100644
index 00000000000..1d364b28a55
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_max_fr1x16 (0x7777, 0x7000);
+ if (t1 != 0x7777)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-2.c
new file mode 100644
index 00000000000..eadf2fb050c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_max_fr1x16 (0x8000, 0xc000);
+ if (t1 != -0x4000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-1.c
new file mode 100644
index 00000000000..90adcef064b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_max_fr1x32 (0x77777777, 0x70007000);
+ if (t != 0x77777777)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-2.c
new file mode 100644
index 00000000000..b2ed2afa8ec
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/max_fr1x32-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_max_fr1x32 (0x80000000, 0xc0000000);
+ if (t != 0xc0000000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-1.c
new file mode 100644
index 00000000000..2d968fd3338
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-1.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff);
+ b = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = __builtin_bfin_max_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x5fff || t2 != 0x0001)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-2.c
new file mode 100644
index 00000000000..369c208519e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/max_fr2x16-2.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0xd000);
+ b = __builtin_bfin_compose_2x16 (0xc000, 0x2000);
+
+ t = __builtin_bfin_max_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x5000 || t2 != 0x2000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-1.c
new file mode 100644
index 00000000000..686dcdceff4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_min_fr1x16 (0x7777, 0x7000);
+ if (t1 != 0x7000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-2.c
new file mode 100644
index 00000000000..655804034ac
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_min_fr1x16 (0x7000, 0xc001);
+ if (t1 != -0x3fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-1.c
new file mode 100644
index 00000000000..a824e76ef32
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_min_fr1x32 (0x77777777, 0x70007000);
+ if (t != 0x70007000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-2.c
new file mode 100644
index 00000000000..72151016e09
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/min_fr1x32-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_min_fr1x32 (0x70007000, 0xc000c000);
+ if (t != 0xc000c000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-1.c
new file mode 100644
index 00000000000..2f2b401e5e9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-1.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff);
+ b = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = __builtin_bfin_min_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x1001 || t2 != 0xffffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-2.c
new file mode 100644
index 00000000000..af564f43146
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/min_fr2x16-2.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0xd000);
+ b = __builtin_bfin_compose_2x16 (0xc000, 0x2000);
+
+ t = __builtin_bfin_min_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffffc000 || t2 != 0xffffd000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-1.c
new file mode 100644
index 00000000000..06790c94a66
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-1.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b;
+ int t;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0x7000);
+ b = __builtin_bfin_compose_2x16 (0x4000, 0x2000);
+
+ t = __builtin_bfin_mulhisihh (a, b);
+ if (t != 0x14000000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-2.c
new file mode 100644
index 00000000000..ef070584eec
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mulhisihh_fr2x16-2.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b;
+ int t;
+
+ a = __builtin_bfin_compose_2x16 (0xc000, 0xa000);
+ b = __builtin_bfin_compose_2x16 (0x7000, 0x2000);
+
+ t = __builtin_bfin_mulhisihh (a, b);
+ if (t != 0xe4000000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-1.c
new file mode 100644
index 00000000000..e2768e399ce
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-1.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b;
+ int t;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0x7000);
+ b = __builtin_bfin_compose_2x16 (0x4000, 0x2000);
+
+ t = __builtin_bfin_mulhisihl (a, b);
+ if (t != 0xa000000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-2.c
new file mode 100644
index 00000000000..b64eabe6bf8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mulhisihl_fr2x16-2.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b;
+ int t;
+
+ a = __builtin_bfin_compose_2x16 (0xa000, 0x7000);
+ b = __builtin_bfin_compose_2x16 (0xe000, 0x5000);
+
+ t = __builtin_bfin_mulhisihl (a, b);
+ if (t != 0xe2000000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-1.c
new file mode 100644
index 00000000000..99faef51aa4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-1.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b;
+ int t;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0x7000);
+ b = __builtin_bfin_compose_2x16 (0x4000, 0x2000);
+
+ t = __builtin_bfin_mulhisilh (a, b);
+ if (t != 0x1c000000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-2.c
new file mode 100644
index 00000000000..3aef80cf872
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mulhisilh_fr2x16-2.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b;
+ int t;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0x7000);
+ b = __builtin_bfin_compose_2x16 (0xa000, 0x5000);
+
+ t = __builtin_bfin_mulhisilh (a, b);
+ if (t != 0xd6000000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-1.c
new file mode 100644
index 00000000000..acf1e9e1bd6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-1.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b;
+ int t;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0x7000);
+ b = __builtin_bfin_compose_2x16 (0x4000, 0x2000);
+
+ t = __builtin_bfin_mulhisill (a, b);
+ if (t != 0xe000000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-2.c
new file mode 100644
index 00000000000..147d8e14b06
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mulhisill_fr2x16-2.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b;
+ int t;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0xa000);
+ b = __builtin_bfin_compose_2x16 (0x4000, 0x2000);
+
+ t = __builtin_bfin_mulhisill (a, b);
+ if (t != 0xf4000000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-1.c
new file mode 100644
index 00000000000..614b4444141
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_mult_fr1x16 (0x7777, 0x0007);
+ if (t1 != 0x0006)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-2.c
new file mode 100644
index 00000000000..aec3b7ccf64
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_mult_fr1x16 (0x0002, 0x0001);
+ if (t1 != 0x0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-1.c
new file mode 100644
index 00000000000..8c8ad87bda4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_mult_fr1x32 (0x7777, 0x0001);
+ if (t != 0x0000eeee)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-2.c
new file mode 100644
index 00000000000..95d4f9d12a1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_mult_fr1x32 (0x0002, 0x0001);
+ if (t != 0x0004)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-1.c
new file mode 100644
index 00000000000..ff41bf5cfbc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_mult_fr1x32x32 (0x80000000, 0x80000000);
+ if (t != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-2.c
new file mode 100644
index 00000000000..6f5d5cbdbc6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_mult_fr1x32x32 (0x7fff0000, 0x00000007);
+ if (t != 0x6)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-1.c b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-1.c
new file mode 100644
index 00000000000..9bdfae632df
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_mult_fr1x32x32NS (0x80000000, 0x80000000);
+ if (t != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-2.c b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-2.c
new file mode 100644
index 00000000000..cb3f18c50a7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr1x32x32NS-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_mult_fr1x32x32NS (0x7fff0000, 0x00000007);
+ if (t != 0x6)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-1.c
new file mode 100644
index 00000000000..d15dd4516cd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-1.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff);
+ b = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = __builtin_bfin_mult_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x0c00 || t2 != 0xffffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-2.c
new file mode 100644
index 00000000000..6592eaf866f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/mult_fr2x16-2.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0xd000);
+ b = __builtin_bfin_compose_2x16 (0xc000, 0x2000);
+
+ t = __builtin_bfin_mult_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffffd800 || t2 != 0xfffff400)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-1.c
new file mode 100644
index 00000000000..3612d9320d1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_multr_fr1x16 (0x7777, 0x0007);
+ if (t1 != 0x0007)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-2.c
new file mode 100644
index 00000000000..e5fb2173e35
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/multr_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_multr_fr1x16 (0x0002, 0x0001);
+ if (t1 != 0x0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-1.c
new file mode 100644
index 00000000000..33d5b4a42d7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-1.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff);
+ b = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = __builtin_bfin_multr_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xc01 || t2 != 0x0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-2.c
new file mode 100644
index 00000000000..a2feed2f107
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/multr_fr2x16-2.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5000, 0xd000);
+ b = __builtin_bfin_compose_2x16 (0xc000, 0x2000);
+
+ t = __builtin_bfin_multr_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffffd800 || t2 != 0xfffff400)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-1.c
new file mode 100644
index 00000000000..10b2626c735
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_negate_fr1x16 (0x7fff);
+ if (t1 != -0x7fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-2.c
new file mode 100644
index 00000000000..c839dce321d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_negate_fr1x16 (0x8000);
+ if (t1 != 0x7fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-3.c b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-3.c
new file mode 100644
index 00000000000..0462de20af8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x16-3.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_negate_fr1x16 (0xc000);
+ if (t1 != 0x4000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-1.c
new file mode 100644
index 00000000000..c7ba22c7198
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_negate_fr1x32 (0x7fffffff);
+ if (t != -0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-2.c
new file mode 100644
index 00000000000..70532f4abf1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr1x32-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_negate_fr1x32 (0x80000000);
+ if (t != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-1.c
new file mode 100644
index 00000000000..449d8b8ac37
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-1.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff);
+
+ t = __builtin_bfin_negate_fr2x16 (a);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != -0x5fff || t2 != 0x1)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-2.c
new file mode 100644
index 00000000000..db750648cab
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/negate_fr2x16-2.c
@@ -0,0 +1,21 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+ t = __builtin_bfin_negate_fr2x16 (a);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != -0x1001 || t2 != -0x1)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/norm16-1.c
new file mode 100644
index 00000000000..b8a53dd0edc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm16-1.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+extern void exit (int);
+
+int main ()
+{
+ int a;
+
+ a = __builtin_bfin_norm_fr1x16 (0x1234);
+ if (a != 2)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/norm16-2.c
new file mode 100644
index 00000000000..2534e9ff906
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm16-2.c
@@ -0,0 +1,18 @@
+extern void abort (void);
+extern void exit (int);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 f = 0x1234, g;
+ int a;
+
+ a = __builtin_bfin_norm_fr1x16 (f);
+ g = f << a;
+ if (g != (fract16) 0x48d0)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm16-3.c b/gcc/testsuite/gcc.target/bfin/builtins/norm16-3.c
new file mode 100644
index 00000000000..24b6fcbee81
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm16-3.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+extern void exit (int);
+
+int main ()
+{
+ int a;
+
+ a = __builtin_bfin_norm_fr1x16 (0xfedc);
+ if (a != 6)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm16-4.c b/gcc/testsuite/gcc.target/bfin/builtins/norm16-4.c
new file mode 100644
index 00000000000..986af6c552d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm16-4.c
@@ -0,0 +1,18 @@
+extern void abort (void);
+extern void exit (int);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 f = 0xfedc, g;
+ int a;
+
+ a = __builtin_bfin_norm_fr1x16 (f);
+ g = f << a;
+ if (g != (fract16) 0xb700)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm16-5.c b/gcc/testsuite/gcc.target/bfin/builtins/norm16-5.c
new file mode 100644
index 00000000000..f85ce96ab3b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm16-5.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+extern void exit (int);
+
+int main ()
+{
+ int a;
+
+ a = __builtin_bfin_norm_fr1x16 (0);
+ if (a != 15)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm16-6.c b/gcc/testsuite/gcc.target/bfin/builtins/norm16-6.c
new file mode 100644
index 00000000000..bc30f23da58
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm16-6.c
@@ -0,0 +1,18 @@
+extern void abort (void);
+extern void exit (int);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 f = 0, g;
+ int a;
+
+ a = __builtin_bfin_norm_fr1x16 (f);
+ g = f << a;
+ if (g != (fract16) 0)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm16-7.c b/gcc/testsuite/gcc.target/bfin/builtins/norm16-7.c
new file mode 100644
index 00000000000..4edb00f3432
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm16-7.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+extern void exit (int);
+
+int main ()
+{
+ int a;
+
+ a = __builtin_bfin_norm_fr1x16 (0xffff);
+ if (a != 15)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm16-8.c b/gcc/testsuite/gcc.target/bfin/builtins/norm16-8.c
new file mode 100644
index 00000000000..c04219f4d80
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm16-8.c
@@ -0,0 +1,18 @@
+extern void abort (void);
+extern void exit (int);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 f = 0xffff, g;
+ int a;
+
+ a = __builtin_bfin_norm_fr1x16 (f);
+ g = f << a;
+ if (g != (fract16) 0x8000)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-1.c
new file mode 100644
index 00000000000..f8c6b93caf6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-1.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+extern void exit (int);
+
+int main ()
+{
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (0x12345678);
+ if (a != 2)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-10.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-10.c
new file mode 100644
index 00000000000..ba4ad920c38
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-10.c
@@ -0,0 +1,18 @@
+extern void abort (void);
+extern void exit (int);
+
+typedef int fract32;
+
+int main ()
+{
+ fract32 f = 0x1234, g;
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (f);
+ g = f << a;
+ if (g != 0x48d00000)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-11.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-11.c
new file mode 100644
index 00000000000..ae675b0d223
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-11.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+extern void exit (int);
+
+int main ()
+{
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (0xfffffedc);
+ if (a != 22)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-12.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-12.c
new file mode 100644
index 00000000000..b7fbea7acb9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-12.c
@@ -0,0 +1,18 @@
+extern void abort (void);
+extern void exit (int);
+
+typedef int fract32;
+
+int main ()
+{
+ fract32 f = 0xfffffedc, g;
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (f);
+ g = f << a;
+ if (g != 0xb7000000)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-2.c
new file mode 100644
index 00000000000..4972ed43d41
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-2.c
@@ -0,0 +1,18 @@
+extern void abort (void);
+extern void exit (int);
+
+typedef int fract32;
+
+int main ()
+{
+ fract32 f = 0x12345678, g;
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (f);
+ g = f << a;
+ if (g != 0x48d159e0)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-3.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-3.c
new file mode 100644
index 00000000000..cc565b7290d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-3.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+extern void exit (int);
+
+int main ()
+{
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (0xfedcba98);
+ if (a != 6)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-4.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-4.c
new file mode 100644
index 00000000000..1b3ae8ddeed
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-4.c
@@ -0,0 +1,18 @@
+extern void abort (void);
+extern void exit (int);
+
+typedef int fract32;
+
+int main ()
+{
+ fract32 f = 0xfedcba98, g;
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (f);
+ g = f << a;
+ if (g != 0xb72ea600)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-5.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-5.c
new file mode 100644
index 00000000000..33c927917f2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-5.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+extern void exit (int);
+
+int main ()
+{
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (0);
+ if (a != 31)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-6.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-6.c
new file mode 100644
index 00000000000..2150c5a98b0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-6.c
@@ -0,0 +1,18 @@
+extern void abort (void);
+extern void exit (int);
+
+typedef int fract32;
+
+int main ()
+{
+ fract32 f = 0, g;
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (f);
+ g = f << a;
+ if (g != 0)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-7.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-7.c
new file mode 100644
index 00000000000..87f4579f1ea
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-7.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+extern void exit (int);
+
+int main ()
+{
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (0xffffffff);
+ if (a != 31)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-8.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-8.c
new file mode 100644
index 00000000000..4918a06a011
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-8.c
@@ -0,0 +1,18 @@
+extern void abort (void);
+extern void exit (int);
+
+typedef int fract32;
+
+int main ()
+{
+ fract32 f = 0xffffffff, g;
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (f);
+ g = f << a;
+ if (g != 0x80000000)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm32-9.c b/gcc/testsuite/gcc.target/bfin/builtins/norm32-9.c
new file mode 100644
index 00000000000..08468ac3d3d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm32-9.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+extern void exit (int);
+
+int main ()
+{
+ int a;
+
+ a = __builtin_bfin_norm_fr1x32 (0x1234);
+ if (a != 18)
+ abort ();
+
+ exit (0);
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-1.c
new file mode 100644
index 00000000000..ad80cd4c1c3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ int m;
+
+ m = __builtin_bfin_norm_fr1x16 (0x1000);
+ if (m != 2)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-2.c
new file mode 100644
index 00000000000..59e868daa83
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ int m;
+
+ m = __builtin_bfin_norm_fr1x16 (0x4000);
+ if (m != 0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-3.c b/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-3.c
new file mode 100644
index 00000000000..c769240b038
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x16-3.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ int m;
+
+ m = __builtin_bfin_norm_fr1x16 (0xe000);
+ if (m != 2)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-1.c
new file mode 100644
index 00000000000..fe476f58f40
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-1.c
@@ -0,0 +1,13 @@
+extern void abort (void);
+
+int main ()
+{
+ int m;
+
+ m = __builtin_bfin_norm_fr1x32 (0xefffeff1);
+ if (m != 2)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-2.c
new file mode 100644
index 00000000000..7cf1ebecaa9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/norm_fr1x32-2.c
@@ -0,0 +1,13 @@
+extern void abort (void);
+
+int main ()
+{
+ int m;
+
+ m = __builtin_bfin_norm_fr1x32 (0x0000eff1);
+ if (m != 15)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-1.c
new file mode 100644
index 00000000000..f234bc9bf5e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_shl_fr1x16 (0x1101, 4);
+ if (t1 != 0x7fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-2.c
new file mode 100644
index 00000000000..95e3bfb0c32
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_shl_fr1x16 (0x4004, -4);
+ if (t1 != 0x0400)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-3.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-3.c
new file mode 100644
index 00000000000..1c77a7c01b2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-3.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_shl_fr1x16 (0xc101, 4);
+ if (t1 != 0xffff8000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-4.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-4.c
new file mode 100644
index 00000000000..7cb9e8c6873
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-4.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_shl_fr1x16 (0xd004, -4);
+ if (t1 != 0xfffffd00)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-5.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-5.c
new file mode 100644
index 00000000000..251ff1e18df
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-5.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short fract16;
+
+fract16 foo (fract16 f, short n)
+{
+ return __builtin_bfin_shl_fr1x16 (f, n);
+}
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = foo (0x1101, 4);
+ if (t1 != 0x7fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-6.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-6.c
new file mode 100644
index 00000000000..8d50f209107
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-6.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short fract16;
+
+fract16 foo (fract16 f, short n)
+{
+ return __builtin_bfin_shl_fr1x16 (f, n);
+}
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = foo (0x4004, -4);
+ if (t1 != 0x0400)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-7.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-7.c
new file mode 100644
index 00000000000..f78303a1807
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-7.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short fract16;
+
+fract16 foo (fract16 f, short n)
+{
+ return __builtin_bfin_shl_fr1x16 (f, n);
+}
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = foo (0xc101, 4);
+ if (t1 != 0xffff8000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-8.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-8.c
new file mode 100644
index 00000000000..cea723f3383
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x16-8.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short fract16;
+
+fract16 foo (fract16 f, short n)
+{
+ return __builtin_bfin_shl_fr1x16 (f, n);
+}
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = foo (0xd004, -4);
+ if (t1 != 0xfffffd00)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-1.c
new file mode 100644
index 00000000000..c85adfe565b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_shl_fr1x32 (0x7feff4ff, 4);
+ if (t != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-2.c
new file mode 100644
index 00000000000..0a42ddc76fa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_shl_fr1x32 (0x7feff4ff, -4);
+ if (t != 0x7feff4f)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-3.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-3.c
new file mode 100644
index 00000000000..a98bc0c98a4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-3.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_shl_fr1x32 (0xc000e4ff, 4);
+ if (t != 0x80000000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-4.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-4.c
new file mode 100644
index 00000000000..f2d18b37033
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-4.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_shl_fr1x32 (0xc000e4ff, -4);
+ if (t != 0xfc000e4f)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-5.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-5.c
new file mode 100644
index 00000000000..2883c187541
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-5.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef long fract32;
+
+fract32 foo (fract32 f, short n)
+{
+ return __builtin_bfin_shl_fr1x32 (f, n);
+}
+
+int main ()
+{
+ fract32 t;
+
+ t = foo (0x7feff4ff, 4);
+ if (t != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-6.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-6.c
new file mode 100644
index 00000000000..94a4cde1dbb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-6.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef long fract32;
+
+fract32 foo (fract32 f, short n)
+{
+ return __builtin_bfin_shl_fr1x32 (f, n);
+}
+
+int main ()
+{
+ fract32 t;
+
+ t = foo (0x7feff4ff, -4);
+ if (t != 0x7feff4f)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-7.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-7.c
new file mode 100644
index 00000000000..f32423500c7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-7.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef long fract32;
+
+fract32 foo (fract32 f, short n)
+{
+ return __builtin_bfin_shl_fr1x32 (f, n);
+}
+
+int main ()
+{
+ fract32 t;
+
+ t = foo (0xc000e4ff, 4);
+ if (t != 0x80000000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-8.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-8.c
new file mode 100644
index 00000000000..9300650857c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-8.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef long fract32;
+
+fract32 foo (fract32 f, short n)
+{
+ return __builtin_bfin_shl_fr1x32 (f, n);
+}
+
+int main ()
+{
+ fract32 t;
+
+ t = foo (0xc000e4ff, -4);
+ if (t != 0xfc000e4f)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-9.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-9.c
new file mode 100644
index 00000000000..f24a266cc7c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32-9.c
@@ -0,0 +1,19 @@
+extern void abort (void);
+
+typedef long fract32;
+
+fract32 foo (fract32 f, short n)
+{
+ return __builtin_bfin_shl_fr1x32 (f, n);
+}
+
+int main ()
+{
+ fract32 f;
+
+ f = foo (0x12345678, 4);
+ if (f != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32.c
new file mode 100644
index 00000000000..029378ad812
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr1x32.c
@@ -0,0 +1,16 @@
+/* { dg-do run } */
+
+typedef int fract32;
+
+extern void abort (void);
+
+int main ()
+{
+ fract32 f;
+
+ f = __builtin_bfin_shl_fr1x32 (0x12345678, 4);
+ if (f != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-1.c
new file mode 100644
index 00000000000..53ca96047c6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-1.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = __builtin_bfin_shl_fr2x16 (a, 4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffff8000 || t2 != 0xfffffff0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-2.c
new file mode 100644
index 00000000000..9e24db38b7d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-2.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = __builtin_bfin_shl_fr2x16 (a, -4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xfffffcff || t2 != 0xffffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-3.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-3.c
new file mode 100644
index 00000000000..6d91625d833
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-3.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = __builtin_bfin_shl_fr2x16 (a, 4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x7fff || t2 != 0x10)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-4.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-4.c
new file mode 100644
index 00000000000..9b12e847a47
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-4.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = __builtin_bfin_shl_fr2x16 (a, -4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x100 || t2 != 0x0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-5.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-5.c
new file mode 100644
index 00000000000..af9ac3f1588
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-5.c
@@ -0,0 +1,27 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+fract2x16 foo (fract2x16 f, short n)
+{
+ return __builtin_bfin_shl_fr2x16 (f, n);
+}
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = foo (a, 4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffff8000 || t2 != 0xfffffff0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-6.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-6.c
new file mode 100644
index 00000000000..cc080867866
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-6.c
@@ -0,0 +1,27 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+fract2x16 foo (fract2x16 f, short n)
+{
+ return __builtin_bfin_shl_fr2x16 (f, n);
+}
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = foo (a, -4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xfffffcff || t2 != 0xffffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-7.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-7.c
new file mode 100644
index 00000000000..dd235c891ff
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-7.c
@@ -0,0 +1,27 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+fract2x16 foo (fract2x16 f, short n)
+{
+ return __builtin_bfin_shl_fr2x16 (f, n);
+}
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = foo (a, 4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x7fff || t2 != 0x10)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-8.c b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-8.c
new file mode 100644
index 00000000000..ed90541a4b5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shl_fr2x16-8.c
@@ -0,0 +1,27 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+fract2x16 foo (fract2x16 f, short n)
+{
+ return __builtin_bfin_shl_fr2x16 (f, n);
+}
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = foo (a, -4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x100 || t2 != 0x0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-1.c
new file mode 100644
index 00000000000..5a9df3de258
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_shr_fr1x16 (0x1101, -4);
+ if (t1 != 0x7fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-2.c
new file mode 100644
index 00000000000..39dd3a999ad
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_shr_fr1x16 (0x4004, 4);
+ if (t1 != 0x0400)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-3.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-3.c
new file mode 100644
index 00000000000..fff331f6e6d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-3.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short fract16;
+
+fract16 foo (fract16 f, short n)
+{
+ return __builtin_bfin_shr_fr1x16 (f, n);
+}
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = foo (0x1101, -4);
+ if (t1 != 0x7fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-4.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-4.c
new file mode 100644
index 00000000000..8425b7a834c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x16-4.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short fract16;
+
+fract16 foo (fract16 f, short n)
+{
+ return __builtin_bfin_shr_fr1x16 (f, n);
+}
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = foo (0x4004, 4);
+ if (t1 != 0x0400)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-1.c
new file mode 100644
index 00000000000..3a5e12fd60f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_shr_fr1x32 (0x7feff4ff, -4);
+ if (t != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-2.c
new file mode 100644
index 00000000000..6f73462cf6d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_shr_fr1x32 (0x7feff4ff, 4);
+ if (t != 0x7feff4f)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-3.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-3.c
new file mode 100644
index 00000000000..664516365d0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-3.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_shr_fr1x32 (0xc000e4ff, -4);
+ if (t != 0x80000000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-4.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-4.c
new file mode 100644
index 00000000000..56ffe17c592
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-4.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_shr_fr1x32 (0xc000e4ff, 4);
+ if (t != 0xfc000e4f)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-5.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-5.c
new file mode 100644
index 00000000000..6dbb7f2e2b3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-5.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef long fract32;
+
+fract32 foo (fract32 f, short n)
+{
+ return __builtin_bfin_shr_fr1x32 (f, n);
+}
+
+int main ()
+{
+ fract32 t;
+
+ t = foo (0x7feff4ff, -4);
+ if (t != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-6.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-6.c
new file mode 100644
index 00000000000..ef8915474ff
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-6.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef long fract32;
+
+fract32 foo (fract32 f, short n)
+{
+ return __builtin_bfin_shr_fr1x32 (f, n);
+}
+
+int main ()
+{
+ fract32 t;
+
+ t = foo (0x7feff4ff, 4);
+ if (t != 0x7feff4f)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-7.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-7.c
new file mode 100644
index 00000000000..720546a71f3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-7.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef long fract32;
+
+fract32 foo (fract32 f, short n)
+{
+ return __builtin_bfin_shr_fr1x32 (f, n);
+}
+
+int main ()
+{
+ fract32 t;
+
+ t = foo (0xc000e4ff, -4);
+ if (t != 0x80000000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-8.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-8.c
new file mode 100644
index 00000000000..9422f790b5a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-8.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef long fract32;
+
+fract32 foo (fract32 f, short n)
+{
+ return __builtin_bfin_shr_fr1x32 (f, n);
+}
+
+int main ()
+{
+ fract32 t;
+
+ t = foo (0xc000e4ff, 4);
+ if (t != 0xfc000e4f)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-9.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-9.c
new file mode 100644
index 00000000000..caf17203dd5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32-9.c
@@ -0,0 +1,19 @@
+extern void abort (void);
+
+typedef long fract32;
+
+fract32 foo (fract32 f, short n)
+{
+ return __builtin_bfin_shr_fr1x32 (f, n);
+}
+
+int main ()
+{
+ fract32 f;
+
+ f = foo (0x87654321, 4);
+ if (f != 0xf8765432)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32.c
new file mode 100644
index 00000000000..8be9ecfd117
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr1x32.c
@@ -0,0 +1,16 @@
+/* { dg-do run } */
+
+typedef int fract32;
+
+extern void abort (void);
+
+int main ()
+{
+ fract32 f;
+
+ f = __builtin_bfin_shr_fr1x32 (0x87654321, 4);
+ if (f != 0xf8765432)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-1.c
new file mode 100644
index 00000000000..6e936954728
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-1.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = __builtin_bfin_shr_fr2x16 (a, -4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffff8000 || t2 != 0xfffffff0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-2.c
new file mode 100644
index 00000000000..1c83d29149c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-2.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = __builtin_bfin_shr_fr2x16 (a, 4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xfffffcff || t2 != 0xffffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-3.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-3.c
new file mode 100644
index 00000000000..5b6af8b4b4b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-3.c
@@ -0,0 +1,27 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+fract2x16 foo (fract2x16 f, short n)
+{
+ return __builtin_bfin_shr_fr2x16 (f, n);
+}
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = foo (a, -4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xffff8000 || t2 != 0xfffffff0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-4.c b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-4.c
new file mode 100644
index 00000000000..63bbb8bc765
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shr_fr2x16-4.c
@@ -0,0 +1,27 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+fract2x16 foo (fract2x16 f, short n)
+{
+ return __builtin_bfin_shr_fr2x16 (f, n);
+}
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = foo (a, 4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xfffffcff || t2 != 0xffffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-1.c
new file mode 100644
index 00000000000..0de251ee2be
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_shrl_fr1x16 (0x8101, 4);
+ if (t1 != 0x0810)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-2.c
new file mode 100644
index 00000000000..c6b88b6d361
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_shrl_fr1x16 (0x4004, -4);
+ if (t1 != 0x0040)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-3.c b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-3.c
new file mode 100644
index 00000000000..0f8e168f687
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-3.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short fract16;
+
+fract16 foo (fract16 f, short n)
+{
+ return __builtin_bfin_shrl_fr1x16 (f, n);
+}
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = foo (0x8101, 4);
+ if (t1 != 0x0810)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-4.c b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-4.c
new file mode 100644
index 00000000000..d266ce09535
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr1x16-4.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short fract16;
+
+fract16 foo (fract16 f, short n)
+{
+ return __builtin_bfin_shrl_fr1x16 (f, n);
+}
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = foo (0x4004, -4);
+ if (t1 != 0x0040)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-1.c
new file mode 100644
index 00000000000..1252b4d7553
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-1.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = __builtin_bfin_shrl_fr2x16 (a, -4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xfffffff0 || t2 != 0xfffffff0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-2.c
new file mode 100644
index 00000000000..b4bec6e6db2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-2.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = __builtin_bfin_shrl_fr2x16 (a, 4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x0cff || t2 != 0x0fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-3.c b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-3.c
new file mode 100644
index 00000000000..4036dbf53e7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-3.c
@@ -0,0 +1,27 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+fract2x16 foo (fract2x16 f, short n)
+{
+ return __builtin_bfin_shrl_fr2x16 (f, n);
+}
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = foo (a, -4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0xfffffff0 || t2 != 0xfffffff0)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-4.c b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-4.c
new file mode 100644
index 00000000000..b6473fa4d50
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/shrl_fr2x16-4.c
@@ -0,0 +1,27 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+fract2x16 foo (fract2x16 f, short n)
+{
+ return __builtin_bfin_shrl_fr2x16 (f, n);
+}
+
+int main ()
+{
+ fract2x16 a, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0xcfff, 0xffff);
+
+ t = foo (a, 4);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x0cff || t2 != 0x0fff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-1.c
new file mode 100644
index 00000000000..b97bf8d6334
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-1.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_sub_fr1x16 (0x3000, 0x2000);
+ if (t1 != 0x1000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-2.c
new file mode 100644
index 00000000000..5e456803417
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x16-2.c
@@ -0,0 +1,14 @@
+extern void abort (void);
+
+typedef short fract16;
+
+int main ()
+{
+ fract16 t1;
+
+ t1 = __builtin_bfin_sub_fr1x16 (0x3000, 0x4000);
+ if (t1 != -0x1000)
+ abort ();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-1.c b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-1.c
new file mode 100644
index 00000000000..5aedd9199b3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-1.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t1;
+
+ t1 = __builtin_bfin_sub_fr1x32 (0x40003000, 0xc0003000);
+ if (t1 != 0x7fffffff)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-2.c b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-2.c
new file mode 100644
index 00000000000..8ac4a5aade6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr1x32-2.c
@@ -0,0 +1,15 @@
+extern void abort (void);
+
+typedef long fract32;
+
+int main ()
+{
+ fract32 t;
+
+ t = __builtin_bfin_sub_fr1x32 (0x40003000, 0x70002000);
+ if (t != 0xd0001000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-1.c
new file mode 100644
index 00000000000..34b8ac87d2a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-1.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x4000, 0x2000);
+ b = __builtin_bfin_compose_2x16 (0x8000, 0x5000);
+
+ t = __builtin_bfin_sub_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x7fff || t2 != -0x3000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-2.c
new file mode 100644
index 00000000000..52f7d8052c6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/sub_fr2x16-2.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a, b, t;
+ fract16 t1, t2;
+
+ a = __builtin_bfin_compose_2x16 (0x7000, 0xc000);
+ b = __builtin_bfin_compose_2x16 (0xc000, 0xd000);
+
+ t = __builtin_bfin_sub_fr2x16 (a, b);
+ t1 = __builtin_bfin_extract_hi (t);
+ t2 = __builtin_bfin_extract_lo (t);
+ if (t1 != 0x7fff || t2 != -0x1000)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-1.c b/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-1.c
new file mode 100644
index 00000000000..56c4f191eac
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-1.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a;
+ fract16 t;
+
+ a = __builtin_bfin_compose_2x16 (0x5fff, 0xffff);
+
+ t = __builtin_bfin_sum_fr2x16 (a);
+ if (t != 0x5ffe)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-2.c b/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-2.c
new file mode 100644
index 00000000000..2f75bfdfc5e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/bfin/builtins/sum_fr2x16-2.c
@@ -0,0 +1,20 @@
+extern void abort (void);
+
+typedef short __v2hi __attribute ((vector_size(4)));
+typedef __v2hi fract2x16;
+typedef short fract16;
+
+int main ()
+{
+ fract2x16 a;
+ fract16 t;
+
+ a = __builtin_bfin_compose_2x16 (0x1001, 0x0001);
+
+ t = __builtin_bfin_sum_fr2x16 (a);
+ if (t != 0x1002)
+ abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/bfin/hisilh-O0.c b/gcc/testsuite/gcc.target/bfin/hisilh-O0.c
deleted file mode 100644
index 50786b8be67..00000000000
--- a/gcc/testsuite/gcc.target/bfin/hisilh-O0.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* { dg-do run { target bfin*-*-* } } */
-/* { dg-options "-O0" } */
-#include <stdlib.h>
-typedef short raw2x16 __attribute__ ((vector_size(4)));
-
-int x;
-
-int ll(raw2x16 a, raw2x16 b)
-{
- x = __builtin_bfin_mulhisill(a, b);
- return x;
-}
-
-int lh(raw2x16 a, raw2x16 b)
-{
- x = __builtin_bfin_mulhisilh(a, b);
- return x;
-}
-
-int hl(raw2x16 a, raw2x16 b)
-{
- x = __builtin_bfin_mulhisihl(a, b);
- return x;
-}
-
-int hh(raw2x16 a, raw2x16 b)
-{
- x = __builtin_bfin_mulhisihh(a, b);
- return x;
-}
-
-int main ()
-{
- raw2x16 a = __builtin_bfin_compose_2x16 (0x1234, 0x5678);
- raw2x16 b = __builtin_bfin_compose_2x16 (0xFEDC, 0xBA98);
- if (ll (a, b) != 0xe88e8740)
- abort ();
- if (lh (a, b) != 0xff9d5f20)
- abort ();
- if (hl (a, b) != 0xfb1096e0)
- abort ();
- if (hh (a, b) != 0xffeb3cb0)
- abort ();
-
- return 0;
-}
diff --git a/gcc/testsuite/gcc.target/bfin/mcpu-bf512.c b/gcc/testsuite/gcc.target/bfin/mcpu-bf512.c
index 71fbcf38df9..fa2d56d1a48 100644
--- a/gcc/testsuite/gcc.target/bfin/mcpu-bf512.c
+++ b/gcc/testsuite/gcc.target/bfin/mcpu-bf512.c
@@ -10,39 +10,8 @@
#error "__ADSPBF51x__ is not defined"
#endif
-#if __SILICON_REVISION__ != 0x0000
-#error "__SILICON_REVISION__ is not 0x0000"
-#endif
-
-#ifndef __WORKAROUNDS_ENABLED
-#error "__WORKAROUNDS_ENABLED is not defined"
-#endif
-
-#ifdef __WORKAROUND_RETS
-#error "__WORKAROUND_RETS is defined"
-#endif
-
-#ifndef __WORKAROUND_SPECULATIVE_LOADS
-#error "__WORKAROUND_SPECULATIVE_LOADS is not defined"
-#endif
-
-#ifdef __WORKAROUND_SPECULATIVE_SYNCS
-#error "__WORKAROUND_SPECULATIVE_SYNCS is defined"
-#endif
-/* Test for -mcpu=. */
-/* { dg-do preprocess } */
-/* { dg-bfin-options "-mcpu=bf512" } */
-
-#ifndef __ADSPBF512__
-#error "__ADSPBF512__ is not defined"
-#endif
-
-#ifndef __ADSPBF51x__
-#error "__ADSPBF51x__ is not defined"
-#endif
-
-#if __SILICON_REVISION__ != 0x0000
-#error "__SILICON_REVISION__ is not 0x0000"
+#if __SILICON_REVISION__ != 0x0002
+#error "__SILICON_REVISION__ is not 0x0002"
#endif
#ifndef __WORKAROUNDS_ENABLED
diff --git a/gcc/testsuite/gcc.target/bfin/mcpu-bf514.c b/gcc/testsuite/gcc.target/bfin/mcpu-bf514.c
index b1ae2a2ce03..f6c0829119b 100644
--- a/gcc/testsuite/gcc.target/bfin/mcpu-bf514.c
+++ b/gcc/testsuite/gcc.target/bfin/mcpu-bf514.c
@@ -10,39 +10,8 @@
#error "__ADSPBF51x__ is not defined"
#endif
-#if __SILICON_REVISION__ != 0x0000
-#error "__SILICON_REVISION__ is not 0x0000"
-#endif
-
-#ifndef __WORKAROUNDS_ENABLED
-#error "__WORKAROUNDS_ENABLED is not defined"
-#endif
-
-#ifdef __WORKAROUND_RETS
-#error "__WORKAROUND_RETS is defined"
-#endif
-
-#ifndef __WORKAROUND_SPECULATIVE_LOADS
-#error "__WORKAROUND_SPECULATIVE_LOADS is not defined"
-#endif
-
-#ifdef __WORKAROUND_SPECULATIVE_SYNCS
-#error "__WORKAROUND_SPECULATIVE_SYNCS is defined"
-#endif
-/* Test for -mcpu=. */
-/* { dg-do preprocess } */
-/* { dg-bfin-options "-mcpu=bf514" } */
-
-#ifndef __ADSPBF514__
-#error "__ADSPBF514__ is not defined"
-#endif
-
-#ifndef __ADSPBF51x__
-#error "__ADSPBF51x__ is not defined"
-#endif
-
-#if __SILICON_REVISION__ != 0x0000
-#error "__SILICON_REVISION__ is not 0x0000"
+#if __SILICON_REVISION__ != 0x0002
+#error "__SILICON_REVISION__ is not 0x0002"
#endif
#ifndef __WORKAROUNDS_ENABLED
diff --git a/gcc/testsuite/gcc.target/bfin/mcpu-bf516.c b/gcc/testsuite/gcc.target/bfin/mcpu-bf516.c
index 675d2659d27..439b3f40eb5 100644
--- a/gcc/testsuite/gcc.target/bfin/mcpu-bf516.c
+++ b/gcc/testsuite/gcc.target/bfin/mcpu-bf516.c
@@ -10,39 +10,8 @@
#error "__ADSPBF51x__ is not defined"
#endif
-#if __SILICON_REVISION__ != 0x0000
-#error "__SILICON_REVISION__ is not 0x0000"
-#endif
-
-#ifndef __WORKAROUNDS_ENABLED
-#error "__WORKAROUNDS_ENABLED is not defined"
-#endif
-
-#ifdef __WORKAROUND_RETS
-#error "__WORKAROUND_RETS is defined"
-#endif
-
-#ifndef __WORKAROUND_SPECULATIVE_LOADS
-#error "__WORKAROUND_SPECULATIVE_LOADS is not defined"
-#endif
-
-#ifdef __WORKAROUND_SPECULATIVE_SYNCS
-#error "__WORKAROUND_SPECULATIVE_SYNCS is defined"
-#endif
-/* Test for -mcpu=. */
-/* { dg-do preprocess } */
-/* { dg-bfin-options "-mcpu=bf516" } */
-
-#ifndef __ADSPBF516__
-#error "__ADSPBF516__ is not defined"
-#endif
-
-#ifndef __ADSPBF51x__
-#error "__ADSPBF51x__ is not defined"
-#endif
-
-#if __SILICON_REVISION__ != 0x0000
-#error "__SILICON_REVISION__ is not 0x0000"
+#if __SILICON_REVISION__ != 0x0002
+#error "__SILICON_REVISION__ is not 0x0002"
#endif
#ifndef __WORKAROUNDS_ENABLED
diff --git a/gcc/testsuite/gcc.target/bfin/mcpu-bf518.c b/gcc/testsuite/gcc.target/bfin/mcpu-bf518.c
index d0675783b43..aff7f6989cf 100644
--- a/gcc/testsuite/gcc.target/bfin/mcpu-bf518.c
+++ b/gcc/testsuite/gcc.target/bfin/mcpu-bf518.c
@@ -10,39 +10,8 @@
#error "__ADSPBF51x__ is not defined"
#endif
-#if __SILICON_REVISION__ != 0x0000
-#error "__SILICON_REVISION__ is not 0x0000"
-#endif
-
-#ifndef __WORKAROUNDS_ENABLED
-#error "__WORKAROUNDS_ENABLED is not defined"
-#endif
-
-#ifdef __WORKAROUND_RETS
-#error "__WORKAROUND_RETS is defined"
-#endif
-
-#ifndef __WORKAROUND_SPECULATIVE_LOADS
-#error "__WORKAROUND_SPECULATIVE_LOADS is not defined"
-#endif
-
-#ifdef __WORKAROUND_SPECULATIVE_SYNCS
-#error "__WORKAROUND_SPECULATIVE_SYNCS is defined"
-#endif
-/* Test for -mcpu=. */
-/* { dg-do preprocess } */
-/* { dg-bfin-options "-mcpu=bf518" } */
-
-#ifndef __ADSPBF518__
-#error "__ADSPBF518__ is not defined"
-#endif
-
-#ifndef __ADSPBF51x__
-#error "__ADSPBF51x__ is not defined"
-#endif
-
-#if __SILICON_REVISION__ != 0x0000
-#error "__SILICON_REVISION__ is not 0x0000"
+#if __SILICON_REVISION__ != 0x0002
+#error "__SILICON_REVISION__ is not 0x0002"
#endif
#ifndef __WORKAROUNDS_ENABLED
diff --git a/gcc/testsuite/gcc.target/bfin/mcpu-bf542.c b/gcc/testsuite/gcc.target/bfin/mcpu-bf542.c
index 4d95d65def9..c8999713d81 100644
--- a/gcc/testsuite/gcc.target/bfin/mcpu-bf542.c
+++ b/gcc/testsuite/gcc.target/bfin/mcpu-bf542.c
@@ -10,8 +10,8 @@
#error "__ADSPBF54x__ is not defined"
#endif
-#if __SILICON_REVISION__ != 0x0002
-#error "__SILICON_REVISION__ is not 0x0002"
+#if __SILICON_REVISION__ != 0x0004
+#error "__SILICON_REVISION__ is not 0x0004"
#endif
#ifndef __WORKAROUNDS_ENABLED
diff --git a/gcc/testsuite/gcc.target/bfin/mcpu-bf544.c b/gcc/testsuite/gcc.target/bfin/mcpu-bf544.c
index 39314b0089e..9269785057e 100644
--- a/gcc/testsuite/gcc.target/bfin/mcpu-bf544.c
+++ b/gcc/testsuite/gcc.target/bfin/mcpu-bf544.c
@@ -10,8 +10,8 @@
#error "__ADSPBF54x__ is not defined"
#endif
-#if __SILICON_REVISION__ != 0x0002
-#error "__SILICON_REVISION__ is not 0x0002"
+#if __SILICON_REVISION__ != 0x0004
+#error "__SILICON_REVISION__ is not 0x0004"
#endif
#ifndef __WORKAROUNDS_ENABLED
diff --git a/gcc/testsuite/gcc.target/bfin/mcpu-bf547.c b/gcc/testsuite/gcc.target/bfin/mcpu-bf547.c
index 4036c02f416..8f724335c24 100644
--- a/gcc/testsuite/gcc.target/bfin/mcpu-bf547.c
+++ b/gcc/testsuite/gcc.target/bfin/mcpu-bf547.c
@@ -10,8 +10,8 @@
#error "__ADSPBF54x__ is not defined"
#endif
-#if __SILICON_REVISION__ != 0x0002
-#error "__SILICON_REVISION__ is not 0x0002"
+#if __SILICON_REVISION__ != 0x0004
+#error "__SILICON_REVISION__ is not 0x0004"
#endif
#ifndef __WORKAROUNDS_ENABLED
diff --git a/gcc/testsuite/gcc.target/bfin/mcpu-bf548.c b/gcc/testsuite/gcc.target/bfin/mcpu-bf548.c
index 71d3bb87bae..7b1d2ff2d7f 100644
--- a/gcc/testsuite/gcc.target/bfin/mcpu-bf548.c
+++ b/gcc/testsuite/gcc.target/bfin/mcpu-bf548.c
@@ -10,8 +10,8 @@
#error "__ADSPBF54x__ is not defined"
#endif
-#if __SILICON_REVISION__ != 0x0002
-#error "__SILICON_REVISION__ is not 0x0002"
+#if __SILICON_REVISION__ != 0x0004
+#error "__SILICON_REVISION__ is not 0x0004"
#endif
#ifndef __WORKAROUNDS_ENABLED
diff --git a/gcc/testsuite/gcc.target/bfin/mcpu-bf549.c b/gcc/testsuite/gcc.target/bfin/mcpu-bf549.c
index 201b1019b77..83c79de3ffd 100644
--- a/gcc/testsuite/gcc.target/bfin/mcpu-bf549.c
+++ b/gcc/testsuite/gcc.target/bfin/mcpu-bf549.c
@@ -10,8 +10,8 @@
#error "__ADSPBF54x__ is not defined"
#endif
-#if __SILICON_REVISION__ != 0x0002
-#error "__SILICON_REVISION__ is not 0x0002"
+#if __SILICON_REVISION__ != 0x0004
+#error "__SILICON_REVISION__ is not 0x0004"
#endif
#ifndef __WORKAROUNDS_ENABLED
diff --git a/gcc/testsuite/gcc.target/i386/asm-6.c b/gcc/testsuite/gcc.target/i386/asm-6.c
index d69cf5d3df0..6aa37ef4276 100644
--- a/gcc/testsuite/gcc.target/i386/asm-6.c
+++ b/gcc/testsuite/gcc.target/i386/asm-6.c
@@ -3,7 +3,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fpic" { target fpic } } */
-/* { dg-xfail-if "" { i?86-pc-solaris2.1[0-9] && ilp32 } } */
int f0 (int, int, int, int, int);
int f1 (void);
diff --git a/gcc/testsuite/gcc.target/i386/avx-ceil-vec.c b/gcc/testsuite/gcc.target/i386/avx-ceil-vec.c
new file mode 100644
index 00000000000..e917e31b4ef
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-ceil-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "avx-check.h"
+
+#include <math.h>
+
+extern double ceil (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+avx_test (void)
+{
+ double a[NUM];
+ double r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = ceil (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != ceil (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c b/gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c
new file mode 100644
index 00000000000..ef316214d8a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "avx-check.h"
+
+#include <math.h>
+
+extern float ceilf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+avx_test (void)
+{
+ float a[NUM];
+ float r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = ceilf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != ceilf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-floor-vec.c b/gcc/testsuite/gcc.target/i386/avx-floor-vec.c
new file mode 100644
index 00000000000..55f8f14c090
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-floor-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "avx-check.h"
+
+#include <math.h>
+
+extern double floor (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+avx_test (void)
+{
+ double a[NUM];
+ double r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = floor (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != floor (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-floorf-vec.c b/gcc/testsuite/gcc.target/i386/avx-floorf-vec.c
new file mode 100644
index 00000000000..00348114c8c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-floorf-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "avx-check.h"
+
+#include <math.h>
+
+extern float floorf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+avx_test (void)
+{
+ float a[NUM];
+ float r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = floorf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != floorf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-rint-vec.c b/gcc/testsuite/gcc.target/i386/avx-rint-vec.c
new file mode 100644
index 00000000000..dc8c61017c3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-rint-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "avx-check.h"
+
+#include <math.h>
+
+extern double rint (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+avx_test (void)
+{
+ double a[NUM];
+ double r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = rint (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != rint (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-rintf-vec.c b/gcc/testsuite/gcc.target/i386/avx-rintf-vec.c
new file mode 100644
index 00000000000..4d77bf25b29
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-rintf-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "avx-check.h"
+
+#include <math.h>
+
+extern float rintf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+avx_test (void)
+{
+ float a[NUM];
+ float r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = rintf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != rintf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-trunc-vec.c b/gcc/testsuite/gcc.target/i386/avx-trunc-vec.c
new file mode 100644
index 00000000000..0b37eb4e04a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-trunc-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "avx-check.h"
+
+#include <math.h>
+
+extern double trunc (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+avx_test (void)
+{
+ double a[NUM];
+ double r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = trunc (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != trunc (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-truncf-vec.c b/gcc/testsuite/gcc.target/i386/avx-truncf-vec.c
new file mode 100644
index 00000000000..099ff824624
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-truncf-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx" } */
+/* { dg-require-effective-target avx } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "avx-check.h"
+
+#include <math.h>
+
+extern float truncf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+avx_test (void)
+{
+ float a[NUM];
+ float r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = truncf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != truncf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-vinsertps-3.c b/gcc/testsuite/gcc.target/i386/avx-vinsertps-3.c
new file mode 100644
index 00000000000..9397729340c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-vinsertps-3.c
@@ -0,0 +1,8 @@
+/* { dg-do run { target ilp32 } } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O2 -mfpmath=sse -mavx -mtune=geode" } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse4_1-insertps-3.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-vinsertps-4.c b/gcc/testsuite/gcc.target/i386/avx-vinsertps-4.c
new file mode 100644
index 00000000000..527b070f6b6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-vinsertps-4.c
@@ -0,0 +1,8 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O2 -mfpmath=sse -mavx" } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse4_1-insertps-4.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-vmaskmovdqu.c b/gcc/testsuite/gcc.target/i386/avx-vmaskmovdqu.c
new file mode 100644
index 00000000000..24b5bba77d5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-vmaskmovdqu.c
@@ -0,0 +1,8 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O2 -mavx" } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse2-maskmovdqu.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx-vpinsrw-1.c b/gcc/testsuite/gcc.target/i386/avx-vpinsrw-1.c
new file mode 100644
index 00000000000..5e1a7cb91c9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-vpinsrw-1.c
@@ -0,0 +1,8 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O2 -mavx" } */
+
+#define CHECK_H "avx-check.h"
+#define TEST avx_test
+
+#include "sse2-pinsrw.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
new file mode 100644
index 00000000000..c909b9402cc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
+
+#define N 1024
+
+float a[N], b[N+3], c[N];
+
+void
+avx_test (void)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ c[i] = a[i] * b[i+3];
+}
+
+/* { dg-final { scan-assembler-not "\\*avx_movups256/1" } } */
+/* { dg-final { scan-assembler "\\*sse_movups/1" } } */
+/* { dg-final { scan-assembler "vinsertf128" } } */
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
new file mode 100644
index 00000000000..7d188e2b466
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
+
+#define N 1024
+
+char **ep;
+char **fp;
+
+void
+avx_test (void)
+{
+ int i;
+ char **ap;
+ char **bp;
+ char **cp;
+
+ ap = ep;
+ bp = fp;
+ for (i = 128; i >= 0; i--)
+ {
+ *ap++ = *cp++;
+ *bp++ = 0;
+ }
+}
+
+/* { dg-final { scan-assembler-not "\\*avx_movdqu256/1" } } */
+/* { dg-final { scan-assembler "\\*sse2_movdqu/1" } } */
+/* { dg-final { scan-assembler "vinsertf128" } } */
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
new file mode 100644
index 00000000000..670305423fe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
+
+#define N 1024
+
+double a[N], b[N+3], c[N];
+
+void
+avx_test (void)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ c[i] = a[i] * b[i+3];
+}
+
+/* { dg-final { scan-assembler-not "\\*avx_movupd256/1" } } */
+/* { dg-final { scan-assembler "\\*sse2_movupd/1" } } */
+/* { dg-final { scan-assembler "vinsertf128" } } */
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
new file mode 100644
index 00000000000..0d3ef333120
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store" } */
+
+#define N 1024
+
+float a[N], b[N+3];
+
+void
+avx_test (void)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ b[i] = a[i+3] * 2;
+}
+
+/* { dg-final { scan-assembler "\\*avx_movups256/1" } } */
+/* { dg-final { scan-assembler-not "\\*avx_movups/1" } } */
+/* { dg-final { scan-assembler-not "vinsertf128" } } */
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c
new file mode 100644
index 00000000000..153b66f8287
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c
@@ -0,0 +1,43 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
+
+#include "avx-check.h"
+
+#define N 8
+
+float a[N+3] = { -1, -1, -1, 24.43, 68.346, 43.35,
+ 546.46, 46.79, 82.78, 82.7, 9.4 };
+float b[N];
+float c[N];
+
+void
+foo (void)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ b[i] = a[i+3] * 2;
+}
+
+__attribute__ ((noinline))
+float
+bar (float x)
+{
+ return x * 2;
+}
+
+void
+avx_test (void)
+{
+ int i;
+
+ foo ();
+
+ for (i = 0; i < N; i++)
+ c[i] = bar (a[i+3]);
+
+ for (i = 0; i < N; i++)
+ if (b[i] != c[i])
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c
new file mode 100644
index 00000000000..2fa984cc4a6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c
@@ -0,0 +1,42 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
+
+#include "avx-check.h"
+
+#define N 4
+
+double a[N+3] = { -1, -1, -1, 24.43, 68.346, 43.35, 546.46 };
+double b[N];
+double c[N];
+
+void
+foo (void)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ b[i] = a[i+3] * 2;
+}
+
+__attribute__ ((noinline))
+double
+bar (double x)
+{
+ return x * 2;
+}
+
+void
+avx_test (void)
+{
+ int i;
+
+ foo ();
+
+ for (i = 0; i < N; i++)
+ c[i] = bar (a[i+3]);
+
+ for (i = 0; i < N; i++)
+ if (b[i] != c[i])
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c
new file mode 100644
index 00000000000..ad16a5329bf
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c
@@ -0,0 +1,60 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
+
+#include "avx-check.h"
+
+#define N 128
+
+char **ep;
+char **fp;
+char **mp;
+char **lp;
+
+__attribute__ ((noinline))
+void
+foo (void)
+{
+ mp = (char **) malloc (N);
+ lp = (char **) malloc (N);
+ ep = (char **) malloc (N);
+ fp = (char **) malloc (N);
+}
+
+void
+avx_test (void)
+{
+ int i;
+ char **ap, **bp, **cp, **dp;
+ char *str = "STR";
+
+ foo ();
+
+ cp = mp;
+ dp = lp;
+
+ for (i = N; i >= 0; i--)
+ {
+ *cp++ = str;
+ *dp++ = str;
+ }
+
+ ap = ep;
+ bp = fp;
+ cp = mp;
+ dp = lp;
+
+ for (i = N; i >= 0; i--)
+ {
+ *ap++ = *cp++;
+ *bp++ = *dp++;
+ }
+
+ for (i = N; i >= 0; i--)
+ {
+ if (strcmp (*--ap, "STR") != 0)
+ abort ();
+ if (strcmp (*--bp, "STR") != 0)
+ abort ();
+ }
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
new file mode 100644
index 00000000000..6af02a2202b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
+
+#define N 1024
+
+float a[N], b[N+3], c[N], d[N];
+
+void
+avx_test (void)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ b[i+3] = a[i] * 10.0;
+
+ for (i = 0; i < N; i++)
+ d[i] = c[i] * 20.0;
+}
+
+/* { dg-final { scan-assembler-not "\\*avx_movups256/2" } } */
+/* { dg-final { scan-assembler "vmovups.*\\*movv4sf_internal/3" } } */
+/* { dg-final { scan-assembler "vextractf128" } } */
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
new file mode 100644
index 00000000000..d8ae5a90189
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
+
+#define N 1024
+
+char **ep;
+char **fp;
+
+void
+avx_test (void)
+{
+ int i;
+ char **ap;
+ char **bp;
+ char **cp;
+
+ ap = ep;
+ bp = fp;
+ for (i = 128; i >= 0; i--)
+ {
+ *ap++ = *cp++;
+ *bp++ = 0;
+ }
+}
+
+/* { dg-final { scan-assembler-not "\\*avx_movdqu256/2" } } */
+/* { dg-final { scan-assembler "vmovdqu.*\\*movv16qi_internal/3" } } */
+/* { dg-final { scan-assembler "vextractf128" } } */
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
new file mode 100644
index 00000000000..65e820444e4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
+
+#define N 1024
+
+double a[N], b[N+3], c[N], d[N];
+
+void
+avx_test (void)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ b[i+3] = a[i] * 10.0;
+
+ for (i = 0; i < N; i++)
+ d[i] = c[i] * 20.0;
+}
+
+/* { dg-final { scan-assembler-not "\\*avx_movupd256/2" } } */
+/* { dg-final { scan-assembler "vmovupd.*\\*movv2df_internal/3" } } */
+/* { dg-final { scan-assembler "vextractf128" } } */
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
new file mode 100644
index 00000000000..96cca66ae9c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store" } */
+
+#define N 1024
+
+float a[N], b[N+3], c[N];
+
+void
+avx_test (void)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ b[i+3] = a[i] * c[i];
+}
+
+/* { dg-final { scan-assembler "\\*avx_movups256/2" } } */
+/* { dg-final { scan-assembler-not "\\*avx_movups/2" } } */
+/* { dg-final { scan-assembler-not "\\*avx_movv4sf_internal/3" } } */
+/* { dg-final { scan-assembler-not "vextractf128" } } */
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c
new file mode 100644
index 00000000000..642da3cf0ee
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c
@@ -0,0 +1,42 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
+
+#include "avx-check.h"
+
+#define N 8
+
+float a[N] = { 24.43, 68.346, 43.35, 546.46, 46.79, 82.78, 82.7, 9.4 };
+float b[N+3];
+float c[N+3];
+
+void
+foo (void)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ b[i+3] = a[i] * 2;
+}
+
+__attribute__ ((noinline))
+float
+bar (float x)
+{
+ return x * 2;
+}
+
+void
+avx_test (void)
+{
+ int i;
+
+ foo ();
+
+ for (i = 0; i < N; i++)
+ c[i+3] = bar (a[i]);
+
+ for (i = 0; i < N; i++)
+ if (b[i+3] != c[i+3])
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c
new file mode 100644
index 00000000000..a0de7a56f63
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c
@@ -0,0 +1,42 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
+
+#include "avx-check.h"
+
+#define N 4
+
+double a[N] = { 24.43, 68.346, 43.35, 546.46 };
+double b[N+3];
+double c[N+3];
+
+void
+foo (void)
+{
+ int i;
+
+ for (i = 0; i < N; i++)
+ b[i+3] = a[i] * 2;
+}
+
+__attribute__ ((noinline))
+double
+bar (double x)
+{
+ return x * 2;
+}
+
+void
+avx_test (void)
+{
+ int i;
+
+ foo ();
+
+ for (i = 0; i < N; i++)
+ c[i+3] = bar (a[i]);
+
+ for (i = 0; i < N; i++)
+ if (b[i+3] != c[i+3])
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c
new file mode 100644
index 00000000000..4272dc3cd0d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c
@@ -0,0 +1,45 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
+
+#include "avx-check.h"
+
+#define N 128
+
+char **ep;
+char **fp;
+
+__attribute__ ((noinline))
+void
+foo (void)
+{
+ ep = (char **) malloc (N);
+ fp = (char **) malloc (N);
+}
+
+void
+avx_test (void)
+{
+ int i;
+ char **ap, **bp;
+ char *str = "STR";
+
+ foo ();
+
+ ap = ep;
+ bp = fp;
+
+ for (i = N; i >= 0; i--)
+ {
+ *ap++ = str;
+ *bp++ = str;
+ }
+
+ for (i = N; i >= 0; i--)
+ {
+ if (strcmp (*--ap, "STR") != 0)
+ abort ();
+ if (strcmp (*--bp, "STR") != 0)
+ abort ();
+ }
+}
diff --git a/gcc/testsuite/gcc.target/i386/builtin-copysign.c b/gcc/testsuite/gcc.target/i386/builtin-copysign.c
index c20a0b6cb49..175b931c7c8 100644
--- a/gcc/testsuite/gcc.target/i386/builtin-copysign.c
+++ b/gcc/testsuite/gcc.target/i386/builtin-copysign.c
@@ -11,6 +11,4 @@ MODE test5##CEXT(MODE a, MODE b) { return __builtin_copysign##CEXT(a, b); }
TEST_SET (float, f)
TEST_SET (double, )
TEST_SET (long double, l)
-#if defined (__LP64__)
TEST_SET (__float128, q)
-#endif
diff --git a/gcc/testsuite/gcc.target/i386/incoming-8.c b/gcc/testsuite/gcc.target/i386/incoming-8.c
index 2dd8800fd6c..a4904fba373 100644
--- a/gcc/testsuite/gcc.target/i386/incoming-8.c
+++ b/gcc/testsuite/gcc.target/i386/incoming-8.c
@@ -1,6 +1,6 @@
/* PR target/40838 */
/* { dg-do compile { target { { ! *-*-darwin* } && ilp32 } } } */
-/* { dg-options "-w -mstackrealign -O3 -msse2 -mpreferred-stack-boundary=4" } */
+/* { dg-options "-w -mstackrealign -O3 -msse2 -mno-avx -mpreferred-stack-boundary=4" } */
float
foo (float f)
diff --git a/gcc/testsuite/gcc.target/i386/opt-1.c b/gcc/testsuite/gcc.target/i386/opt-1.c
index 28e2ef38c34..2585236a6bc 100644
--- a/gcc/testsuite/gcc.target/i386/opt-1.c
+++ b/gcc/testsuite/gcc.target/i386/opt-1.c
@@ -1,7 +1,7 @@
/* Test the attribute((optimize)) really works. Do this test by checking
whether we vectorize a simple loop. */
/* { dg-do compile } */
-/* { dg-options "-O1 -msse2 -mfpmath=sse -march=k8" } */
+/* { dg-options "-O1 -msse2 -mfpmath=sse -march=k8 --param min-insn-to-prefetch-ratio=0" } */
/* { dg-final { scan-assembler "prefetcht0" } } */
/* { dg-final { scan-assembler "addps" } } */
/* { dg-final { scan-assembler "subss" } } */
diff --git a/gcc/testsuite/gcc.target/i386/opt-2.c b/gcc/testsuite/gcc.target/i386/opt-2.c
index d2791e071c3..1fa18c1f978 100644
--- a/gcc/testsuite/gcc.target/i386/opt-2.c
+++ b/gcc/testsuite/gcc.target/i386/opt-2.c
@@ -1,7 +1,7 @@
/* Test the attribute((optimize)) really works. Do this test by checking
whether we vectorize a simple loop. */
/* { dg-do compile } */
-/* { dg-options "-O1 -msse2 -mfpmath=sse -march=k8" } */
+/* { dg-options "-O1 -msse2 -mfpmath=sse -march=k8 --param min-insn-to-prefetch-ratio=0" } */
/* { dg-final { scan-assembler "prefetcht0" } } */
/* { dg-final { scan-assembler "addps" } } */
/* { dg-final { scan-assembler "subss" } } */
diff --git a/gcc/testsuite/gcc.target/i386/parity-1.c b/gcc/testsuite/gcc.target/i386/parity-1.c
index eaf41cf082d..1b0001ef2ad 100644
--- a/gcc/testsuite/gcc.target/i386/parity-1.c
+++ b/gcc/testsuite/gcc.target/i386/parity-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=k8" } */
+/* { dg-options "-O2 -march=k8 -mno-popcnt" } */
/* { dg-final { scan-assembler "setnp" } } */
int foo(unsigned int x)
diff --git a/gcc/testsuite/gcc.target/i386/parity-2.c b/gcc/testsuite/gcc.target/i386/parity-2.c
index 03a80616528..9adca35a667 100644
--- a/gcc/testsuite/gcc.target/i386/parity-2.c
+++ b/gcc/testsuite/gcc.target/i386/parity-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=k8" } */
+/* { dg-options "-O2 -march=k8 -mno-popcnt" } */
/* { dg-final { scan-assembler "setnp" } } */
int foo(unsigned long long int x)
diff --git a/gcc/testsuite/gcc.target/i386/pr38824.c b/gcc/testsuite/gcc.target/i386/pr38824.c
index 637abfde888..9fbfc502d6b 100644
--- a/gcc/testsuite/gcc.target/i386/pr38824.c
+++ b/gcc/testsuite/gcc.target/i386/pr38824.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -msse" } */
+/* { dg-options "-O2 -msse -mno-sse2" } */
typedef float v4sf __attribute__ ((__vector_size__ (16)));
diff --git a/gcc/testsuite/gcc.target/i386/pr46084.c b/gcc/testsuite/gcc.target/i386/pr46084.c
index 88bcd1ca5e0..3ca22eb2923 100644
--- a/gcc/testsuite/gcc.target/i386/pr46084.c
+++ b/gcc/testsuite/gcc.target/i386/pr46084.c
@@ -1,7 +1,7 @@
/* This test needs to use setrlimit to set the stack size, so it can
only run on Unix. */
/* { dg-do run { target *-*-linux* *-*-solaris* *-*-darwin* } } */
-/* { dg-require-effective-target avx } */
+/* { dg-require-effective-target avx_runtime } */
/* { dg-require-effective-target split_stack } */
/* { dg-options "-fsplit-stack -O2 -mavx" } */
diff --git a/gcc/testsuite/gcc.target/i386/pr47502-1.c b/gcc/testsuite/gcc.target/i386/pr47502-1.c
new file mode 100644
index 00000000000..727afe944e5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr47502-1.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+
+void
+foo (const void *xxxxx, void *yyyyy, long y)
+{
+ asm volatile ("" :: "c" ((xxxxx)), "d" ((yyyyy)), "S" (y));
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr47502-2.c b/gcc/testsuite/gcc.target/i386/pr47502-2.c
new file mode 100644
index 00000000000..a8dc1ca0189
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr47502-2.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-pic" } */
+
+int
+foo (int how, const void *set, void *oset)
+{
+ int resultvar;
+ asm volatile (""
+ : "=a" (resultvar)
+ : "0" (14) , "b" (how), "c" ((set)), "d" ((oset)), "S" (65 / 8) : "memory", "cc");
+ return resultvar;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr48037-1.c b/gcc/testsuite/gcc.target/i386/pr48037-1.c
new file mode 100644
index 00000000000..30c81e7171d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr48037-1.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O -fno-math-errno" } */
+
+typedef double __m128d __attribute__((vector_size(16)));
+__m128d vsqrt1 (__m128d const x)
+{
+ double const* __restrict__ const y = (double const*)&x;
+ double const a = __builtin_sqrt(y[0]);
+ double const b = __builtin_sqrt(y[1]);
+ return (__m128d) { a, b };
+}
+
+/* Verify we do not spill x to the stack. */
+/* { dg-final { scan-assembler-not "%rsp" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr48237.c b/gcc/testsuite/gcc.target/i386/pr48237.c
new file mode 100644
index 00000000000..e20446eab04
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr48237.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fcaller-saves -fschedule-insns2 -fselective-scheduling2 -mtune=core2" } */
+
+union double_union
+{
+ double d;
+ int i[2];
+};
+
+void bar (int, ...);
+
+void
+foo (double d)
+{
+ union double_union du = { d };
+ while (1)
+ {
+ du.i[1] -= 0x100000L;
+ bar (0, du.d);
+ du.d += d;
+ }
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr48335-1.c b/gcc/testsuite/gcc.target/i386/pr48335-1.c
new file mode 100644
index 00000000000..08c5284ea80
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr48335-1.c
@@ -0,0 +1,32 @@
+/* PR middle-end/48335 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-sra -msse2" } */
+
+#include <emmintrin.h>
+
+typedef __float128 T __attribute__((may_alias));
+
+struct S
+{
+ _Complex double d __attribute__((aligned (16)));
+};
+
+void bar (struct S);
+
+void
+f1 (T x)
+{
+ struct S s;
+ *(T *) &s.d = x;
+ __real__ s.d *= 7.0;
+ bar (s);
+}
+
+void
+f2 (__m128d x)
+{
+ struct S s;
+ _mm_store_pd ((double *) &s.d, x);
+ __real__ s.d *= 7.0;
+ bar (s);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr48389.c b/gcc/testsuite/gcc.target/i386/pr48389.c
new file mode 100644
index 00000000000..d43f664d8b4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr48389.c
@@ -0,0 +1,13 @@
+/* PR middle-end/48389 */
+/* { dg-do compile } */
+/* { dg-options "-O -mtune=pentiumpro -Wno-abi" } */
+/* { dg-require-effective-target ilp32 } */
+typedef float V2SF __attribute__ ((vector_size (128)));
+V2SF foo (int x, V2SF a)
+{
+ V2SF b = {};
+ if (x & 42)
+ b = a;
+ a += b;
+ return a;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr48678.c b/gcc/testsuite/gcc.target/i386/pr48678.c
new file mode 100644
index 00000000000..6f6727fffa2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr48678.c
@@ -0,0 +1,16 @@
+/* PR target/48678 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2" } */
+
+#include <emmintrin.h>
+
+typedef short T __attribute__((may_alias));
+struct S { __m128i d; };
+
+__m128i
+foo (short *x, struct S *y, __m128i *z)
+{
+ struct S s = *y;
+ ((T *) &s.d)[0] = *x;
+ return _mm_cmpeq_epi16 (s.d, *z);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr48708.c b/gcc/testsuite/gcc.target/i386/pr48708.c
new file mode 100644
index 00000000000..355c2b2691f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr48708.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2" } */
+
+#include <emmintrin.h>
+
+typedef long long T __attribute__((may_alias));
+struct S { __m128i d; };
+
+__m128i
+foo (long long *x, struct S *y, __m128i *z)
+{
+ struct S s = *y;
+ ((T *) &s.d)[0] = *x;
+ return _mm_cmpeq_epi16 (s.d, *z);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr48723.c b/gcc/testsuite/gcc.target/i386/pr48723.c
new file mode 100644
index 00000000000..ad102090e9f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr48723.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-fstack-check -mavx" } */
+
+struct S0
+{
+ int f0, f1, f2, f3;
+} g_106;
+
+struct S0
+func_99 ()
+{
+ return (g_106);
+}
diff --git a/gcc/testsuite/gcc.target/i386/recip-vec-divf-avx.c b/gcc/testsuite/gcc.target/i386/recip-vec-divf-avx.c
index dfc4c73dfd6..8aeec20d5c5 100644
--- a/gcc/testsuite/gcc.target/i386/recip-vec-divf-avx.c
+++ b/gcc/testsuite/gcc.target/i386/recip-vec-divf-avx.c
@@ -1,15 +1,15 @@
/* { dg-do compile } */
/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx -mtune=generic -mfpmath=sse -mrecip" } */
-float a[16];
-float b[16];
-float r[16];
+float a[32];
+float b[32];
+float r[32];
void t1(void)
{
int i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < 32; i++)
r[i] = a[i] / b[i];
}
diff --git a/gcc/testsuite/gcc.target/i386/recip-vec-divf.c b/gcc/testsuite/gcc.target/i386/recip-vec-divf.c
index 4bdbba79f34..0c0cd42ae8a 100644
--- a/gcc/testsuite/gcc.target/i386/recip-vec-divf.c
+++ b/gcc/testsuite/gcc.target/i386/recip-vec-divf.c
@@ -1,15 +1,15 @@
/* { dg-do compile } */
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse -mfpmath=sse -mrecip" } */
-float a[16];
-float b[16];
-float r[16];
+float a[4];
+float b[4];
+float r[4];
void t1(void)
{
int i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < 4; i++)
r[i] = a[i] / b[i];
}
diff --git a/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c b/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c
index 5a8e6967b42..9cf3cc81be5 100644
--- a/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c
+++ b/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c
@@ -1,9 +1,9 @@
/* { dg-do compile } */
/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx -mtune=generic -mfpmath=sse -mrecip" } */
-float a[16];
-float b[16];
-float r[16];
+float a[32];
+float b[32];
+float r[32];
extern float sqrtf (float);
@@ -11,7 +11,7 @@ void t1(void)
{
int i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < 32; i++)
r[i] = a[i] / sqrtf (b[i]);
}
@@ -19,7 +19,7 @@ void t2(void)
{
int i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < 32; i++)
r[i] = sqrtf (a[i] / b[i]);
}
@@ -27,9 +27,8 @@ void t3(void)
{
int i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < 32; i++)
r[i] = sqrtf (a[i]);
}
-/* Last loop is small enough to be fully unrolled. */
-/* { dg-final { scan-assembler-times "vrsqrtps\[ \\t\]+\[^\n\]*%ymm" 6 } } */
+/* { dg-final { scan-assembler-times "vrsqrtps\[ \\t\]+\[^\n\]*%ymm" 3 } } */
diff --git a/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf.c b/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf.c
index bcef700ec60..9ac9bd76ce9 100644
--- a/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf.c
+++ b/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf.c
@@ -1,9 +1,9 @@
/* { dg-do compile } */
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse -mfpmath=sse -mrecip" } */
-float a[16];
-float b[16];
-float r[16];
+float a[4];
+float b[4];
+float r[4];
extern float sqrtf (float);
@@ -11,7 +11,7 @@ void t1(void)
{
int i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < 4; i++)
r[i] = a[i] / sqrtf (b[i]);
}
@@ -19,7 +19,7 @@ void t2(void)
{
int i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < 4; i++)
r[i] = sqrtf (a[i] / b[i]);
}
@@ -27,7 +27,7 @@ void t3(void)
{
int i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < 4; i++)
r[i] = sqrtf (a[i]);
}
diff --git a/gcc/testsuite/gcc.target/i386/sse-19.c b/gcc/testsuite/gcc.target/i386/sse-19.c
index 7a49a98feab..3025567fd81 100644
--- a/gcc/testsuite/gcc.target/i386/sse-19.c
+++ b/gcc/testsuite/gcc.target/i386/sse-19.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=x86-64" } } */
-/* { dg-options "-O3 -march=x86-64 -msse2" } */
+/* { dg-options "-O3 -march=x86-64 -msse2 -mno-ssse3" } */
/* { dg-final { scan-assembler "punpcklbw" } } */
extern void abort();
#include <emmintrin.h>
diff --git a/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c b/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
index db1fbd0a36c..abfe5f3761b 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
+++ b/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
@@ -10,4 +10,4 @@ test (long long b)
return _mm_cvtsi64_si128 (b);
}
-/* { dg-final { scan-assembler-times "\\*vec_concatv2di_rex64_sse4_1/3" 1 } } */
+/* { dg-final { scan-assembler-times "\\*vec_concatv2di_rex64_sse4_1/4" 1 } } */
diff --git a/gcc/testsuite/gcc.target/i386/sse2-insvhi.c b/gcc/testsuite/gcc.target/i386/sse2-insvhi.c
new file mode 100644
index 00000000000..03a287042f1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse2-insvhi.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-require-effective-target sse2 } */
+/* { dg-options "-O2 -msse2" } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse2-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse2_test
+#endif
+
+#include CHECK_H
+
+#include <emmintrin.h>
+#include <string.h>
+
+typedef short T __attribute__((may_alias));
+struct S { __m128i d; };
+
+__m128i
+__attribute__((noinline))
+foo (__m128i y, short x)
+{
+ struct S s;
+
+ s.d = y;
+ ((T *) &s.d)[1] = x;
+ return s.d;
+}
+
+static void
+TEST (void)
+{
+ union
+ {
+ __m128i x;
+ unsigned int i[4];
+ unsigned short s[8];
+ } res, val, tmp;
+ unsigned short ins[4] = { 3, 4, 5, 6 };
+
+ val.i[0] = 0x35251505;
+ val.i[1] = 0x75655545;
+ val.i[2] = 0xB5A59585;
+ val.i[3] = 0xF5E5D5C5;
+
+ res.x = foo (val.x, ins[3]);
+
+ tmp.x = val.x;
+ tmp.s[1] = ins[3];
+ if (memcmp (&tmp, &res, sizeof (tmp)))
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-maskmovdqu.c b/gcc/testsuite/gcc.target/i386/sse2-maskmovdqu.c
new file mode 100644
index 00000000000..b401c85b3bb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse2-maskmovdqu.c
@@ -0,0 +1,44 @@
+/* { dg-do run } */
+/* { dg-require-effective-target sse2 } */
+/* { dg-options "-O2 -msse2" } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse2-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse2_test
+#endif
+
+#include CHECK_H
+
+#include <emmintrin.h>
+
+#ifndef MASK
+#define MASK 0x7986
+#endif
+
+#define mask_v(pos) (((MASK & (0x1 << (pos))) >> (pos)) << 7)
+
+void static
+TEST (void)
+{
+ __m128i src, mask;
+ char s[16] = { 1,-2,3,-4,5,-6,7,-8,9,-10,11,-12,13,-14,15,-16 };
+ char m[16];
+
+ char u[20] = { 0 };
+ int i;
+
+ for (i = 0; i < 16; i++)
+ m[i] = mask_v (i);
+
+ src = _mm_loadu_si128 ((__m128i *)s);
+ mask = _mm_loadu_si128 ((__m128i *)m);
+
+ _mm_maskmoveu_si128 (src, mask, u+3);
+
+ for (i = 0; i < 16; i++)
+ if (u[i+3] != (m[i] ? s[i] : 0))
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-pinsrw.c b/gcc/testsuite/gcc.target/i386/sse2-pinsrw.c
new file mode 100644
index 00000000000..16167437c6d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse2-pinsrw.c
@@ -0,0 +1,86 @@
+/* { dg-do run } */
+/* { dg-require-effective-target sse2 } */
+/* { dg-options "-O2 -msse2" } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse2-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse2_test
+#endif
+
+#include CHECK_H
+
+#include <emmintrin.h>
+#include <string.h>
+
+#define msk0 0x00
+#define msk1 0x01
+#define msk2 0x02
+#define msk3 0x03
+#define msk4 0x04
+#define msk5 0x05
+#define msk6 0x06
+#define msk7 0x07
+
+static void
+TEST (void)
+{
+ union
+ {
+ __m128i x;
+ unsigned int i[4];
+ unsigned short s[8];
+ } res [8], val, tmp;
+ int masks[8];
+ unsigned short ins[4] = { 3, 4, 5, 6 };
+ int i;
+
+ val.i[0] = 0x35251505;
+ val.i[1] = 0x75655545;
+ val.i[2] = 0xB5A59585;
+ val.i[3] = 0xF5E5D5C5;
+
+ /* Check pinsrw imm8, r32, xmm. */
+ res[0].x = _mm_insert_epi16 (val.x, ins[0], msk0);
+ res[1].x = _mm_insert_epi16 (val.x, ins[0], msk1);
+ res[2].x = _mm_insert_epi16 (val.x, ins[0], msk2);
+ res[3].x = _mm_insert_epi16 (val.x, ins[0], msk3);
+ res[4].x = _mm_insert_epi16 (val.x, ins[0], msk4);
+ res[5].x = _mm_insert_epi16 (val.x, ins[0], msk5);
+ res[6].x = _mm_insert_epi16 (val.x, ins[0], msk6);
+ res[7].x = _mm_insert_epi16 (val.x, ins[0], msk7);
+
+ masks[0] = msk0;
+ masks[1] = msk1;
+ masks[2] = msk2;
+ masks[3] = msk3;
+ masks[4] = msk4;
+ masks[5] = msk5;
+ masks[6] = msk6;
+ masks[7] = msk7;
+
+ for (i = 0; i < 8; i++)
+ {
+ tmp.x = val.x;
+ tmp.s[masks[i]] = ins[0];
+ if (memcmp (&tmp, &res[i], sizeof (tmp)))
+ abort ();
+ }
+
+ /* Check pinsrw imm8, m16, xmm. */
+ for (i = 0; i < 8; i++)
+ {
+ res[i].x = _mm_insert_epi16 (val.x, ins[i % 2], msk0);
+ masks[i] = msk0;
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ tmp.x = val.x;
+ tmp.s[masks[i]] = ins[i % 2];
+ if (memcmp (&tmp, &res[i], sizeof (tmp)))
+ abort ();
+ }
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
new file mode 100644
index 00000000000..886dd77c206
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "sse4_1-check.h"
+
+#include <math.h>
+
+extern double ceil (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+sse4_1_test (void)
+{
+ double a[NUM];
+ double r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = ceil (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != ceil (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
new file mode 100644
index 00000000000..41d59d74eac
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "sse4_1-check.h"
+
+#include <math.h>
+
+extern float ceilf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+sse4_1_test (void)
+{
+ float a[NUM];
+ float r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = ceilf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != ceilf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
new file mode 100644
index 00000000000..02ebe62ec7b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "sse4_1-check.h"
+
+#include <math.h>
+
+extern double floor (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+sse4_1_test (void)
+{
+ double a[NUM];
+ double r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = floor (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != floor (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
new file mode 100644
index 00000000000..6704892df53
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "sse4_1-check.h"
+
+#include <math.h>
+
+extern float floorf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+sse4_1_test (void)
+{
+ float a[NUM];
+ float r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = floorf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != floorf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c b/gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c
new file mode 100644
index 00000000000..75a80733543
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c
@@ -0,0 +1,5 @@
+/* { dg-do run { target ilp32 } } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-options "-O2 -msse4.1 -mtune=geode" } */
+
+#include "sse4_1-insertps-2.c"
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-insertps-4.c b/gcc/testsuite/gcc.target/i386/sse4_1-insertps-4.c
new file mode 100644
index 00000000000..30defca25e2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-insertps-4.c
@@ -0,0 +1,92 @@
+/* { dg-do run } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-options "-O2 -msse4.1" } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <smmintrin.h>
+#include <string.h>
+
+#define msk0 0x41
+#define msk1 0x90
+#define msk2 0xe9
+#define msk3 0x70
+
+#define msk4 0xFC
+#define msk5 0x05
+#define msk6 0x0A
+#define msk7 0x0F
+
+union
+ {
+ __m128 x;
+ float f[4];
+ } val1;
+
+static void
+TEST (void)
+{
+ union
+ {
+ __m128 x;
+ float f[4];
+ } res[8], val2, tmp;
+ int masks[8];
+ int i, j;
+
+ val2.f[0] = 55.0;
+ val2.f[1] = 55.0;
+ val2.f[2] = 55.0;
+ val2.f[3] = 55.0;
+
+ val1.f[0] = 1.;
+ val1.f[1] = 2.;
+ val1.f[2] = 3.;
+ val1.f[3] = 4.;
+
+ asm volatile ("" : "+m" (val1));
+ res[0].x = _mm_insert_ps (val2.x, val1.x, msk0);
+ asm volatile ("" : "+m" (val1));
+ res[1].x = _mm_insert_ps (val2.x, val1.x, msk1);
+ asm volatile ("" : "+m" (val1));
+ res[2].x = _mm_insert_ps (val2.x, val1.x, msk2);
+ asm volatile ("" : "+m" (val1));
+ res[3].x = _mm_insert_ps (val2.x, val1.x, msk3);
+
+ masks[0] = msk0;
+ masks[1] = msk1;
+ masks[2] = msk2;
+ masks[3] = msk3;
+
+ for (i = 0; i < 4; i++)
+ {
+ asm volatile ("" : "+m" (val1));
+ res[i + 4].x = _mm_insert_ps (val2.x, val1.x, msk4);
+ }
+
+ masks[4] = msk4;
+ masks[5] = msk4;
+ masks[6] = msk4;
+ masks[7] = msk4;
+
+ for (i=0; i < 8; i++)
+ {
+ tmp = val2;
+ tmp.f[(masks[i] & 0x30) >> 4] = val1.f[(masks[i] & 0xC0) >> 6];
+
+ for (j = 0; j < 4; j++)
+ if (masks[i] & (0x1 << j))
+ tmp.f[j] = 0.f;
+
+ if (memcmp (&res[i], &tmp, sizeof (tmp)))
+ abort ();
+ }
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-insvdi.c b/gcc/testsuite/gcc.target/i386/sse4_1-insvdi.c
new file mode 100644
index 00000000000..da090ba1582
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-insvdi.c
@@ -0,0 +1,55 @@
+/* { dg-do run } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-options "-O2 -msse4.1" } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <smmintrin.h>
+#include <string.h>
+
+typedef long T __attribute__((may_alias));
+struct S { __m128i d; };
+
+__m128i
+__attribute__((noinline))
+foo (__m128i y, long x)
+{
+ struct S s;
+
+ s.d = y;
+ ((T *) &s.d)[1] = x;
+ return s.d;
+}
+
+static void
+TEST (void)
+{
+ union
+ {
+ __m128i x;
+ unsigned int i[4];
+ unsigned long l[2];
+ } res, val, tmp;
+ unsigned long ins[4] = { 3, 4, 5, 6 };
+
+ val.i[0] = 0x35251505;
+ val.i[1] = 0x75655545;
+ val.i[2] = 0xB5A59585;
+ val.i[3] = 0xF5E5D5C5;
+
+ res.x = foo (val.x, ins[3]);
+
+ tmp.x = val.x;
+ tmp.l[1] = ins[3];
+ if (memcmp (&tmp, &res, sizeof (tmp)))
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-insvqi.c b/gcc/testsuite/gcc.target/i386/sse4_1-insvqi.c
new file mode 100644
index 00000000000..784201e2d94
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-insvqi.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-options "-O2 -msse4.1" } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <smmintrin.h>
+#include <string.h>
+
+typedef char T __attribute__((may_alias));
+struct S { __m128i d; };
+
+__m128i
+__attribute__((noinline))
+foo (__m128i y, char x)
+{
+ struct S s;
+
+ s.d = y;
+ ((T *) &s.d)[1] = x;
+ return s.d;
+}
+
+static void
+TEST (void)
+{
+ union
+ {
+ __m128i x;
+ unsigned int i[4];
+ unsigned char c[16];
+ } res, val, tmp;
+ unsigned char ins[4] = { 3, 4, 5, 6 };
+
+ val.i[0] = 0x35251505;
+ val.i[1] = 0x75655545;
+ val.i[2] = 0xB5A59585;
+ val.i[3] = 0xF5E5D5C5;
+
+ res.x = foo (val.x, ins[3]);
+
+ tmp.x = val.x;
+ tmp.c[1] = ins[3];
+ if (memcmp (&tmp, &res, sizeof (tmp)))
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-insvsi.c b/gcc/testsuite/gcc.target/i386/sse4_1-insvsi.c
new file mode 100644
index 00000000000..569b8f269c2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-insvsi.c
@@ -0,0 +1,53 @@
+/* { dg-do run } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-options "-O2 -msse4.1" } */
+
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
+
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
+
+#include CHECK_H
+
+#include <smmintrin.h>
+#include <string.h>
+
+typedef int T __attribute__((may_alias));
+struct S { __m128i d; };
+
+__m128i
+__attribute__((noinline))
+foo (__m128i y, int x)
+{
+ struct S s;
+
+ s.d = y;
+ ((T *) &s.d)[1] = x;
+ return s.d;
+}
+
+static void
+TEST (void)
+{
+ union
+ {
+ __m128i x;
+ unsigned int i[4];
+ } res, val, tmp;
+ unsigned int ins[4] = { 3, 4, 5, 6 };
+
+ val.i[0] = 0x35251505;
+ val.i[1] = 0x75655545;
+ val.i[2] = 0xB5A59585;
+ val.i[3] = 0xF5E5D5C5;
+
+ res.x = foo (val.x, ins[3]);
+
+ tmp.x = val.x;
+ tmp.i[1] = ins[3];
+ if (memcmp (&tmp, &res, sizeof (tmp)))
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
new file mode 100644
index 00000000000..8df5717a23d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-rint-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "sse4_1-check.h"
+
+#include <math.h>
+
+extern double rint (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+sse4_1_test (void)
+{
+ double a[NUM];
+ double r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = rint (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != rint (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
new file mode 100644
index 00000000000..9c97c35bed9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "sse4_1-check.h"
+
+#include <math.h>
+
+extern float rintf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+sse4_1_test (void)
+{
+ float a[NUM];
+ float r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = rintf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != rintf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c
new file mode 100644
index 00000000000..e82dec93f88
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "sse4_1-check.h"
+
+#include <math.h>
+
+extern double trunc (double);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (double *src)
+{
+ int i, sign = 1;
+ double f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+sse4_1_test (void)
+{
+ double a[NUM];
+ double r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = trunc (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != trunc (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c
new file mode 100644
index 00000000000..6a267ca94d6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c
@@ -0,0 +1,54 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */
+/* { dg-require-effective-target sse4 } */
+/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
+
+#include "sse4_1-check.h"
+
+#include <math.h>
+
+extern float truncf (float);
+
+#define NUM 64
+
+static void
+__attribute__((__target__("fpmath=sse")))
+init_src (float *src)
+{
+ int i, sign = 1;
+ float f = rand ();
+
+ for (i = 0; i < NUM; i++)
+ {
+ src[i] = (i + 1) * f * M_PI * sign;
+ if (i < (NUM / 2))
+ {
+ if ((i % 6) == 0)
+ f = f * src[i];
+ }
+ else if (i == (NUM / 2))
+ f = rand ();
+ else if ((i % 6) == 0)
+ f = 1 / (f * (i + 1) * src[i] * M_PI * sign);
+ sign = -sign;
+ }
+}
+
+static void
+__attribute__((__target__("fpmath=387")))
+sse4_1_test (void)
+{
+ float a[NUM];
+ float r[NUM];
+ int i;
+
+ init_src (a);
+
+ for (i = 0; i < NUM; i++)
+ r[i] = truncf (a[i]);
+
+ /* check results: */
+ for (i = 0; i < NUM; i++)
+ if (r[i] != truncf (a[i]))
+ abort();
+}
diff --git a/gcc/testsuite/gcc.target/i386/ssefn-1.c b/gcc/testsuite/gcc.target/i386/ssefn-1.c
index bea6cb2bf0b..786a0835dc6 100644
--- a/gcc/testsuite/gcc.target/i386/ssefn-1.c
+++ b/gcc/testsuite/gcc.target/i386/ssefn-1.c
@@ -8,7 +8,7 @@
/* { dg-final { scan-assembler-not "movsd" } } */
/* { dg-final { scan-assembler-not "mulsd" } } */
/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
-/* { dg-options "-O2 -march=i386 -msse -mfpmath=sse -fno-inline" } */
+/* { dg-options "-O2 -march=i386 -msse -mno-sse2 -mfpmath=sse -fno-inline" } */
static float xs (void)
{
diff --git a/gcc/testsuite/gcc.target/i386/vecinit-1.c b/gcc/testsuite/gcc.target/i386/vecinit-1.c
index a5091cd85f0..17e29598516 100644
--- a/gcc/testsuite/gcc.target/i386/vecinit-1.c
+++ b/gcc/testsuite/gcc.target/i386/vecinit-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=k8 -msse2" } */
+/* { dg-options "-O2 -march=k8 -msse2 -mno-sse4" } */
#define vector __attribute__((vector_size(16)))
diff --git a/gcc/testsuite/gcc.target/i386/vecinit-2.c b/gcc/testsuite/gcc.target/i386/vecinit-2.c
index 52998a6bfc0..d7b910062d7 100644
--- a/gcc/testsuite/gcc.target/i386/vecinit-2.c
+++ b/gcc/testsuite/gcc.target/i386/vecinit-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=k8 -msse2" } */
+/* { dg-options "-O2 -march=k8 -msse2 -mno-sse4" } */
#define vector __attribute__((vector_size(16)))
diff --git a/gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_x.c b/gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_x.c
index 076b399a384..38339cad894 100644
--- a/gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_x.c
+++ b/gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_x.c
@@ -89,7 +89,7 @@ extern _Complex double (*pcd10) (double, double);
#define CHECK_RESULT(x, y) if ((x) != (y)) abort ()
#define CHECK_VOID_RESULT(x, y) CHECK_RESULT (((x), the_result), y)
-/* Call functions through pointers and and check against expected results. */
+/* Call functions through pointers and check against expected results. */
void
test (void)
{
diff --git a/gcc/testsuite/gcc.target/mips/madd-7.c b/gcc/testsuite/gcc.target/mips/madd-7.c
index 93ed0fc6f06..b43d7207427 100644
--- a/gcc/testsuite/gcc.target/mips/madd-7.c
+++ b/gcc/testsuite/gcc.target/mips/madd-7.c
@@ -1,5 +1,4 @@
-/* -mlong32 added because of PR target/38598. */
-/* { dg-options "-O2 -march=5kc -mlong32" } */
+/* { dg-options "-O2 -march=5kc" } */
/* { dg-final { scan-assembler-not "\tmul\t" } } */
/* { dg-final { scan-assembler "\tmadd\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/msub-7.c b/gcc/testsuite/gcc.target/mips/msub-7.c
index ca90cee9ea5..7ae96acb42e 100644
--- a/gcc/testsuite/gcc.target/mips/msub-7.c
+++ b/gcc/testsuite/gcc.target/mips/msub-7.c
@@ -1,5 +1,4 @@
-/* -mlong32 added because of PR target/38598. */
-/* { dg-options "-O2 -march=5kc -mlong32" } */
+/* { dg-options "-O2 -march=5kc" } */
/* { dg-final { scan-assembler-not "\tmul\t" } } */
/* { dg-final { scan-assembler "\tmsub\t" } } */
diff --git a/gcc/testsuite/gcc.target/mips/reg-var-1.c b/gcc/testsuite/gcc.target/mips/reg-var-1.c
new file mode 100644
index 00000000000..d8b8118103a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/reg-var-1.c
@@ -0,0 +1,16 @@
+/* { dg-do run } */
+register int g asm ("$18");
+
+void __attribute__((noinline))
+test (void)
+{
+ g = g + 1;
+}
+
+int
+main (void)
+{
+ g = 2;
+ test ();
+ return g != 3;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-pow.c b/gcc/testsuite/gcc.target/powerpc/ppc-pow.c
index 1255d5c5966..e88125c1d98 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-pow.c
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-pow.c
@@ -2,8 +2,8 @@
/* { dg-options "-O2 -ffast-math -mcpu=power6" } */
/* { dg-final { scan-assembler-times "fsqrt" 3 } } */
/* { dg-final { scan-assembler-times "fmul" 1 } } */
-/* { dg-final { scan-assembler-times "bl pow" 1 } } */
-/* { dg-final { scan-assembler-times "bl sqrt" 1 } } */
+/* { dg-final { scan-assembler-times "bl? pow" 1 } } */
+/* { dg-final { scan-assembler-times "bl? sqrt" 1 } } */
double
do_pow_0_75_default (double a)
diff --git a/gcc/testsuite/gcc.target/powerpc/pr47755-2.c b/gcc/testsuite/gcc.target/powerpc/pr47755-2.c
index 2180efdbe42..5edcc118eeb 100644
--- a/gcc/testsuite/gcc.target/powerpc/pr47755-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/pr47755-2.c
@@ -1,6 +1,6 @@
/* { dg-do run { target { powerpc*-*-* } } } */
/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-require-effective-target vsx_hw } */
/* { dg-options "-O3 -mcpu=power7" } */
/* PR 47755: Make sure compiler generates correct code for various
diff --git a/gcc/testsuite/gcc.target/powerpc/pr48053-3.c b/gcc/testsuite/gcc.target/powerpc/pr48053-3.c
new file mode 100644
index 00000000000..399b3d3ea36
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr48053-3.c
@@ -0,0 +1,41 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O3 -mcpu=power7" } */
+
+/* Cut down example from s_scalbnl that aborted on 32-bit when the fix for
+ 48053 went in to allow creating DImode 0's in VSX registers. */
+
+typedef union
+{
+ long double value;
+ struct
+ {
+ unsigned long long msw;
+ unsigned long long lsw;
+ } parts64;
+ struct
+ {
+ unsigned int w0, w1, w2, w3;
+ } parts32;
+} ieee854_long_double_shape_type;
+
+static const long double twolm54 = 5.55111512312578270212e-17;
+
+long double foo (long double x, int n)
+{
+ long long k, hx, lx;
+ ieee854_long_double_shape_type qw_u;
+
+ qw_u.value = x;
+ hx = qw_u.parts64.msw;
+ lx = qw_u.parts64.lsw;
+
+ k = ((hx >> 52) & 0x7ff) + n + 54;
+
+ qw_u.parts64.msw = ((hx & 0x800fffffffffffffULL) | (k << 52));
+ qw_u.parts64.lsw = lx;
+ x = qw_u.value;
+
+ return x*twolm54;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr48192.c b/gcc/testsuite/gcc.target/powerpc/pr48192.c
new file mode 100644
index 00000000000..5159260857c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr48192.c
@@ -0,0 +1,49 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O3 -mcpu=power7 -std=gnu89" } */
+
+/* Make sure that the conditional macros vector, bool, and pixel are not
+ considered as being defined. */
+
+#ifdef bool
+#error "bool is considered defined"
+#endif
+
+#ifdef vector
+#error "vector is considered defined"
+#endif
+
+#ifdef pixel
+#error "pixel is condsidered defined"
+#endif
+
+#if defined(bool)
+#error "bool is considered defined"
+#endif
+
+#if defined(vector)
+#error "vector is considered defined"
+#endif
+
+#if defined(pixel)
+#error "pixel is condsidered defined"
+#endif
+
+#ifndef bool
+#else
+#error "bool is considered defined"
+#endif
+
+#ifndef vector
+#else
+#error "vector is considered defined"
+#endif
+
+#ifndef pixel
+#else
+#error "pixel is condsidered defined"
+#endif
+
+#define bool long double
+bool pixel = 0;
diff --git a/gcc/testsuite/gcc.target/powerpc/pr48226.c b/gcc/testsuite/gcc.target/powerpc/pr48226.c
new file mode 100644
index 00000000000..a436f1da5c1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr48226.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O3 -mcpu=power7" } */
+
+/* The bug shows up if you compile with -maltivec or -mcpu=power7, due to one
+ of the vector's being eliminated due to rs6000_macro_to_expand being called
+ recursively. */
+
+struct vector {
+ float v[4];
+};
+
+struct vector vector = { 1.0, 2.0, 3.0, 4.0 };
diff --git a/gcc/testsuite/gcc.target/powerpc/pr48258-1.c b/gcc/testsuite/gcc.target/powerpc/pr48258-1.c
new file mode 100644
index 00000000000..4f37815d384
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr48258-1.c
@@ -0,0 +1,57 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O3 -mcpu=power7 -mabi=altivec -ffast-math -fno-unroll-loops" } */
+/* { dg-final { scan-assembler-times "xvaddsp" 3 } } */
+/* { dg-final { scan-assembler-times "xvminsp" 3 } } */
+/* { dg-final { scan-assembler-times "xvmaxsp" 3 } } */
+/* { dg-final { scan-assembler-times "xxsldwi" 6 } } */
+/* { dg-final { scan-assembler-times "xscvspdp" 3 } } */
+/* { dg-final { scan-assembler-not "stvewx" } } */
+/* { dg-final { scan-assembler-not "stvx" } } */
+/* { dg-final { scan-assembler-not "stxvd2x" } } */
+/* { dg-final { scan-assembler-not "stxvw4x" } } */
+
+#include <stddef.h>
+
+#ifndef SIZE
+#define SIZE 1024
+#endif
+
+float values[SIZE] __attribute__((__aligned__(32)));
+
+float
+vector_sum (void)
+{
+ size_t i;
+ float sum = 0.0f;
+
+ for (i = 0; i < SIZE; i++)
+ sum += values[i];
+
+ return sum;
+}
+
+float
+vector_min (void)
+{
+ size_t i;
+ float min = values[0];
+
+ for (i = 0; i < SIZE; i++)
+ min = __builtin_fminf (min, values[i]);
+
+ return min;
+}
+
+float
+vector_max (void)
+{
+ size_t i;
+ float max = values[0];
+
+ for (i = 0; i < SIZE; i++)
+ max = __builtin_fmaxf (max, values[i]);
+
+ return max;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr48258-2.c b/gcc/testsuite/gcc.target/powerpc/pr48258-2.c
new file mode 100644
index 00000000000..443fb624e30
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr48258-2.c
@@ -0,0 +1,58 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O3 -mcpu=power7 -mabi=altivec -ffast-math -fno-unroll-loops" } */
+/* { dg-final { scan-assembler-times "xvadddp" 1 } } */
+/* { dg-final { scan-assembler-times "xvmindp" 1 } } */
+/* { dg-final { scan-assembler-times "xvmaxdp" 1 } } */
+/* { dg-final { scan-assembler-times "xsadddp" 1 } } */
+/* { dg-final { scan-assembler-times "xsmindp" 1 } } */
+/* { dg-final { scan-assembler-times "xsmaxdp" 1 } } */
+/* { dg-final { scan-assembler-not "xxsldwi" } } */
+/* { dg-final { scan-assembler-not "stvx" } } */
+/* { dg-final { scan-assembler-not "stxvd2x" } } */
+/* { dg-final { scan-assembler-not "stxvw4x" } } */
+
+#include <stddef.h>
+
+#ifndef SIZE
+#define SIZE 1024
+#endif
+
+double values[SIZE] __attribute__((__aligned__(32)));
+
+double
+vector_sum (void)
+{
+ size_t i;
+ double sum = 0.0;
+
+ for (i = 0; i < SIZE; i++)
+ sum += values[i];
+
+ return sum;
+}
+
+double
+vector_min (void)
+{
+ size_t i;
+ double min = values[0];
+
+ for (i = 0; i < SIZE; i++)
+ min = __builtin_fmin (min, values[i]);
+
+ return min;
+}
+
+double
+vector_max (void)
+{
+ size_t i;
+ double max = values[0];
+
+ for (i = 0; i < SIZE; i++)
+ max = __builtin_fmax (max, values[i]);
+
+ return max;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr48857.c b/gcc/testsuite/gcc.target/powerpc/pr48857.c
new file mode 100644
index 00000000000..e8201c037de
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr48857.c
@@ -0,0 +1,25 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O2 -mcpu=power7 -mabi=altivec" } */
+/* { dg-final { scan-assembler-times "lxvd2x" 1 } } */
+/* { dg-final { scan-assembler-times "stxvd2x" 1 } } */
+/* { dg-final { scan-assembler-not "ld" } } */
+/* { dg-final { scan-assembler-not "lwz" } } */
+/* { dg-final { scan-assembler-not "stw" } } */
+/* { dg-final { scan-assembler-not "addi" } } */
+
+typedef vector long long v2di_type;
+
+v2di_type
+return_v2di (v2di_type *ptr)
+{
+ return *ptr; /* should generate lxvd2x 34,0,3. */
+}
+
+void
+pass_v2di (v2di_type arg, v2di_type *ptr)
+{
+ *ptr = arg; /* should generate stxvd2x 34,0,{3,5}. */
+}
+
diff --git a/gcc/testsuite/gcc.target/rx/pack.c b/gcc/testsuite/gcc.target/rx/pack.c
index 97c44f05d69..ce13b5021b2 100644
--- a/gcc/testsuite/gcc.target/rx/pack.c
+++ b/gcc/testsuite/gcc.target/rx/pack.c
@@ -4,10 +4,10 @@ typedef unsigned short INT16U;
typedef struct tst_2
{
- INT16U f0; // [+0]
- INT16U * f1; // [+2]
- INT16U f2; // [+6]
- INT16U * f3; // [+8]
+ INT16U f0; /* [+0] */
+ INT16U * f1; /* [+2] */
+ INT16U f2; /* [+6] */
+ INT16U * f3; /* [+8] */
} __attribute__ ((__packed__)) t2;
#include <stddef.h>
diff --git a/gcc/testsuite/gfortran.dg/bessel_1.f90 b/gcc/testsuite/gfortran.dg/bessel_1.f90
index 728c5ce49ca..fb1e19beef5 100644
--- a/gcc/testsuite/gfortran.dg/bessel_1.f90
+++ b/gcc/testsuite/gfortran.dg/bessel_1.f90
@@ -26,11 +26,11 @@ program test
call check(bessel_yn (3,x4), bessel_yn (3,1.9_4))
contains
- subroutine check_r4 (a, b)
+ subroutine check_r4 (a, b) ! { dg-warning "Extension: Internal procedure" }
real(kind=4), intent(in) :: a, b
if (abs(a - b) > 1.e-5 * abs(b)) call abort
end subroutine
- subroutine check_r8 (a, b)
+ subroutine check_r8 (a, b) ! { dg-warning "Extension: Internal procedure" }
real(kind=8), intent(in) :: a, b
if (abs(a - b) > 1.e-7 * abs(b)) call abort
end subroutine
diff --git a/gcc/testsuite/gfortran.dg/bessel_6.f90 b/gcc/testsuite/gfortran.dg/bessel_6.f90
index e760d4cdb74..eca92cbd756 100644
--- a/gcc/testsuite/gfortran.dg/bessel_6.f90
+++ b/gcc/testsuite/gfortran.dg/bessel_6.f90
@@ -1,4 +1,5 @@
! { dg-do run { xfail spu-*-* } }
+! { dg-add-options ieee }
!
! PR fortran/36158
! PR fortran/33197
@@ -16,7 +17,7 @@ real,parameter :: myeps(size(values)) = epsilon(0.0) &
! more tolerant
! * [0, 5, 3, 4, 6, 7, 7, 5, 5, 6, 66, 4 ]
integer,parameter :: mymax(size(values)) = &
- [100, 17, 23, 21, 27, 28, 32, 35, 36, 41, 47, 37 ]
+ [100, 17, 23, 21, 27, 28, 32, 35, 31, 41, 47, 37 ]
integer, parameter :: Nmax = 100
real :: rec(0:Nmax), lib(0:Nmax)
integer :: i
@@ -39,8 +40,9 @@ lib(0:mymax) = [ (BESSEL_JN(i, X), i=0,mymax) ]
do i = 0, mymax
! print '(i2,2e17.9,e12.2,f18.10,2l3)', i, rec(i), lib(i), &
! rec(i)-lib(i), ((rec(i)-lib(i))/rec(i))/epsilon(x), &
-! rec(i) == lib(i) .or. abs((rec(i)-lib(i))/rec(i)) < myeps
-if (.not. (rec(i) == lib(i) .or. abs((rec(i)-lib(i))/rec(i)) < myeps)) &
+! rec(i) == lib(i), abs((rec(i)-lib(i))/rec(i)) < myeps
+if (rec(i) == lib(i)) CYCLE
+if (abs((rec(i)-lib(i))/rec(i)) > myeps) &
call abort()
end do
diff --git a/gcc/testsuite/gfortran.dg/bessel_7.f90 b/gcc/testsuite/gfortran.dg/bessel_7.f90
index 10a6e966dfa..78f1ff25128 100644
--- a/gcc/testsuite/gfortran.dg/bessel_7.f90
+++ b/gcc/testsuite/gfortran.dg/bessel_7.f90
@@ -1,4 +1,5 @@
! { dg-do run { xfail *-*-mingw* spu-*-* } }
+! { dg-add-options ieee }
!
! PR fortran/36158
! PR fortran/33197
diff --git a/gcc/testsuite/gfortran.dg/bind_c_usage_22.f90 b/gcc/testsuite/gfortran.dg/bind_c_usage_22.f90
new file mode 100644
index 00000000000..861f8c7cfd8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/bind_c_usage_22.f90
@@ -0,0 +1,64 @@
+! { dg-do compile }
+! { dg-options "-std=f2008tr" }
+!
+! PR fortran/48858
+! PR fortran/48820
+!
+! OPTIONAL + BIND(C) is allowed since TR 29113
+!
+
+! VALID
+subroutine sub(z) bind(C)
+ use iso_c_binding
+ integer(c_int), value :: z
+end subroutine sub
+
+! VALID since TR29113
+subroutine sub2(z) bind(C)
+ use iso_c_binding
+ integer(c_int), optional :: z
+end subroutine sub2
+
+! VALID since TR29113
+subroutine sub2a(z) bind(C)
+ use iso_c_binding
+ integer(c_int) :: z
+ optional :: z
+end subroutine sub2a
+
+! VALID since TR29113
+subroutine sub2b(z) bind(C)
+ use iso_c_binding
+ optional :: z
+ integer(c_int) :: z
+end subroutine sub2b
+
+! Invalid
+subroutine sub3(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
+ use iso_c_binding
+ integer(c_int), value, optional :: z
+end subroutine sub3
+
+! Invalid
+subroutine sub3a(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
+ use iso_c_binding
+ integer(c_int) :: z
+ optional :: z
+ value :: z
+end subroutine sub3a
+
+! Invalid
+subroutine sub3b(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
+ use iso_c_binding
+ optional :: z
+ value :: z
+ integer(c_int) :: z
+end subroutine sub3b
+
+! Invalid
+subroutine sub3c(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
+ use iso_c_binding
+ value :: z
+ integer(c_int) :: z
+ optional :: z
+end subroutine sub3c
diff --git a/gcc/testsuite/gfortran.dg/bind_c_usage_23.f90 b/gcc/testsuite/gfortran.dg/bind_c_usage_23.f90
new file mode 100644
index 00000000000..374f8129136
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/bind_c_usage_23.f90
@@ -0,0 +1,64 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+!
+! PR fortran/48858
+! PR fortran/48820
+!
+! OPTIONAL + BIND(C) is allowed since TR 29113
+!
+
+! VALID
+subroutine sub(z) bind(C)
+ use iso_c_binding
+ integer(c_int), value :: z
+end subroutine sub
+
+! VALID since TR29113
+subroutine sub2(z) bind(C) ! { dg-error "with OPTIONAL attribute in procedure" }
+ use iso_c_binding
+ integer(c_int), optional :: z
+end subroutine sub2
+
+! VALID since TR29113
+subroutine sub2a(z) bind(C) ! { dg-error "with OPTIONAL attribute in procedure" }
+ use iso_c_binding
+ integer(c_int) :: z
+ optional :: z
+end subroutine sub2a
+
+! VALID since TR29113
+subroutine sub2b(z) bind(C) ! { dg-error "with OPTIONAL attribute in procedure" }
+ use iso_c_binding
+ optional :: z
+ integer(c_int) :: z
+end subroutine sub2b
+
+! Invalid
+subroutine sub3(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
+ use iso_c_binding
+ integer(c_int), value, optional :: z
+end subroutine sub3
+
+! Invalid
+subroutine sub3a(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
+ use iso_c_binding
+ integer(c_int) :: z
+ optional :: z
+ value :: z
+end subroutine sub3a
+
+! Invalid
+subroutine sub3b(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
+ use iso_c_binding
+ optional :: z
+ value :: z
+ integer(c_int) :: z
+end subroutine sub3b
+
+! Invalid
+subroutine sub3c(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
+ use iso_c_binding
+ value :: z
+ integer(c_int) :: z
+ optional :: z
+end subroutine sub3c
diff --git a/gcc/testsuite/gfortran.dg/bind_c_usage_24.f90 b/gcc/testsuite/gfortran.dg/bind_c_usage_24.f90
new file mode 100644
index 00000000000..703ab5f19fa
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/bind_c_usage_24.f90
@@ -0,0 +1,43 @@
+! { dg-do run }
+! { dg-additional-sources bind_c_usage_24_c.c }
+!
+! PR fortran/48858
+! PR fortran/48820
+!
+! TR 29113: BIND(C) with OPTIONAL
+!
+module m
+ use iso_c_binding
+ interface
+ subroutine c_proc (is_present, var) bind(C)
+ import
+ logical(c_bool), value :: is_present
+ integer(c_int), optional :: var
+ end subroutine
+ end interface
+contains
+ subroutine subtest (is_present, var) bind(C)
+ logical(c_bool), intent(in), value :: is_present
+ integer(c_int), intent(inout), optional :: var
+ if (is_present) then
+ if (.not. present (var)) call abort ()
+ if (var /= 43) call abort ()
+ var = -45
+ else
+ if (present (var)) call abort ()
+ end if
+ end subroutine subtest
+end module m
+
+program test
+ use m
+ implicit none
+ integer :: val
+
+ val = 4
+ call c_proc (.false._c_bool)
+ call c_proc (.true._c_bool, val)
+ if (val /= 7) call abort ()
+end program test
+
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc/testsuite/gfortran.dg/bind_c_usage_24_c.c b/gcc/testsuite/gfortran.dg/bind_c_usage_24_c.c
new file mode 100644
index 00000000000..ffc90b728b5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/bind_c_usage_24_c.c
@@ -0,0 +1,24 @@
+/* Compiled and linked by bind_c.f90. */
+
+#include <stdlib.h>
+
+void subtest (_Bool, int *);
+
+void
+c_proc (_Bool present, int *val)
+{
+ int val2;
+ if (!present && val)
+ abort ();
+ else if (present)
+ {
+ if (!val) abort ();
+ if (*val != 4) abort ();
+ *val = 7;
+ }
+
+ val2 = 43;
+ subtest (1, &val2);
+ subtest (0, NULL);
+ if (val2 != -45) abort ();
+}
diff --git a/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90 b/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90
index 3b28f52b4e7..f7d6fa78eb4 100644
--- a/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90
+++ b/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90
@@ -30,6 +30,6 @@ end program test
! { dg-final { scan-tree-dump-times " fptr = .integer.kind=4. .. cptr" 1 "original" } }
!
! Check c_f_procpointer
-! { dg-final { scan-tree-dump-times " fprocptr = .integer.kind=4. .\\*<.*>. .void.. cfunptr;" 1 "original" } }
+! { dg-final { scan-tree-dump-times " fprocptr = .integer.kind=4. .\\*<.*>. ... cfunptr;" 1 "original" } }
!
! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/char4_iunit_1.f03 b/gcc/testsuite/gfortran.dg/char4_iunit_1.f03
index 5b1b285adf2..f02cc1a7b5b 100644
--- a/gcc/testsuite/gfortran.dg/char4_iunit_1.f03
+++ b/gcc/testsuite/gfortran.dg/char4_iunit_1.f03
@@ -5,7 +5,7 @@
! Test case prepared by Jerry DeLisle <jvdelisle@gcc.gnu.org>
program char4_iunit_1
implicit none
- character(kind=4,len=42) :: string
+ character(kind=4,len=44) :: string
integer(kind=4) :: i,j
real(kind=4) :: inf, nan, large
@@ -24,11 +24,11 @@ program char4_iunit_1
write(string, *) .true., .false. , .true.
if (string .ne. 4_" T F T ") call abort
write(string, *) 1.2345e-06, 4.2846e+10_8
- if (string .ne. 4_" 1.23450002E-06 42846000000.000000 ") call abort
+ if (string .ne. 4_" 1.23450002E-06 42846000000.000000 ") call abort
write(string, *) nan, inf
- if (string .ne. 4_" NaN Infinity ") call abort
+ if (string .ne. 4_" NaN Infinity ") call abort
write(string, '(10x,f3.1,3x,f9.1)') nan, inf
- if (string .ne. 4_" NaN Infinity ") call abort
+ if (string .ne. 4_" NaN Infinity ") call abort
write(string, *) (1.2, 3.4 )
- if (string .ne. 4_" ( 1.2000000 , 3.4000001 ) ") call abort
+ if (string .ne. 4_" ( 1.20000005 , 3.40000010 ) ") call abort
end program char4_iunit_1
diff --git a/gcc/testsuite/gfortran.dg/char4_iunit_2.f03 b/gcc/testsuite/gfortran.dg/char4_iunit_2.f03
index 074321274ca..cbf0f7fbd3d 100644
--- a/gcc/testsuite/gfortran.dg/char4_iunit_2.f03
+++ b/gcc/testsuite/gfortran.dg/char4_iunit_2.f03
@@ -43,5 +43,5 @@ program char4_iunit_2
write(widestring,*)"test",i, x, str_default,&
trim(str_char4)
if (widestring .ne. &
- k_" test 345 52.542999 0 hijklmnp qwertyuiopasd") call abort
+ k_" test 345 52.5429993 0 hijklmnp qwertyuiopasd") call abort
end program char4_iunit_2
diff --git a/gcc/testsuite/gfortran.dg/character_comparison_8.f90 b/gcc/testsuite/gfortran.dg/character_comparison_8.f90
new file mode 100644
index 00000000000..54e31a6454b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/character_comparison_8.f90
@@ -0,0 +1,14 @@
+! { dg-do run }
+! { dg-options "-O -fdump-tree-original" }
+! Check for compile-time optimization of LLE and friends.
+program main
+ character(3) :: a
+ a = 'ab'
+ if (.not. LLE(a,a)) call abort
+ if (LLT(a,a)) call abort
+ if (.not. LGE(a,a)) call abort
+ if (LGT(a,a)) call abort
+end program main
+! { dg-final { scan-tree-dump-times "gfortran_compare_string" 0 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
+
diff --git a/gcc/testsuite/gfortran.dg/class_42.f03 b/gcc/testsuite/gfortran.dg/class_42.f03
new file mode 100644
index 00000000000..dd59835cc84
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_42.f03
@@ -0,0 +1,16 @@
+! { dg-do compile }
+!
+! PR 48291: [4.6/4.7 Regression] [OOP] internal compiler error, new_symbol(): Symbol name too long
+!
+! Contributed by Adrian Prantl <adrian@llnl.gov>
+
+module Overload_AnException_Impl
+ type :: Overload_AnException_impl_t
+ end type
+contains
+ subroutine ctor_impl(self)
+ class(Overload_AnException_impl_t) :: self
+ end subroutine
+end module
+
+! { dg-final { cleanup-modules "Overload_AnException_Impl" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray/caf.exp b/gcc/testsuite/gfortran.dg/coarray/caf.exp
new file mode 100644
index 00000000000..c7e46f6bedc
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray/caf.exp
@@ -0,0 +1,76 @@
+# Copyright (C) 2011 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+#
+# Contributed by Tobias Burnus <burnus@net-b.de>
+
+
+# Test coarray support.
+#
+# For the compilation tests, all files are compiles with the
+# option -fcoarray=single and with -fcoarray=lib
+#
+# For the link and execution tests, for -fcoarray=lib the
+# libcaf_single library is linked. Additionally, with the
+# required settings another CAF library is used.
+
+# Load procedures from common libraries.
+load_lib gfortran-dg.exp
+
+# If a testcase doesn't have special options, use these.
+global DEFAULT_FFLAGS
+if ![info exists DEFAULT_FFLAGS] then {
+ set DEFAULT_FFLAGS " -pedantic-errors"
+}
+
+dg-init
+
+global runtests
+global DG_TORTURE_OPTIONS torture_with_loops
+
+torture-init
+set-torture-options $DG_TORTURE_OPTIONS
+
+# Main loop.
+foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03,08} ]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+ if ![runtest_file_p $runtests $test] then {
+ continue
+ }
+
+# Enable if you want to test several options:
+# # look if this is dg-do-run test, in which case
+# # we cycle through the option list, otherwise we don't
+# if [expr [search_for $test "dg-do run"]] {
+# set option_list $torture_with_loops
+# } else {
+# set option_list [list { -O } ]
+# }
+ set option_list [list { -O2 } ]
+
+ set nshort [file tail [file dirname $test]]/[file tail $test]
+
+ foreach flags $option_list {
+ verbose "Testing $nshort (single), $flags" 1
+ dg-test $test "-fcoarray=single $flags" ""
+ }
+
+ foreach flags $option_list {
+ verbose "Testing $nshort (libcaf_single), $flags" 1
+ dg-test $test "-fcoarray=lib $flags -lcaf_single" ""
+ }
+}
+torture-finish
+dg-finish
diff --git a/gcc/testsuite/gfortran.dg/coarray/image_index_1.f90 b/gcc/testsuite/gfortran.dg/coarray/image_index_1.f90
new file mode 100644
index 00000000000..00e5e09a74f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray/image_index_1.f90
@@ -0,0 +1,99 @@
+! { dg-do run }
+!
+! Run-time test for IMAGE_INDEX with cobounds only known at
+! the compile time, suitable for any number of NUM_IMAGES()
+! For compile-time cobounds, the -fcoarray=lib version still
+! needs to run-time evalulation if image_index returns > 1
+! as image_index is 0 if the index would exceed num_images().
+!
+! Please set num_images() to >= 13, if possible.
+!
+! PR fortran/18918
+!
+
+program test_image_index
+implicit none
+integer :: index1, index2, index3
+logical :: one
+
+integer, allocatable :: a(:)[:,:,:], b(:)[:,:], c(:,:)[:]
+integer, save :: d(2)[-1:3, *]
+integer, save :: e(2)[-1:-1, 3:*]
+
+one = num_images() == 1
+
+allocate(a(1)[3:3, -4:-3, 88:*])
+allocate(b(2)[-1:0,0:*])
+allocate(c(3,3)[*])
+
+index1 = image_index(a, [3, -4, 88] )
+index2 = image_index(b, [-1, 0] )
+index3 = image_index(c, [1] )
+if (index1 /= 1 .or. index2 /= 1 .or. index3 /= 1) call abort()
+
+
+index1 = image_index(a, [3, -3, 88] )
+index2 = image_index(b, [0, 0] )
+index3 = image_index(c, [2] )
+
+if (one .and. (index1 /= 0 .or. index2 /= 0 .or. index3 /= 0)) &
+ call abort()
+if (.not. one .and. (index1 /= 2 .or. index2 /= 2 .or. index3 /= 2)) &
+ call abort()
+
+
+index1 = image_index(d, [-1, 1] )
+index2 = image_index(d, [0, 1] )
+
+if (one .and. (index1 /= 1 .or. index2 /= 0)) &
+ call abort()
+if (.not. one .and. (index1 /= 1 .or. index2 /= 2)) &
+ call abort()
+
+index1 = image_index(e, [-1, 3] )
+index2 = image_index(e, [-1, 4] )
+
+if (one .and. (index1 /= 1 .or. index2 /= 0)) &
+ call abort()
+if (.not. one .and. (index1 /= 1 .or. index2 /= 2)) &
+ call abort()
+
+call test(1, a,b,c)
+
+! The following test is in honour of the F2008 standard:
+deallocate(a)
+allocate(a (10) [10, 0:9, 0:*])
+
+index1 = image_index(a, [1, 0, 0] )
+index2 = image_index(a, [3, 1, 2] ) ! = 213, yeah!
+index3 = image_index(a, [3, 1, 0] ) ! = 13
+
+if (num_images() < 13 .and. (index1 /= 1 .or. index2 /= 0 .or. index3 /= 0)) &
+ call abort()
+if (num_images() >= 213 .and. (index1 /= 1 .or. index2 /= 213 .or. index3 /= 13)) &
+ call abort()
+if (num_images() >= 13 .and. (index1 /= 1 .or. index2 /= 0 .or. index3 /= 13)) &
+ call abort()
+
+
+contains
+subroutine test(n, a, b, c)
+ integer :: n
+ integer :: a(1)[3*n:3*n, -4*n:-3*n, 88*n:*], b(2)[-1*n:0*n,0*n:*], c(3*n,3*n)[*]
+
+ index1 = image_index(a, [3, -4, 88] )
+ index2 = image_index(b, [-1, 0] )
+ index3 = image_index(c, [1] )
+ if (index1 /= 1 .or. index2 /= 1 .or. index3 /= 1) call abort()
+
+
+ index1 = image_index(a, [3, -3, 88] )
+ index2 = image_index(b, [0, 0] )
+ index3 = image_index(c, [2] )
+
+ if (one .and. (index1 /= 0 .or. index2 /= 0 .or. index3 /= 0)) &
+ call abort()
+ if (.not. one .and. (index1 /= 2 .or. index2 /= 2 .or. index3 /= 2)) &
+ call abort()
+end subroutine test
+end program test_image_index
diff --git a/gcc/testsuite/gfortran.dg/coarray/this_image_1.f90 b/gcc/testsuite/gfortran.dg/coarray/this_image_1.f90
new file mode 100644
index 00000000000..9ee4b153231
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray/this_image_1.f90
@@ -0,0 +1,196 @@
+! { dg-do run }
+!
+! PR fortran/18918
+!
+! this_image(coarray) run test,
+! expecially for num_images > 1
+!
+! Tested are values up to num_images == 8,
+! higher values are OK, but not tested for
+!
+implicit none
+integer :: a(1)[2:2, 3:4, 7:*]
+integer :: b(:)[:, :,:]
+allocatable :: b
+integer :: i
+
+if (this_image(A, dim=1) /= 2) call abort()
+i = 1
+if (this_image(A, dim=i) /= 2) call abort()
+
+select case (this_image())
+ case (1)
+ if (this_image(A, dim=2) /= 3) call abort()
+ if (this_image(A, dim=3) /= 7) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 3) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 7) call abort()
+ if (any (this_image(A) /= [2,3,7])) call abort()
+
+ case (2)
+ if (this_image(A, dim=2) /= 4) call abort()
+ if (this_image(A, dim=3) /= 7) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 4) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 7) call abort()
+ if (any (this_image(A) /= [2,4,7])) call abort()
+
+ case (3)
+ if (this_image(A, dim=2) /= 3) call abort()
+ if (this_image(A, dim=3) /= 8) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 3) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 8) call abort()
+ if (any (this_image(A) /= [2,3,8])) call abort()
+
+ case (4)
+ if (this_image(A, dim=2) /= 4) call abort()
+ if (this_image(A, dim=3) /= 8) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 4) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 8) call abort()
+ if (any (this_image(A) /= [2,4,8])) call abort()
+
+ case (5)
+ if (this_image(A, dim=2) /= 3) call abort()
+ if (this_image(A, dim=3) /= 9) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 3) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 9) call abort()
+ if (any (this_image(A) /= [2,3,9])) call abort()
+
+ case (6)
+ if (this_image(A, dim=2) /= 4) call abort()
+ if (this_image(A, dim=3) /= 9) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 4) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 9) call abort()
+ if (any (this_image(A) /= [2,4,9])) call abort()
+
+ case (7)
+ if (this_image(A, dim=2) /= 3) call abort()
+ if (this_image(A, dim=3) /= 10) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 3) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 10) call abort()
+ if (any (this_image(A) /= [2,3,10])) call abort()
+
+ case (8)
+ if (this_image(A, dim=2) /= 4) call abort()
+ if (this_image(A, dim=3) /= 10) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 4) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 10) call abort()
+ if (any (this_image(A) /= [2,4,10])) call abort()
+end select
+
+
+allocate (b(3)[-1:0,2:4,*])
+
+select case (this_image())
+ case (1)
+ if (this_image(B, dim=1) /= -1) call abort()
+ if (this_image(B, dim=2) /= 2) call abort()
+ if (this_image(B, dim=3) /= 1) call abort()
+ i = 1
+ if (this_image(B, dim=i) /= -1) call abort()
+ i = 2
+ if (this_image(B, dim=i) /= 2) call abort()
+ i = 3
+ if (this_image(B, dim=i) /= 1) call abort()
+ if (any (this_image(B) /= [-1,2,1])) call abort()
+
+ case (2)
+ if (this_image(B, dim=1) /= 0) call abort()
+ if (this_image(B, dim=2) /= 2) call abort()
+ if (this_image(B, dim=3) /= 1) call abort()
+ i = 1
+ if (this_image(B, dim=i) /= 0) call abort()
+ i = 2
+ if (this_image(B, dim=i) /= 2) call abort()
+ i = 3
+ if (this_image(B, dim=i) /= 1) call abort()
+ if (any (this_image(B) /= [0,2,1])) call abort()
+
+ case (3)
+ if (this_image(B, dim=1) /= -1) call abort()
+ if (this_image(B, dim=2) /= 3) call abort()
+ if (this_image(B, dim=3) /= 1) call abort()
+ i = 1
+ if (this_image(B, dim=i) /= -1) call abort()
+ i = 2
+ if (this_image(B, dim=i) /= 3) call abort()
+ i = 3
+ if (this_image(B, dim=i) /= 1) call abort()
+ if (any (this_image(B) /= [-1,3,1])) call abort()
+
+ case (4)
+ if (this_image(B, dim=1) /= 0) call abort()
+ if (this_image(B, dim=2) /= 3) call abort()
+ if (this_image(B, dim=3) /= 1) call abort()
+ i = 1
+ if (this_image(B, dim=i) /= 0) call abort()
+ i = 2
+ if (this_image(B, dim=i) /= 3) call abort()
+ i = 3
+ if (this_image(B, dim=i) /= 1) call abort()
+ if (any (this_image(B) /= [0,3,1])) call abort()
+
+ case (5)
+ if (this_image(B, dim=1) /= -1) call abort()
+ if (this_image(B, dim=2) /= 4) call abort()
+ if (this_image(B, dim=3) /= 1) call abort()
+ i = 1
+ if (this_image(B, dim=i) /= -1) call abort()
+ i = 2
+ if (this_image(B, dim=i) /= 4) call abort()
+ i = 3
+ if (this_image(B, dim=i) /= 1) call abort()
+ if (any (this_image(B) /= [-1,4,1])) call abort()
+
+ case (6)
+ if (this_image(B, dim=1) /= 0) call abort()
+ if (this_image(B, dim=2) /= 4) call abort()
+ if (this_image(B, dim=3) /= 1) call abort()
+ i = 1
+ if (this_image(B, dim=i) /= 0) call abort()
+ i = 2
+ if (this_image(B, dim=i) /= 4) call abort()
+ i = 3
+ if (this_image(B, dim=i) /= 1) call abort()
+ if (any (this_image(B) /= [0,4,1])) call abort()
+
+ case (7)
+ if (this_image(B, dim=1) /= -1) call abort()
+ if (this_image(B, dim=2) /= 2) call abort()
+ if (this_image(B, dim=3) /= 2) call abort()
+ i = 1
+ if (this_image(B, dim=i) /= -1) call abort()
+ i = 2
+ if (this_image(B, dim=i) /= 2) call abort()
+ i = 3
+ if (this_image(B, dim=i) /= 2) call abort()
+ if (any (this_image(B) /= [-1,2,2])) call abort()
+
+ case (8)
+ if (this_image(B, dim=1) /= 0) call abort()
+ if (this_image(B, dim=2) /= 2) call abort()
+ if (this_image(B, dim=3) /= 2) call abort()
+ i = 1
+ if (this_image(B, dim=i) /= 0) call abort()
+ i = 2
+ if (this_image(B, dim=i) /= 2) call abort()
+ i = 3
+ if (this_image(B, dim=i) /= 2) call abort()
+ if (any (this_image(B) /= [0,2,2])) call abort()
+end select
+
+end
diff --git a/gcc/testsuite/gfortran.dg/coarray/this_image_2.f90 b/gcc/testsuite/gfortran.dg/coarray/this_image_2.f90
new file mode 100644
index 00000000000..d5a5eef8de1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray/this_image_2.f90
@@ -0,0 +1,125 @@
+! { dg-do run }
+!
+! PR fortran/18918
+!
+! Version for scalar coarrays
+!
+! this_image(coarray) run test,
+! expecially for num_images > 1
+!
+! Tested are values up to num_images == 8,
+! higher values are OK, but not tested for
+!
+implicit none
+integer :: a[2:2, 3:4, 7:*]
+integer :: i
+
+if (this_image(A, dim=1) /= 2) call abort()
+i = 1
+if (this_image(A, dim=i) /= 2) call abort()
+
+select case (this_image())
+ case (1)
+ if (this_image(A, dim=2) /= 3) call abort()
+ if (this_image(A, dim=3) /= 7) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 3) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 7) call abort()
+ if (any (this_image(A) /= [2,3,7])) call abort()
+
+ case (2)
+ if (this_image(A, dim=2) /= 4) call abort()
+ if (this_image(A, dim=3) /= 7) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 4) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 7) call abort()
+ if (any (this_image(A) /= [2,4,7])) call abort()
+
+ case (3)
+ if (this_image(A, dim=2) /= 3) call abort()
+ if (this_image(A, dim=3) /= 8) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 3) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 8) call abort()
+ if (any (this_image(A) /= [2,3,8])) call abort()
+
+ case (4)
+ if (this_image(A, dim=2) /= 4) call abort()
+ if (this_image(A, dim=3) /= 8) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 4) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 8) call abort()
+ if (any (this_image(A) /= [2,4,8])) call abort()
+
+ case (5)
+ if (this_image(A, dim=2) /= 3) call abort()
+ if (this_image(A, dim=3) /= 9) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 3) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 9) call abort()
+ if (any (this_image(A) /= [2,3,9])) call abort()
+
+ case (6)
+ if (this_image(A, dim=2) /= 4) call abort()
+ if (this_image(A, dim=3) /= 9) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 4) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 9) call abort()
+ if (any (this_image(A) /= [2,4,9])) call abort()
+
+ case (7)
+ if (this_image(A, dim=2) /= 3) call abort()
+ if (this_image(A, dim=3) /= 10) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 3) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 10) call abort()
+ if (any (this_image(A) /= [2,3,10])) call abort()
+
+ case (8)
+ if (this_image(A, dim=2) /= 4) call abort()
+ if (this_image(A, dim=3) /= 10) call abort()
+ i = 2
+ if (this_image(A, dim=i) /= 4) call abort()
+ i = 3
+ if (this_image(A, dim=i) /= 10) call abort()
+ if (any (this_image(A) /= [2,4,10])) call abort()
+end select
+
+contains
+
+subroutine test_image_index
+implicit none
+integer :: index1, index2, index3
+logical :: one
+
+integer, save :: d(2)[-1:3, *]
+integer, save :: e(2)[-1:-1, 3:*]
+
+one = num_images() == 1
+
+index1 = image_index(d, [-1, 1] )
+index2 = image_index(d, [0, 1] )
+
+if (one .and. (index1 /= 1 .or. index2 /= 0)) &
+ call abort()
+if (.not. one .and. (index1 /= 1 .or. index2 /= 2)) &
+ call abort()
+
+index1 = image_index(e, [-1, 3] )
+index2 = image_index(e, [-1, 4] )
+
+if (one .and. (index1 /= 1 .or. index2 /= 0)) &
+ call abort()
+if (.not. one .and. (index1 /= 1 .or. index2 /= 2)) &
+ call abort()
+
+end subroutine test_image_index
+
+end
diff --git a/gcc/testsuite/gfortran.dg/coarray_10.f90 b/gcc/testsuite/gfortran.dg/coarray_10.f90
index 6ee425d7bf9..99f5782e35b 100644
--- a/gcc/testsuite/gfortran.dg/coarray_10.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_10.f90
@@ -11,8 +11,8 @@ subroutine image_idx_test1()
WRITE (*,*) IMAGE_INDEX (array, [2,0,3,1])
WRITE (*,*) IMAGE_INDEX (array, [0,0,3,1]) ! { dg-error "for dimension 1, SUB has 0 and COARRAY lower bound is 1" }
WRITE (*,*) IMAGE_INDEX (array, [1,2,9,0]) ! { dg-error "for dimension 3, SUB has 9 and COARRAY upper bound is 8" }
- WRITE (*,*) IMAGE_INDEX (array, [2,0,3]) ! { dg-error "Too few elements" }
- WRITE (*,*) IMAGE_INDEX (array, [2,0,3,1,1])! { dg-error "Too many elements" }
+ WRITE (*,*) IMAGE_INDEX (array, [2,0,3]) ! { dg-error "array elements of the SUB argument to IMAGE_INDEX at .1. shall be 4" }
+ WRITE (*,*) IMAGE_INDEX (array, [2,0,3,1,1])! { dg-error "array elements of the SUB argument to IMAGE_INDEX at .1. shall be 4" }
end subroutine
subroutine this_image_check()
@@ -44,3 +44,9 @@ subroutine rank_mismatch()
A(1)[1,1] = 1 ! { dg-error "Too few codimensions" }
A(1)[1,1:1] = 1 ! { dg-error "Too few codimensions" }
end subroutine rank_mismatch
+
+subroutine rank_mismatch2()
+ implicit none
+ integer, allocatable:: A(:)[:,:,:]
+ allocate(A(1)[7:8,4:*]) ! { dg-error "Unexpected .*. for codimension 2 of 3" }
+end subroutine rank_mismatch2
diff --git a/gcc/testsuite/gfortran.dg/coarray_13.f90 b/gcc/testsuite/gfortran.dg/coarray_13.f90
index bbd1ad49173..6283fa02c57 100644
--- a/gcc/testsuite/gfortran.dg/coarray_13.f90
+++ b/gcc/testsuite/gfortran.dg/coarray_13.f90
@@ -1,19 +1,149 @@
! { dg-do run }
-! { dg-options "-fcoarray=single" }
+! { dg-options "-fcoarray=single -fcheck=bounds" }
!
! Coarray support -- allocatable array coarrays
+! -- intrinsic procedures
! PR fortran/18918
! PR fortran/43931
!
program test
implicit none
+ integer,allocatable :: B(:)[:]
+
call one()
+ call two()
+ allocate(B(3)[-4:*])
+ call three(3,B,1)
+ call three_a(3,B)
+ call three_b(3,B)
+ call four(B)
+ call five()
contains
subroutine one()
integer, allocatable :: a(:)[:,:,:]
allocate(a(1)[-4:9,8,4:*])
+
+ if (this_image(a,dim=1) /= -4_8) call abort()
+ if (lcobound (a,dim=1) /= -4_8) call abort()
+ if (ucobound (a,dim=1) /= 9_8) call abort()
+
+ if (this_image(a,dim=2) /= 1_8) call abort()
+ if (lcobound (a,dim=2) /= 1_8) call abort()
+ if (ucobound (a,dim=2) /= 8_8) call abort()
+
+ if (this_image(a,dim=3) /= 4_8) call abort()
+ if (lcobound (a,dim=3) /= 4_8) call abort()
+ if (ucobound (a,dim=3) /= 4_8) call abort()
+
+ if (any(this_image(a) /= [-4_8, 1_8, 4_8])) call abort()
+ if (any(lcobound (a) /= [-4_8, 1_8, 4_8])) call abort()
+ if (any(ucobound (a) /= [9_8, 8_8, 4_8])) call abort()
end subroutine one
- subroutine four(C)
- integer, allocatable :: C(:)[:]
- end subroutine four
+
+ subroutine two()
+ integer, allocatable :: a(:)[:,:,:]
+ allocate(a(1)[-4:9,8,4:*])
+
+ if (this_image(a,dim=1) /= -4) call abort()
+ if (lcobound (a,dim=1) /= -4) call abort()
+ if (ucobound (a,dim=1) /= 9) call abort()
+
+ if (this_image(a,dim=2) /= 1) call abort()
+ if (lcobound (a,dim=2) /= 1) call abort()
+ if (ucobound (a,dim=2) /= 8) call abort()
+
+ if (this_image(a,dim=3) /= 4) call abort()
+ if (lcobound (a,dim=3) /= 4) call abort()
+ if (ucobound (a,dim=3) /= 4) call abort()
+
+ if (any(this_image(a) /= [-4, 1, 4])) call abort()
+ if (any(lcobound (a) /= [-4, 1, 4])) call abort()
+ if (any(ucobound (a) /= [9, 8, 4])) call abort()
+ end subroutine two
+
+ subroutine three(n,A, n2)
+ integer :: n, n2
+ integer :: A(3)[n:*]
+
+ A(1) = 42
+ if (A(1) /= 42) call abort()
+ A(1)[n2] = -42
+ if (A(1)[n2] /= -42) call abort()
+
+ if (this_image(A,dim=1) /= n) call abort()
+ if (lcobound (A,dim=1) /= n) call abort()
+ if (ucobound (A,dim=1) /= n) call abort()
+
+ if (any(this_image(A) /= n)) call abort()
+ if (any(lcobound (A) /= n)) call abort()
+ if (any(ucobound (A) /= n)) call abort()
+ end subroutine three
+
+ subroutine three_a(n,A)
+ integer :: n
+ integer :: A(3)[n+2:n+5,n-1:*]
+
+ A(1) = 42
+ if (A(1) /= 42) call abort()
+ A(1)[4,n] = -42
+ if (A(1)[4,n] /= -42) call abort()
+
+ if (this_image(A,dim=1) /= n+2) call abort()
+ if (lcobound (A,dim=1) /= n+2) call abort()
+ if (ucobound (A,dim=1) /= n+5) call abort()
+
+ if (this_image(A,dim=2) /= n-1) call abort()
+ if (lcobound (A,dim=2) /= n-1) call abort()
+ if (ucobound (A,dim=2) /= n-1) call abort()
+
+ if (any(this_image(A) /= [n+2,n-1])) call abort()
+ if (any(lcobound (A) /= [n+2,n-1])) call abort()
+ if (any(ucobound (A) /= [n+5,n-1])) call abort()
+ end subroutine three_a
+
+ subroutine three_b(n,A)
+ integer :: n
+ integer :: A(-1:3,0:4,-2:5,-4:7)[n+2:n+5,n-1:*]
+
+ A(-1,0,-2,-4) = 42
+ if (A(-1,0,-2,-4) /= 42) call abort()
+ A(1,0,-2,-4) = 99
+ if (A(1,0,-2,-4) /= 99) call abort()
+
+ if (this_image(A,dim=1) /= n+2) call abort()
+ if (lcobound (A,dim=1) /= n+2) call abort()
+ if (ucobound (A,dim=1) /= n+5) call abort()
+
+ if (this_image(A,dim=2) /= n-1) call abort()
+ if (lcobound (A,dim=2) /= n-1) call abort()
+ if (ucobound (A,dim=2) /= n-1) call abort()
+
+ if (any(this_image(A) /= [n+2,n-1])) call abort()
+ if (any(lcobound (A) /= [n+2,n-1])) call abort()
+ if (any(ucobound (A) /= [n+5,n-1])) call abort()
+ end subroutine three_b
+
+ subroutine four(A)
+ integer, allocatable :: A(:)[:]
+ if (this_image(A,dim=1) /= -4_8) call abort()
+ if (lcobound (A,dim=1) /= -4_8) call abort()
+ if (ucobound (A,dim=1) /= -4_8) call abort()
+ end subroutine four
+
+ subroutine five()
+ integer, save :: foo(2)[5:7,4:*]
+ integer :: i
+
+ i = 1
+ foo(1)[5,4] = 42
+ if (foo(1)[5,4] /= 42) call abort()
+ if (this_image(foo,dim=i) /= 5) call abort()
+ if (lcobound(foo,dim=i) /= 5) call abort()
+ if (ucobound(foo,dim=i) /= 7) call abort()
+
+ i = 2
+ if (this_image(foo,dim=i) /= 4) call abort()
+ if (lcobound(foo,dim=i) /= 4) call abort()
+ if (ucobound(foo,dim=i) /= 4) call abort()
+ end subroutine five
end program test
diff --git a/gcc/testsuite/gfortran.dg/coarray_15.f90 b/gcc/testsuite/gfortran.dg/coarray_15.f90
new file mode 100644
index 00000000000..0aecb2f4e11
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray_15.f90
@@ -0,0 +1,112 @@
+! { dg-do run }
+! { dg-options "-fcoarray=single" }
+!
+! PR fortran/18918
+!
+! Contributed by John Reid.
+!
+program ex2
+ implicit none
+ real, allocatable :: z(:)[:]
+ integer :: image
+ character(len=128) :: str
+
+ allocate(z(3)[*])
+ write(*,*) 'z allocated on image',this_image()
+ sync all
+ if (this_image()==1) then
+ z = 1.2
+ do image = 2, num_images() ! { dg-warning "will be executed zero times" }
+ write(*,*) 'Assigning z(:) on image',image
+ z(:)[image] = z
+ end do
+ end if
+ sync all
+
+ str = repeat('X', len(str))
+ write(str,*) 'z=',z(:),' on image',this_image()
+ if (str /= " z= 1.20000005 1.20000005 1.20000005 on image 1") &
+ call abort
+
+ str = repeat('X', len(str))
+ write(str,*) 'z=',z,' on image',this_image()
+ if (str /= " z= 1.20000005 1.20000005 1.20000005 on image 1") &
+ call abort
+
+ str = repeat('X', len(str))
+ write(str,*) 'z=',z(1:3)[this_image()],' on image',this_image()
+ if (str /= " z= 1.20000005 1.20000005 1.20000005 on image 1") &
+ call abort
+
+ call ex2a()
+ call ex5()
+end
+
+subroutine ex2a()
+ implicit none
+ real, allocatable :: z(:,:)[:,:]
+ integer :: image
+ character(len=128) :: str
+
+ allocate(z(2,2)[1,*])
+ write(*,*) 'z allocated on image',this_image()
+ sync all
+ if (this_image()==1) then
+ z = 1.2
+ do image = 2, num_images() ! { dg-warning "will be executed zero times" }
+ write(*,*) 'Assigning z(:) on image',image
+ z(:,:)[1,image] = z
+ end do
+ end if
+ sync all
+
+ str = repeat('X', len(str))
+ write(str,*) 'z=',z(:,:),' on image',this_image()
+ if (str /= " z= 1.20000005 1.20000005 1.20000005 1.20000005 on image 1") &
+ call abort
+
+ str = repeat('X', len(str))
+ write(str,*) 'z=',z,' on image',this_image()
+ if (str /= " z= 1.20000005 1.20000005 1.20000005 1.20000005 on image 1") &
+ call abort
+end subroutine ex2a
+
+subroutine ex5
+ implicit none
+ integer :: me
+ real, save :: w(4)[*]
+ character(len=128) :: str
+
+ me = this_image()
+ w = me
+
+ str = repeat('X', len(str))
+ write(str,*) 'In main on image',this_image(), 'w= ',w
+ if (str /= " In main on image 1 w= 1.00000000 1.00000000 1.00000000 1.00000000") &
+ call abort
+
+ str = repeat('X', len(str))
+ write(str,*) 'In main on image',this_image(), 'w= ',w(1:4)
+ if (str /= " In main on image 1 w= 1.00000000 1.00000000 1.00000000 1.00000000") &
+ call abort
+
+ str = repeat('X', len(str))
+ write(str,*) 'In main on image',this_image(), 'w= ',w(:)[1]
+ if (str /= " In main on image 1 w= 1.00000000 1.00000000 1.00000000 1.00000000") &
+ call abort
+
+ sync all
+ call ex5_sub(me,w)
+end subroutine ex5
+
+subroutine ex5_sub(n,w)
+ implicit none
+ integer :: n
+ real :: w(n)
+ character(len=75) :: str
+
+ str = repeat('X', len(str))
+ write(str,*) 'In sub on image',this_image(), 'w= ',w
+ if (str /= " In sub on image 1 w= 1.00000000") &
+ call abort
+end subroutine ex5_sub
diff --git a/gcc/testsuite/gfortran.dg/coarray_16.f90 b/gcc/testsuite/gfortran.dg/coarray_16.f90
new file mode 100644
index 00000000000..282e8706848
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray_16.f90
@@ -0,0 +1,100 @@
+! { dg-do run }
+! { dg-options "-fcoarray=single" }
+!
+! Run-time test for IMAGE_INDEX with cobounds only known at
+! the compile time, suitable for any number of NUM_IMAGES()
+! For compile-time cobounds, the -fcoarray=lib version still
+! needs to run-time evalulation if image_index returns > 1
+! as image_index is 0 if the index would exceed num_images().
+!
+! Please set num_images() to >= 13, if possible.
+!
+! PR fortran/18918
+!
+
+program test_image_index
+implicit none
+integer :: index1, index2, index3
+logical :: one
+
+integer, allocatable :: a(:)[:,:,:], b(:)[:,:], c(:,:)[:]
+integer, save :: d(2)[-1:3, *]
+integer, save :: e(2)[-1:-1, 3:*]
+
+one = num_images() == 1
+
+allocate(a(1)[3:3, -4:-3, 88:*])
+allocate(b(2)[-1:0,0:*])
+allocate(c(3,3)[*])
+
+index1 = image_index(a, [3, -4, 88] )
+index2 = image_index(b, [-1, 0] )
+index3 = image_index(c, [1] )
+if (index1 /= 1 .or. index2 /= 1 .or. index3 /= 1) call abort()
+
+
+index1 = image_index(a, [3, -3, 88] )
+index2 = image_index(b, [0, 0] )
+index3 = image_index(c, [2] )
+
+if (one .and. (index1 /= 0 .or. index2 /= 0 .or. index3 /= 0)) &
+ call abort()
+if (.not. one .and. (index1 /= 2 .or. index2 /= 2 .or. index3 /= 2)) &
+ call abort()
+
+
+index1 = image_index(d, [-1, 1] )
+index2 = image_index(d, [0, 1] )
+
+if (one .and. (index1 /= 1 .or. index2 /= 0)) &
+ call abort()
+if (.not. one .and. (index1 /= 1 .or. index2 /= 2)) &
+ call abort()
+
+index1 = image_index(e, [-1, 3] )
+index2 = image_index(e, [-1, 4] )
+
+if (one .and. (index1 /= 1 .or. index2 /= 0)) &
+ call abort()
+if (.not. one .and. (index1 /= 1 .or. index2 /= 2)) &
+ call abort()
+
+call test(1, a,b,c)
+
+! The following test is in honour of the F2008 standard:
+deallocate(a)
+allocate(a (10) [10, 0:9, 0:*])
+
+index1 = image_index(a, [1, 0, 0] )
+index2 = image_index(a, [3, 1, 2] ) ! = 213, yeah!
+index3 = image_index(a, [3, 1, 0] ) ! = 13
+
+if (num_images() < 13 .and. (index1 /= 1 .or. index2 /= 0 .or. index3 /= 0)) &
+ call abort()
+if (num_images() >= 213 .and. (index1 /= 1 .or. index2 /= 213 .or. index3 /= 13)) &
+ call abort()
+if (num_images() >= 13 .and. (index1 /= 1 .or. index2 /= 0 .or. index3 /= 13)) &
+ call abort()
+
+
+contains
+subroutine test(n, a, b, c)
+ integer :: n
+ integer :: a(1)[3*n:3*n, -4*n:-3*n, 88*n:*], b(2)[-1*n:0*n,0*n:*], c(3*n,3*n)[*]
+
+ index1 = image_index(a, [3, -4, 88] )
+ index2 = image_index(b, [-1, 0] )
+ index3 = image_index(c, [1] )
+ if (index1 /= 1 .or. index2 /= 1 .or. index3 /= 1) call abort()
+
+
+ index1 = image_index(a, [3, -3, 88] )
+ index2 = image_index(b, [0, 0] )
+ index3 = image_index(c, [2] )
+
+ if (one .and. (index1 /= 0 .or. index2 /= 0 .or. index3 /= 0)) &
+ call abort()
+ if (.not. one .and. (index1 /= 2 .or. index2 /= 2 .or. index3 /= 2)) &
+ call abort()
+end subroutine test
+end program test_image_index
diff --git a/gcc/testsuite/gfortran.dg/coarray_17.f90 b/gcc/testsuite/gfortran.dg/coarray_17.f90
new file mode 100644
index 00000000000..ad6da29f1a3
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray_17.f90
@@ -0,0 +1,21 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+!
+! Two simple diagnostics, which were initially not thought of
+!
+! General coarray PR: PR fortran/18918
+!
+
+subroutine one
+ integer, allocatable :: a(:)[:,:] ! corank = 2
+ integer :: index,nn1,nn2,nn3,mm0
+
+ allocate(a(mm0)[nn1:nn2,nn3,*]) ! { dg-error "Too many codimensions at .1., expected 2 not 3" }
+end subroutine one
+
+subroutine two
+ integer, allocatable :: a(:)[:,:,:], b(:)[:,:], c(:)[:]
+ index1 = image_index(a, [2, 1, 1] ) !OK
+ index2 = image_index(b, [2, 1, 1] ) ! { dg-error "array elements of the SUB argument to IMAGE_INDEX at .1. shall be 2 .corank. not 3" }
+ index3 = image_index(c, [1] ) !OK
+end subroutine two
diff --git a/gcc/testsuite/gfortran.dg/coarray_18.f90 b/gcc/testsuite/gfortran.dg/coarray_18.f90
new file mode 100644
index 00000000000..474e9391edb
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray_18.f90
@@ -0,0 +1,39 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+!
+! Prevent ICE when exceeding the maximal number of allowed
+! dimensions (normal + codimensions).
+!
+! Fortran 2008 allows (co)arrays with 15 ranks
+! Currently, gfortran only supports 7, cf. PR 37577
+! Thus, the program is valid Fortran 2008 ...
+!
+! See also general coarray PR 18918
+!
+! Test case taken from Leibniz-Rechenzentrum (LRZ)'s
+! fortran_tests with thanks to Reinhold Bader.
+!
+
+program ar
+ implicit none
+ integer :: ic(2)[*]
+ integer :: id(2,2)[2,*]
+ integer :: ie(2,2,2)[2,2,*]
+ integer :: ig(2,2,2,2)[2,2,2,*] ! { dg-error "has more than 7 dimensions" }
+ integer :: ih(2,2,2,2,2)[2,2,2,2,*] ! { dg-error "has more than 7 dimensions" }
+ integer :: ij(2,2,2,2,2,2)[2,2,2,2,2,*] ! { dg-error "has more than 7 dimensions" }
+ integer :: ik(2,2,2,2,2,2,2)[2,2,2,2,2,2,*] ! { dg-error "has more than 7 dimensions" }
+ integer :: il[2,2,2,2,2,2,2,*] ! { dg-error "has more than 7 dimensions" }
+ integer :: im[2,2,2,2,2,2,2,2,*] ! { dg-error "has more than 7 dimensions" }
+ integer :: in[2,2,2,2,2,2,2,2,2,*] ! { dg-error "has more than 7 dimensions" }
+ integer :: io[2,2,2,2,2,2,2,2,2,2,*] ! { dg-error "has more than 7 dimensions" }
+ real :: x2(2,2,4)[2,*]
+ complex :: c2(4,2)[2,*]
+ double precision :: d2(1,5,9)[2,*]
+ character(len=1) :: ch2(2)[2,*]
+ character(len=2) :: ch22(-5:4)[2,*]
+ logical :: l2(17)[2,*]
+ if (this_image() == 1) then
+ write(*,*) 'OK'
+ end if
+end program
diff --git a/gcc/testsuite/gfortran.dg/coarray_19.f90 b/gcc/testsuite/gfortran.dg/coarray_19.f90
new file mode 100644
index 00000000000..cbb1dd20d8f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray_19.f90
@@ -0,0 +1,27 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+!
+! PR fortran/18918
+!
+
+! Was failing before as the "x%a()[]" was
+! regarded as coindexed
+subroutine test2()
+ type t
+ integer, allocatable :: a(:)[:]
+ end type t
+ type(t), SAVE :: x
+ allocate(x%a(1)[*])
+end subroutine test2
+
+
+module m
+ integer, allocatable :: a(:)[:]
+end module m
+
+! Was failing as "a" was allocatable but
+! as->cotype was not AS_DEFERERED.
+use m
+end
+
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc/testsuite/gfortran.dg/cray_pointers_8.f90 b/gcc/testsuite/gfortran.dg/cray_pointers_8.f90
index 887c9625ac7..592e4d283f1 100644
--- a/gcc/testsuite/gfortran.dg/cray_pointers_8.f90
+++ b/gcc/testsuite/gfortran.dg/cray_pointers_8.f90
@@ -1,5 +1,5 @@
! { dg-do run }
-! { dg-options "-fcray-pointer" }
+! { dg-options "-fcray-pointer -ffloat-store" }
!
! Test the fix for PR36528 in which the Cray pointer was not passed
! correctly to 'euler' so that an undefined reference to fcn was
diff --git a/gcc/testsuite/gfortran.dg/endfile_3.f90 b/gcc/testsuite/gfortran.dg/endfile_3.f90
index 0c413145c5d..3e90dda6141 100644
--- a/gcc/testsuite/gfortran.dg/endfile_3.f90
+++ b/gcc/testsuite/gfortran.dg/endfile_3.f90
@@ -1,4 +1,4 @@
-! { dg-do run }
+! { dg-do run { target fd_truncate } }
! pr44477 READ/WRITE not allowed after ENDFILE
!-------------------------------------------
open(10, form='formatted', &
diff --git a/gcc/testsuite/gfortran.dg/endfile_4.f90 b/gcc/testsuite/gfortran.dg/endfile_4.f90
index a2462c9f878..351643781d0 100644
--- a/gcc/testsuite/gfortran.dg/endfile_4.f90
+++ b/gcc/testsuite/gfortran.dg/endfile_4.f90
@@ -1,4 +1,4 @@
-! { dg-do run }
+! { dg-do run { target fd_truncate } }
! pr44477 ENDFILE not allowed after ENDFILE
!-------------------------------------------
open(10, form='formatted', &
diff --git a/gcc/testsuite/gfortran.dg/erfc_scaled_1.f90 b/gcc/testsuite/gfortran.dg/erfc_scaled_1.f90
index 8a114e60ef9..eeb54c829dc 100644
--- a/gcc/testsuite/gfortran.dg/erfc_scaled_1.f90
+++ b/gcc/testsuite/gfortran.dg/erfc_scaled_1.f90
@@ -1,4 +1,8 @@
! { dg-do run }
+!
+! { dg-options "" }
+! Do not run with -pedantic checks enabled as "check"
+! contains internal procedures which is a vendor extension
program test
implicit none
diff --git a/gcc/testsuite/gfortran.dg/f2003_io_5.f03 b/gcc/testsuite/gfortran.dg/f2003_io_5.f03
index b816ded69c5..c064e0cf3c1 100644
--- a/gcc/testsuite/gfortran.dg/f2003_io_5.f03
+++ b/gcc/testsuite/gfortran.dg/f2003_io_5.f03
@@ -5,7 +5,7 @@ integer :: i
real :: a(10) = [ (i*1.3, i=1,10) ]
real :: b(10)
complex :: c
-character(34) :: complex
+character(36) :: complex
namelist /nm/ a
open(99,file="mynml",form="formatted",decimal="point",status="replace")
@@ -18,9 +18,9 @@ close(99, status="delete")
c = (3.123,4.456)
write(complex,*,decimal="comma") c
-if (complex.ne." ( 3,1229999 ; 4,4559999 )") call abort
+if (complex.ne." ( 3,12299991 ; 4,45599985 )") call abort
c = (0.0, 0.0)
read(complex,*,decimal="comma") c
-if (complex.ne." ( 3,1229999 ; 4,4559999 )") call abort
+if (complex.ne." ( 3,12299991 ; 4,45599985 )") call abort
end
diff --git a/gcc/testsuite/gfortran.dg/fmt_cache_1.f b/gcc/testsuite/gfortran.dg/fmt_cache_1.f
index 41de3f0d705..b9b9fe8ddc9 100644
--- a/gcc/testsuite/gfortran.dg/fmt_cache_1.f
+++ b/gcc/testsuite/gfortran.dg/fmt_cache_1.f
@@ -1,11 +1,12 @@
-! { dg-do run }
+! { dg-do run { target fd_truncate } }
! pr40662 segfaults when specific format is invoked twice.
! pr40330 incorrect io.
! test case derived from pr40662, <jvdelisle@gcc.gnu.org>
program astap
- character(40) teststring
- arlxca = 0.0
- open(10, status="scratch")
+ implicit none
+ character(34) :: teststring
+ real(4) :: arlxca = 0.0
+ open(10)
write(10,40) arlxca
write(10,40) arlxca
40 format(t4,"arlxca = ",1pg13.6,t27,"arlxcc = ",g13.6,t53,
@@ -21,13 +22,12 @@
. "ebalnc = ",g13.6,t79,"ebalsa = ",g13.6,t105,
. "ebalsc = ",g13.6)
rewind 10
- rewind 10
teststring = ""
read(10,'(a)') teststring
- if (teststring.ne." arlxca = 0.00000 arlxcc = ")call abort
+ if (teststring.ne." arlxca = 0.00000 arlxcc =")call abort
teststring = ""
read(10,'(a)') teststring
- if (teststring.ne." arlxca = 0.00000 arlxcc = ")call abort
+ if (teststring.ne." arlxca = 0.00000 arlxcc =")call abort
end program astap
diff --git a/gcc/testsuite/gfortran.dg/fmt_g.f b/gcc/testsuite/gfortran.dg/fmt_g.f
index 55b094ae07e..cb73492829e 100644
--- a/gcc/testsuite/gfortran.dg/fmt_g.f
+++ b/gcc/testsuite/gfortran.dg/fmt_g.f
@@ -31,13 +31,13 @@
WRITE(buffer,"(G12.5E5,'<')") -10000.
if (buffer.ne."************<") call abort
WRITE(buffer,"(G13.5E5,'<')") -10000.
- if (buffer.ne."-10000. <") call abort
+ if (buffer.ne."*************<") call abort
WRITE(buffer,"(G14.5E5,'<')") -10000.
- if (buffer.ne." -10000. <") call abort
+ if (buffer.ne."-10000. <") call abort
WRITE(buffer,"(G15.5E5,'<')") -10000.
- if (buffer.ne." -10000. <") call abort
+ if (buffer.ne." -10000. <") call abort
WRITE(buffer,"(G16.5E5,'<')") -10000.
- if (buffer.ne." -10000. <") call abort
+ if (buffer.ne." -10000. <") call abort
STOP
END
diff --git a/gcc/testsuite/gfortran.dg/fmt_g0_1.f08 b/gcc/testsuite/gfortran.dg/fmt_g0_1.f08
index 2e7fc1877a4..ead6f81b28a 100644
--- a/gcc/testsuite/gfortran.dg/fmt_g0_1.f08
+++ b/gcc/testsuite/gfortran.dg/fmt_g0_1.f08
@@ -2,19 +2,19 @@
! PR36420 Fortran 2008: g0 edit descriptor
! Test case provided by Jerry DeLisle <jvdelisle@gcc.gnu.org>
character(25) :: string = "(g0,g0,g0)"
- character(33) :: buffer
+ character(50) :: buffer
write(buffer, '(g0,g0,g0)') ':',12340,':'
if (buffer.ne.":12340:") call abort
write(buffer, string) ':',0,':'
if (buffer.ne.":0:") call abort
- write(buffer, string) ':',1.0/3.0,':'
- if (buffer.ne.":.33333334:") call abort
- write(buffer, '(1x,a,g0,a)') ':',1.0/3.0,':'
- if (buffer.ne." :.33333334:") call abort
+ write(buffer, string) ':',1.0_8/3.0_8,':'
+ if (buffer.ne.":.33333333333333331:") call abort
+ write(buffer, '(1x,a,g0,a)') ':',1.0_8/3.0_8,':'
+ if (buffer.ne." :.33333333333333331:") call abort
write(buffer, string) ':',"hello",':'
- if (buffer.ne.":hello:") call abort
+ if (buffer.ne.":hello:") call abort
write(buffer, "(g0,g0,g0,g0)") ':',.true.,.false.,':'
if (buffer.ne.":TF:") call abort
- write(buffer, "(g0,g0,',',g0,g0)") '(',( 1.2345, 2.4567 ),')'
- if (buffer.ne."(1.2345001,2.4567001)") call abort
+ write(buffer, "(g0,g0,',',g0,g0)") '(',( 1.2345_8, 2.4567_8 ),')'
+ if (buffer.ne."(1.2344999999999999,2.4567000000000001)") call abort
end
diff --git a/gcc/testsuite/gfortran.dg/fmt_g0_5.f08 b/gcc/testsuite/gfortran.dg/fmt_g0_5.f08
new file mode 100644
index 00000000000..3de84846605
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/fmt_g0_5.f08
@@ -0,0 +1,39 @@
+! { dg-do run }
+! { dg-add-options ieee }
+! PR48589 Invalid G0/G0.d editing for NaN/infinity
+! Test case by Thomas Henlich
+program test_g0_special
+
+ call check_all("(g10.3)", "(f10.3)")
+ call check_all("(g10.3e3)", "(f10.3)")
+ call check_all("(spg10.3)", "(spf10.3)")
+ call check_all("(spg10.3e3)", "(spf10.3)")
+ !print *, "-----------------------------------"
+ call check_all("(g0)", "(f0.0)")
+ call check_all("(g0.15)", "(f0.0)")
+ call check_all("(spg0)", "(spf0.0)")
+ call check_all("(spg0.15)", "(spf0.0)")
+contains
+ subroutine check_all(fmt1, fmt2)
+ character(len=*), intent(in) :: fmt1, fmt2
+ real(8) :: one = 1.0D0, zero = 0.0D0, nan, pinf, minf
+
+ nan = zero / zero
+ pinf = one / zero
+ minf = -one / zero
+ call check_equal(fmt1, fmt2, nan)
+ call check_equal(fmt1, fmt2, pinf)
+ call check_equal(fmt1, fmt2, minf)
+ end subroutine check_all
+ subroutine check_equal(fmt1, fmt2, r)
+ real(8), intent(in) :: r
+ character(len=*), intent(in) :: fmt1, fmt2
+ character(len=80) :: s1, s2
+
+ write(s1, fmt1) r
+ write(s2, fmt2) r
+ if (s1 /= s2) call abort
+ !if (s1 /= s2) print "(6a)", trim(fmt1), ": '", trim(s1), "' /= '", trim(s2), "'"
+ !print "(6a)", trim(fmt1), ": '", trim(s1), "' /= '", trim(s2), "'"
+ end subroutine check_equal
+end program test_g0_special
diff --git a/gcc/testsuite/gfortran.dg/fmt_g0_6.f08 b/gcc/testsuite/gfortran.dg/fmt_g0_6.f08
new file mode 100644
index 00000000000..982412a4631
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/fmt_g0_6.f08
@@ -0,0 +1,83 @@
+! { dg-do run }
+! { dg-options "-ffloat-store" }
+! PR48602 Invalid F conversion of G descriptor for values close to powers of 10
+! Test case provided by Thomas Henlich
+program test_g0fr
+ use iso_fortran_env
+ implicit none
+ integer, parameter :: RT = REAL64
+
+ call check_all(0.0_RT, 15, 2, 0)
+ call check_all(0.991_RT, 15, 2, 0)
+ call check_all(0.995_RT, 15, 2, 0)
+ call check_all(0.996_RT, 15, 2, 0)
+ call check_all(0.999_RT, 15, 2, 0)
+contains
+ subroutine check_all(val, w, d, e)
+ real(kind=RT), intent(in) :: val
+ integer, intent(in) :: w
+ integer, intent(in) :: d
+ integer, intent(in) :: e
+
+ call check_f_fmt(val, 'C', w, d, e)
+ call check_f_fmt(val, 'U', w, d, e)
+ call check_f_fmt(val, 'D', w, d, e)
+ end subroutine check_all
+
+ subroutine check_f_fmt(val, roundmode, w, d, e)
+ real(kind=RT), intent(in) :: val
+ character, intent(in) :: roundmode
+ integer, intent(in) :: w
+ integer, intent(in) :: d
+ integer, intent(in) :: e
+ character(len=80) :: fmt_f, fmt_g
+ character(len=80) :: s_f, s_g
+ real(kind=RT) :: mag, lower, upper
+ real(kind=RT) :: r
+ integer :: n, dec
+
+ mag = abs(val)
+ if (e == 0) then
+ n = 4
+ else
+ n = e + 2
+ end if
+ select case (roundmode)
+ case('U')
+ r = 1.0_RT
+ case('D')
+ r = 0.0_RT
+ case('C')
+ r = 0.5_RT
+ end select
+
+ if (mag == 0) then
+ write(fmt_f, "('R', a, ',F', i0, '.', i0, ',', i0, 'X')") roundmode, w - n, d - 1, n
+ else
+ do dec = d, 0, -1
+ lower = 10.0_RT ** (d - 1 - dec) - r * 10.0_RT ** (- dec - 1)
+ upper = 10.0_RT ** (d - dec) - r * 10.0_RT ** (- dec)
+ if (lower <= mag .and. mag < upper) then
+ write(fmt_f, "('R', a, ',F', i0, '.', i0, ',', i0, 'X')") roundmode, w - n, dec, n
+ exit
+ end if
+ end do
+ end if
+ if (len_trim(fmt_f) == 0) then
+ ! e editing
+ return
+ end if
+ if (e == 0) then
+ write(fmt_g, "('R', a, ',G', i0, '.', i0)") roundmode, w, d
+ else
+ write(fmt_g, "('R', a, ',G', i0, '.', i0, 'e', i0)") roundmode, w, d, e
+ end if
+ write(s_g, "('''', " // trim(fmt_g) // ",'''')") val
+ write(s_f, "('''', " // trim(fmt_f) // ",'''')") val
+ if (s_g /= s_f) call abort
+ !if (s_g /= s_f) then
+ !print "(a,g0,a,g0)", "lower=", lower, " upper=", upper
+ ! print "(a, ' /= ', a, ' ', a, '/', a, ':', g0)", trim(s_g), trim(s_f), trim(fmt_g), trim(fmt_f), val
+ !end if
+ end subroutine check_f_fmt
+end program test_g0fr
diff --git a/gcc/testsuite/gfortran.dg/ftell_3.f90 b/gcc/testsuite/gfortran.dg/ftell_3.f90
index 16875d812a8..3e4681b58f5 100644
--- a/gcc/testsuite/gfortran.dg/ftell_3.f90
+++ b/gcc/testsuite/gfortran.dg/ftell_3.f90
@@ -1,4 +1,4 @@
-! { dg-do run }
+! { dg-do run { target fd_truncate } }
! PR43605 FTELL intrinsic returns incorrect position
! Contributed by Janne Blomqvist, Manfred Schwarb
! and Dominique d'Humieres.
diff --git a/gcc/testsuite/gfortran.dg/func_result_1.f90 b/gcc/testsuite/gfortran.dg/func_result_1.f90
index ce3c2e4e685..51f5cd4ca9e 100644
--- a/gcc/testsuite/gfortran.dg/func_result_1.f90
+++ b/gcc/testsuite/gfortran.dg/func_result_1.f90
@@ -1,5 +1,5 @@
! { dg-do run }
-! From PR 19673 : We didn't dereference the the result from POINTER
+! From PR 19673 : We didn't dereference the result from POINTER
! functions with a RESULT clause
program ret_ptr
if (foo(99) /= bar(99)) call abort ()
diff --git a/gcc/testsuite/gfortran.dg/func_result_6.f90 b/gcc/testsuite/gfortran.dg/func_result_6.f90
index e64a2ef7abc..e8347be587d 100644
--- a/gcc/testsuite/gfortran.dg/func_result_6.f90
+++ b/gcc/testsuite/gfortran.dg/func_result_6.f90
@@ -63,7 +63,7 @@ if (ptr /= 2) call abort()
bar = gen()
if (ptr /= 77) call abort()
contains
- function foo()
+ function foo() ! { dg-warning "Extension: Internal procedure .foo. in generic interface" }
integer, allocatable :: foo(:)
allocate(foo(2))
foo = [33, 77]
diff --git a/gcc/testsuite/gfortran.dg/function_optimize_1.f90 b/gcc/testsuite/gfortran.dg/function_optimize_1.f90
new file mode 100644
index 00000000000..b023121831b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/function_optimize_1.f90
@@ -0,0 +1,47 @@
+! { dg-do compile }
+! { dg-options "-O -fdump-tree-original -Warray-temporaries" }
+program main
+ implicit none
+ real, dimension(2,2) :: a, b, c, d
+ integer :: i
+ real :: x, z
+ character(60) :: line
+ real, external :: ext_func
+ interface
+ elemental function element(x)
+ real, intent(in) :: x
+ real :: elem
+ end function element
+ pure function mypure(x)
+ real, intent(in) :: x
+ integer :: mypure
+ end function mypure
+ elemental impure function elem_impure(x)
+ real, intent(in) :: x
+ real :: elem_impure
+ end function elem_impure
+ end interface
+
+ data a /2., 3., 5., 7./
+ data b /11., 13., 17., 23./
+ write (unit=line, fmt='(4F7.2)') matmul(a,b) &
+ & + matmul(a,b) ! { dg-warning "Creating array temporary" }
+ z = sin(x) + cos(x) + sin(x) + cos(x)
+ print *,z
+ x = ext_func(a) + 23 + ext_func(a)
+ print *,d,x
+ z = element(x) + element(x)
+ print *,z
+ i = mypure(x) - mypure(x)
+ print *,i
+ z = elem_impure(x) - elem_impure(x)
+ print *,z
+end program main
+! { dg-final { scan-tree-dump-times "matmul_r4" 1 "original" } }
+! { dg-final { scan-tree-dump-times "__builtin_sinf" 1 "original" } }
+! { dg-final { scan-tree-dump-times "__builtin_cosf" 1 "original" } }
+! { dg-final { scan-tree-dump-times "ext_func" 2 "original" } }
+! { dg-final { scan-tree-dump-times "element" 1 "original" } }
+! { dg-final { scan-tree-dump-times "mypure" 1 "original" } }
+! { dg-final { scan-tree-dump-times "elem_impure" 2 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/function_optimize_2.f90 b/gcc/testsuite/gfortran.dg/function_optimize_2.f90
new file mode 100644
index 00000000000..8105661b8f5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/function_optimize_2.f90
@@ -0,0 +1,47 @@
+! { dg-do compile }
+! { dg-options "-O -faggressive-function-elimination -fdump-tree-original" }
+program main
+ implicit none
+ real, dimension(2,2) :: a, b, c, d
+ real :: x, z
+ integer :: i
+ character(60) :: line
+ real, external :: ext_func
+ interface
+ elemental function element(x)
+ real, intent(in) :: x
+ real :: elem
+ end function element
+ pure function mypure(x)
+ real, intent(in) :: x
+ integer :: mypure
+ end function mypure
+ elemental impure function elem_impure(x)
+ real, intent(in) :: x
+ real :: elem_impure
+ end function elem_impure
+ end interface
+
+ data a /2., 3., 5., 7./
+ data b /11., 13., 17., 23./
+ write (unit=line, fmt='(4F7.2)') matmul(a,b) + matmul(a,b)
+ x = 1.2
+ z = sin(x) + cos(x) + sin(x) + cos(x)
+ print *,z
+ x = ext_func(a) + 23 + ext_func(a)
+ print *,d,x
+ z = element(x) + element(x)
+ print *,z
+ i = mypure(x) - mypure(x)
+ print *,i
+ z = elem_impure(x) - elem_impure(x)
+ print *,z
+end program main
+! { dg-final { scan-tree-dump-times "matmul_r4" 1 "original" } }
+! { dg-final { scan-tree-dump-times "__builtin_sinf" 1 "original" } }
+! { dg-final { scan-tree-dump-times "__builtin_cosf" 1 "original" } }
+! { dg-final { scan-tree-dump-times "ext_func" 1 "original" } }
+! { dg-final { scan-tree-dump-times "element" 1 "original" } }
+! { dg-final { scan-tree-dump-times "mypure" 1 "original" } }
+! { dg-final { scan-tree-dump-times "elem_impure" 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/function_optimize_3.f90 b/gcc/testsuite/gfortran.dg/function_optimize_3.f90
new file mode 100644
index 00000000000..71381f4c953
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/function_optimize_3.f90
@@ -0,0 +1,9 @@
+! { dg-do compile }
+! { dg-options "-O" }
+! PR 48352 - variable elimination in a DO loop caused segfaults.
+! Test case contributed by Joost VandeVondele
+program main
+ INTEGER, DIMENSION(:), POINTER :: a
+ DO I=1,MIN(SIZE(a),SIZE(a))
+ ENDDO
+END program main
diff --git a/gcc/testsuite/gfortran.dg/function_optimize_4.f90 b/gcc/testsuite/gfortran.dg/function_optimize_4.f90
new file mode 100644
index 00000000000..20fc46d3078
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/function_optimize_4.f90
@@ -0,0 +1,20 @@
+! { dg-do run }
+! { dg-options "-O" }
+! PR 48412 - function elimination got temporary varibles in the wrong order.
+! Test case contributed by Joost VandeVondele.
+
+INTEGER FUNCTION S1(m,ma,lx)
+INTEGER :: m,ma,lx
+
+IF (((m < 0).AND.(MODULO(ABS(ma-lx),2) == 1)).OR.&
+ ((m > 0).AND.(MODULO(ABS(ma-lx),2) == 0))) THEN
+ S1=1
+ELSE
+ S1=0
+ENDIF
+
+END FUNCTION
+
+INTEGER :: s1
+IF (S1(1,2,1).NE.0) CALL ABORT()
+END
diff --git a/gcc/testsuite/gfortran.dg/function_optimize_5.f90 b/gcc/testsuite/gfortran.dg/function_optimize_5.f90
new file mode 100644
index 00000000000..427b12684dc
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/function_optimize_5.f90
@@ -0,0 +1,41 @@
+! { dg-do compile }
+! { dg-options "-ffrontend-optimize -Wfunction-elimination" }
+! Check the -ffrontend-optimize (in the absence of -O) and
+! -Wfunction-elimination options.
+program main
+ implicit none
+ real, dimension(2,2) :: a, b, c, d
+ integer :: i
+ real :: x, z
+ character(60) :: line
+ real, external :: ext_func
+ interface
+ elemental function element(x)
+ real, intent(in) :: x
+ real :: elem
+ end function element
+ pure function mypure(x)
+ real, intent(in) :: x
+ integer :: mypure
+ end function mypure
+ elemental impure function elem_impure(x)
+ real, intent(in) :: x
+ real :: elem_impure
+ end function elem_impure
+ end interface
+
+ data a /2., 3., 5., 7./
+ data b /11., 13., 17., 23./
+ write (unit=line, fmt='(4F7.2)') matmul(a,b) & ! { dg-warning "Removing call to function 'matmul'" }
+ & + matmul(a,b)
+ z = sin(x) + 2.0 + sin(x) ! { dg-warning "Removing call to function 'sin'" }
+ print *,z
+ x = ext_func(a) + 23 + ext_func(a)
+ print *,d,x
+ z = element(x) + element(x) ! { dg-warning "Removing call to function 'element'" }
+ print *,z
+ i = mypure(x) - mypure(x) ! { dg-warning "Removing call to function 'mypure'" }
+ print *,i
+ z = elem_impure(x) - elem_impure(x)
+ print *,z
+end program main
diff --git a/gcc/testsuite/gfortran.dg/function_optimize_6.f90 b/gcc/testsuite/gfortran.dg/function_optimize_6.f90
new file mode 100644
index 00000000000..cda7ab06283
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/function_optimize_6.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! { dg-options "-O -fdump-tree-original" }
+! PR 48405 - function elimnination in a DO loop should work.
+program main
+ interface
+ pure function mypure()
+ integer :: mypure
+ end function mypure
+ end interface
+ DO I=1,mypure() + mypure()
+ ENDDO
+END program main
+! { dg-final { scan-tree-dump-times "mypure" 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
+
+
diff --git a/gcc/testsuite/gfortran.dg/g77/cabs.f b/gcc/testsuite/gfortran.dg/g77/cabs.f
index d4090121679..998327b6e67 100644
--- a/gcc/testsuite/gfortran.dg/g77/cabs.f
+++ b/gcc/testsuite/gfortran.dg/g77/cabs.f
@@ -1,4 +1,5 @@
-c { dg-do run { xfail mips-sgi-irix6* } } PR 16292
+c { dg-do run }
+c { dg-xfail-run-if "PR target/16292" { mips-sgi-irix6* } { -O0 } }
program cabs_1
complex z0
real r0
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr48117.f90 b/gcc/testsuite/gfortran.dg/gomp/pr48117.f90
new file mode 100644
index 00000000000..bc8ad9bc35e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr48117.f90
@@ -0,0 +1,11 @@
+! PR fortran/48117
+! { dg-do compile }
+! { dg-options "-O2 -fopenmp" }
+
+subroutine foo(x)
+ character(len=*), optional :: x
+ character(len=80) :: v
+ !$omp master
+ if (present(x)) v = adjustl(x)
+ !$omp end master
+end subroutine foo
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr48611.f90 b/gcc/testsuite/gfortran.dg/gomp/pr48611.f90
new file mode 100644
index 00000000000..643cc5c3efe
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr48611.f90
@@ -0,0 +1,12 @@
+! PR tree-optimization/48611
+! { dg-do compile }
+! { dg-options "-Os -fopenmp -fexceptions -fno-tree-ccp -fno-tree-copy-prop" }
+
+ integer, allocatable :: a(:)
+ logical :: l
+!$omp parallel private (a) reduction (.or.:l)
+ do i = 1, 7
+ a(:) = i
+ end do
+!$omp end parallel
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr48794.f90 b/gcc/testsuite/gfortran.dg/gomp/pr48794.f90
new file mode 100644
index 00000000000..11edb0bb498
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr48794.f90
@@ -0,0 +1,12 @@
+! PR tree-optimization/48794
+! { dg-do compile }
+! { dg-options "-Os -fopenmp -fexceptions -fno-tree-ccp -fno-tree-copy-prop" }
+
+ integer, allocatable :: a(:)
+ logical :: l
+ if (allocated (a)) call abort
+!$omp parallel private (a) reduction (.or.:l)
+ do i = 1, 7
+ end do
+!$omp end parallel
+end
diff --git a/gcc/testsuite/gfortran.dg/guality/guality.exp b/gcc/testsuite/gfortran.dg/guality/guality.exp
index 2444d8de7b8..8bb19a54b15 100644
--- a/gcc/testsuite/gfortran.dg/guality/guality.exp
+++ b/gcc/testsuite/gfortran.dg/guality/guality.exp
@@ -4,7 +4,8 @@ load_lib gfortran-dg.exp
load_lib gcc-gdb-test.exp
# Disable on darwin until radr://7264615 is resolved.
-if { [istarget *-*-darwin*] } {
+# Disable on Tru64 UNIX (PR testsuite/48251).
+if { [istarget *-*-darwin*] || [istarget alpha*-dec-osf*] } {
return
}
diff --git a/gcc/testsuite/gfortran.dg/hypot_1.f90 b/gcc/testsuite/gfortran.dg/hypot_1.f90
index 59022fab93c..0c1c6e2ae17 100644
--- a/gcc/testsuite/gfortran.dg/hypot_1.f90
+++ b/gcc/testsuite/gfortran.dg/hypot_1.f90
@@ -18,11 +18,11 @@ program test
call check(hypot(x4,y4), hypot(1.9_4,-2.1_4))
contains
- subroutine check_r4 (a, b)
+ subroutine check_r4 (a, b) ! { dg-warning "Extension: Internal procedure" }
real(kind=4), intent(in) :: a, b
if (abs(a - b) > 1.e-5 * abs(b)) call abort
end subroutine
- subroutine check_r8 (a, b)
+ subroutine check_r8 (a, b) ! { dg-warning "Extension: Internal procedure" }
real(kind=8), intent(in) :: a, b
if (abs(a - b) > 1.e-7 * abs(b)) call abort
end subroutine
diff --git a/gcc/testsuite/gfortran.dg/import9.f90 b/gcc/testsuite/gfortran.dg/import9.f90
new file mode 100644
index 00000000000..4ed5cdf88e3
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/import9.f90
@@ -0,0 +1,30 @@
+! { dg-do compile }
+!
+! PR fortran/48821
+!
+! Contributed by Daniel Carrera
+!
+
+contains
+ pure subroutine rk4_vec(t, Y, dY, h)
+ real, intent(inout) :: t, Y(:)
+ real, intent(in) :: h
+ real, dimension(size(Y)) :: k1, k2, k3, k4
+
+ interface
+ pure function dY(t0, y0)
+ import :: Y
+ real, intent(in) :: t0, y0(size(Y))
+ real :: dY(size(y0))
+ end function
+ end interface
+
+ k1 = dY(t, Y)
+ k2 = dY(t + h/2, Y + k1*h/2)
+ k3 = dY(t + h/2, Y + k2*h/2)
+ k4 = dY(t + h , Y + k3*h)
+
+ Y = Y + (k1 + 2*k2 + 2*k3 + k4) * h/6
+ t = t + h
+ end subroutine
+end
diff --git a/gcc/testsuite/gfortran.dg/interface_35.f90 b/gcc/testsuite/gfortran.dg/interface_35.f90
new file mode 100644
index 00000000000..20aa4af786d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/interface_35.f90
@@ -0,0 +1,79 @@
+! { dg-do compile }
+! { dg-options "-std=f2008" }
+!
+! PR fortran/48112 (module_m)
+! PR fortran/48279 (sidl_string_array, s_Hard)
+!
+! Contributed by mhp77@gmx.at (module_m)
+! and Adrian Prantl (sidl_string_array, s_Hard)
+!
+
+module module_m
+ interface test
+ function test1( ) result( test )
+ integer :: test
+ end function test1
+ end interface test
+end module module_m
+
+! -----
+
+module sidl_string_array
+ type sidl_string_1d
+ end type sidl_string_1d
+ interface set
+ module procedure &
+ setg1_p
+ end interface
+contains
+ subroutine setg1_p(array, index, val)
+ type(sidl_string_1d), intent(inout) :: array
+ end subroutine setg1_p
+end module sidl_string_array
+
+module s_Hard
+ use sidl_string_array
+ type :: s_Hard_t
+ integer(8) :: dummy
+ end type s_Hard_t
+ interface set_d_interface
+ end interface
+ interface get_d_string
+ module procedure get_d_string_p
+ end interface
+ contains ! Derived type member access functions
+ type(sidl_string_1d) function get_d_string_p(s)
+ type(s_Hard_t), intent(in) :: s
+ end function get_d_string_p
+ subroutine set_d_objectArray_p(s, d_objectArray)
+ end subroutine set_d_objectArray_p
+end module s_Hard
+
+subroutine initHard(h, ex)
+ use s_Hard
+ type(s_Hard_t), intent(inout) :: h
+ call set(get_d_string(h), 0, 'Three') ! { dg-error "There is no specific subroutine for the generic" }
+end subroutine initHard
+
+! -----
+
+ interface get
+ procedure get1
+ end interface
+
+ integer :: h
+ call set1 (get (h))
+
+contains
+
+ subroutine set1 (a)
+ integer, intent(in) :: a
+ end subroutine
+
+ integer function get1 (s) ! { dg-error "Extension: Internal procedure .get1. in generic interface .get." }
+ integer :: s
+ end function
+
+end
+
+! { dg-final { cleanup-modules "module_m module_m2 s_hard sidl_string_array" } }
diff --git a/gcc/testsuite/gfortran.dg/interface_36.f90 b/gcc/testsuite/gfortran.dg/interface_36.f90
new file mode 100644
index 00000000000..503229134ab
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/interface_36.f90
@@ -0,0 +1,28 @@
+! { dg-do compile }
+!
+! PR fortran/48800
+!
+! Contributed by Daniel Carrera
+!
+ pure function runge_kutta_step(t, r_, dr, h) result(res)
+ real, intent(in) :: t, r_(:), h
+ real, dimension(:), allocatable :: k1, k2, k3, k4, res
+ integer :: N
+
+ interface
+ pure function dr(t, r_) ! { dg-error "cannot have a deferred shape" }
+ real, intent(in) :: t, r_(:)
+ real :: dr(:)
+ end function
+ end interface
+
+ N = size(r_)
+ allocate(k1(N),k2(N),k3(N),k4(N),res(N))
+
+ k1 = dr(t, r_)
+ k2 = dr(t + h/2, r_ + k1*h/2)
+ k3 = dr(t + h/2, r_ + k2*h/2)
+ k4 = dr(t + h , r_ + k3*h)
+
+ res = r_ + (k1 + 2*k2 + 2*k3 + k4) * h/6
+ end function
diff --git a/gcc/testsuite/gfortran.dg/interface_assignment_4.f90 b/gcc/testsuite/gfortran.dg/interface_assignment_4.f90
index 535e8842549..d55af2905d5 100644
--- a/gcc/testsuite/gfortran.dg/interface_assignment_4.f90
+++ b/gcc/testsuite/gfortran.dg/interface_assignment_4.f90
@@ -16,7 +16,7 @@
contains
- subroutine op_assign_VS_CH (var, exp)
+ subroutine op_assign_VS_CH (var, exp) ! { dg-warning "Extension: Internal procedure" }
type(varying_string), intent(out) :: var
character(LEN=*), intent(in) :: exp
end subroutine
diff --git a/gcc/testsuite/gfortran.dg/missing_derived_type_1.f90 b/gcc/testsuite/gfortran.dg/missing_derived_type_1.f90
index 49c1ec8cedf..c890927179c 100644
--- a/gcc/testsuite/gfortran.dg/missing_derived_type_1.f90
+++ b/gcc/testsuite/gfortran.dg/missing_derived_type_1.f90
@@ -1,5 +1,5 @@
! { dg-do compile }
-! Tests the fix for PR29364, in which the the absence of the derived type
+! Tests the fix for PR29364, in which the absence of the derived type
! 'nonexist' was not diagnosed.
!
! Contributed by Tobias Burnus <tobias.burnus@physik.fu-berlin.de>
diff --git a/gcc/testsuite/gfortran.dg/module_md5_1.f90 b/gcc/testsuite/gfortran.dg/module_md5_1.f90
index e725b4b767e..f146cd2e204 100644
--- a/gcc/testsuite/gfortran.dg/module_md5_1.f90
+++ b/gcc/testsuite/gfortran.dg/module_md5_1.f90
@@ -10,5 +10,5 @@ program test
use foo
print *, pi
end program test
-! { dg-final { scan-module "foo" "MD5:5632bcd379cf023bf7e663e91d52fa12" } }
+! { dg-final { scan-module "foo" "MD5:12a205c48fe46315a609823f15986377" } }
! { dg-final { cleanup-modules "foo" } }
diff --git a/gcc/testsuite/gfortran.dg/namelist_65.f90 b/gcc/testsuite/gfortran.dg/namelist_65.f90
index 6ef8ca493a5..7efbe7083a3 100644
--- a/gcc/testsuite/gfortran.dg/namelist_65.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_65.f90
@@ -14,9 +14,9 @@ enddo
write(out,nl1)
if (out(1).ne."&NL1") call abort
-if (out(2).ne." A= 1.0000000 ,") call abort
-if (out(3).ne." B= 2.0000000 ,") call abort
-if (out(4).ne." C= 3.0000000 ,") call abort
+if (out(2).ne." A= 1.00000000 ,") call abort
+if (out(3).ne." B= 2.00000000 ,") call abort
+if (out(4).ne." C= 3.00000000 ,") call abort
if (out(5).ne." /") call abort
end program oneline
diff --git a/gcc/testsuite/gfortran.dg/namelist_66.f90 b/gcc/testsuite/gfortran.dg/namelist_66.f90
index 912261b4dc6..d779ea7b735 100644
--- a/gcc/testsuite/gfortran.dg/namelist_66.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_66.f90
@@ -1,4 +1,4 @@
-! { dg-do run }
+! { dg-do run { target fd_truncate } }
! PR46010 Failure to read these two examples of namelists
type ptracer
character(len = 2) :: sname
diff --git a/gcc/testsuite/gfortran.dg/namelist_print_1.f b/gcc/testsuite/gfortran.dg/namelist_print_1.f
index abc8aec6cdc..2e5de8305b8 100644
--- a/gcc/testsuite/gfortran.dg/namelist_print_1.f
+++ b/gcc/testsuite/gfortran.dg/namelist_print_1.f
@@ -9,5 +9,5 @@
namelist /mynml/ x
x = 1
! ( dg-output "^" }
- print mynml ! { dg-output "&MYNML(\n|\r\n|\r) X= 1.0000000 ,(\n|\r\n|\r) /(\n|\r\n|\r)" }
+ print mynml ! { dg-output "&MYNML(\n|\r\n|\r) X= 1.00000000 ,(\n|\r\n|\r) /(\n|\r\n|\r)" }
end
diff --git a/gcc/testsuite/gfortran.dg/pr42108.f90 b/gcc/testsuite/gfortran.dg/pr42108.f90
index e97dc3756f8..9a0a2532a78 100644
--- a/gcc/testsuite/gfortran.dg/pr42108.f90
+++ b/gcc/testsuite/gfortran.dg/pr42108.f90
@@ -1,5 +1,5 @@
! { dg-do compile }
-! { dg-options "-O2 -fdump-tree-fre" }
+! { dg-options "-O2 -fdump-tree-fre1" }
subroutine eval(foo1,foo2,foo3,foo4,x,n,nnd)
implicit real*8 (a-h,o-z)
@@ -23,5 +23,5 @@ end subroutine eval
! There should be only one load from n left
-! { dg-final { scan-tree-dump-times "\\*n_" 1 "fre" } }
-! { dg-final { cleanup-tree-dump "fre" } }
+! { dg-final { scan-tree-dump-times "\\*n_" 1 "fre1" } }
+! { dg-final { cleanup-tree-dump "fre1" } }
diff --git a/gcc/testsuite/gfortran.dg/pr47878.f90 b/gcc/testsuite/gfortran.dg/pr47878.f90
index 9cc4a086031..c9227f40007 100644
--- a/gcc/testsuite/gfortran.dg/pr47878.f90
+++ b/gcc/testsuite/gfortran.dg/pr47878.f90
@@ -1,5 +1,5 @@
! PR fortran/47878
-! { dg-do run }
+! { dg-do run { target fd_truncate } }
integer :: a(5)
open (99, recl = 40)
write (99, '(5i3)') 1, 2, 3
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90
index d4773686090..57660c7b70e 100644
--- a/gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90
@@ -35,12 +35,12 @@ o1%ppc => o2%ppc ! { dg-error "Type/kind mismatch" }
contains
- real function f1(a,b)
+ real function f1(a,b) ! { dg-warning "Extension: Internal procedure" }
real,intent(in) :: a,b
f1 = a + b
end function
- integer function f2(a,b)
+ integer function f2(a,b) ! { dg-warning "Extension: Internal procedure" }
real,intent(in) :: a,b
f2 = a - b
end function
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_21.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_21.f90
index c000896d549..a21916bc844 100644
--- a/gcc/testsuite/gfortran.dg/proc_ptr_comp_21.f90
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_21.f90
@@ -19,7 +19,7 @@
contains
- elemental subroutine op_assign (str, ch)
+ elemental subroutine op_assign (str, ch) ! { dg-warning "Extension: Internal procedure" }
type(nf_t), intent(out) :: str
character(len=*), intent(in) :: ch
end subroutine
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_32.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_32.f90
new file mode 100644
index 00000000000..eda972a4548
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_32.f90
@@ -0,0 +1,37 @@
+! { dg-do compile }
+!
+! PR 48095: [OOP] Invalid assignment to procedure pointer component not rejected
+!
+! Contributed by Arjen Markus <arjen.markus895@gmail.com>
+
+module m
+
+ implicit none
+
+ type :: rectangle
+ procedure(get_area), pointer :: get_special_area
+ end type rectangle
+
+ abstract interface
+ real function get_area( this )
+ import :: rectangle
+ class(rectangle), intent(in) :: this
+ end function get_area
+ end interface
+
+contains
+
+ real function get_my_area( this )
+ type(rectangle), intent(in) :: this
+ get_my_area = 3.0
+ end function get_my_area
+
+end module
+
+
+use m
+type(rectangle) :: rect
+rect%get_special_area => get_my_area ! { dg-error "Interface mismatch in procedure pointer assignment" }
+end
+
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc/testsuite/gfortran.dg/real_const_3.f90 b/gcc/testsuite/gfortran.dg/real_const_3.f90
index 9f3f5d837d7..e4b5de7e46e 100644
--- a/gcc/testsuite/gfortran.dg/real_const_3.f90
+++ b/gcc/testsuite/gfortran.dg/real_const_3.f90
@@ -42,15 +42,15 @@ program main
if (trim(adjustl(str)) .ne. 'NaN') call abort
write(str,*) z
- if (trim(adjustl(str)) .ne. '( NaN, NaN)') call abort
+ if (trim(adjustl(str)) .ne. '( NaN, NaN)') call abort
write(str,*) z2
- if (trim(adjustl(str)) .ne. '( NaN, NaN)') call abort
+ if (trim(adjustl(str)) .ne. '( NaN, NaN)') call abort
write(str,*) z3
- if (trim(adjustl(str)) .ne. '( Infinity, -Infinity)') call abort
+ if (trim(adjustl(str)) .ne. '( Infinity, -Infinity)') call abort
write(str,*) z4
- if (trim(adjustl(str)) .ne. '( 0.0000000 , -0.0000000 )') call abort
+ if (trim(adjustl(str)) .ne. '( 0.00000000 , -0.00000000 )') call abort
end program main
diff --git a/gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03 b/gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03
new file mode 100644
index 00000000000..7c170ebce27
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03
@@ -0,0 +1,129 @@
+! { dg-do compile }
+! Test the fix for PR48456 and PR48360 in which the backend
+! declarations for components were not located in the automatic
+! reallocation on assignments, thereby causing ICEs.
+!
+! Contributed by Keith Refson <krefson@googlemail.com>
+! and Douglas Foulds <mixnmaster@gmail.com>
+!
+! This is PR48360
+
+module m
+ type mm
+ real, dimension(3,3) :: h0
+ end type mm
+end module m
+
+module gf33
+
+ real, allocatable, save, dimension(:,:) :: hmat
+
+contains
+ subroutine assignit
+
+ use m
+ implicit none
+
+ type(mm) :: mmv
+
+ hmat = mmv%h0
+ end subroutine assignit
+end module gf33
+
+! This is PR48456
+
+module custom_type
+
+integer, parameter :: dp = kind(0.d0)
+
+type :: my_type_sub
+ real(dp), dimension(5) :: some_vector
+end type my_type_sub
+
+type :: my_type
+ type(my_type_sub) :: some_element
+end type my_type
+
+end module custom_type
+
+module custom_interfaces
+
+interface
+ subroutine store_data_subroutine(vec_size)
+ implicit none
+ integer, intent(in) :: vec_size
+ integer :: k
+ end subroutine store_data_subroutine
+end interface
+
+end module custom_interfaces
+
+module store_data_test
+
+use custom_type
+
+save
+type(my_type), dimension(:), allocatable :: some_type_to_save
+
+end module store_data_test
+
+program test
+
+use store_data_test
+
+integer :: vec_size
+
+vec_size = 2
+
+call store_data_subroutine(vec_size)
+call print_after_transfer()
+
+end program test
+
+subroutine store_data_subroutine(vec_size)
+
+use custom_type
+use store_data_test
+
+implicit none
+
+integer, intent(in) :: vec_size
+integer :: k
+
+allocate(some_type_to_save(vec_size))
+
+do k = 1,vec_size
+
+ some_type_to_save(k)%some_element%some_vector(1) = 1.0_dp
+ some_type_to_save(k)%some_element%some_vector(2) = 2.0_dp
+ some_type_to_save(k)%some_element%some_vector(3) = 3.0_dp
+ some_type_to_save(k)%some_element%some_vector(4) = 4.0_dp
+ some_type_to_save(k)%some_element%some_vector(5) = 5.0_dp
+
+end do
+
+end subroutine store_data_subroutine
+
+subroutine print_after_transfer()
+
+use custom_type
+use store_data_test
+
+implicit none
+
+real(dp), dimension(:), allocatable :: C_vec
+integer :: k
+
+allocate(C_vec(5))
+
+do k = 1,size(some_type_to_save)
+
+ C_vec = some_type_to_save(k)%some_element%some_vector
+ print *, "C_vec", C_vec
+
+end do
+
+end subroutine print_after_transfer
+! { dg-final { cleanup-modules "m gf33" } }
+! { dg-final { cleanup-modules "custom_type custom_interfaces" } }
+! { dg-final { cleanup-modules "store_data_test" } }
diff --git a/gcc/testsuite/gfortran.dg/realloc_on_assign_7.f03 b/gcc/testsuite/gfortran.dg/realloc_on_assign_7.f03
new file mode 100644
index 00000000000..f871d273942
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/realloc_on_assign_7.f03
@@ -0,0 +1,84 @@
+! { dg-do run }
+! Check the fix for PR48462 in which the assignments involving matmul
+! seg faulted because a was automatically freed before the assignment.
+! Since it is related, the test for the fix of PR48746 has been added
+! as a subroutine by that name.
+!
+! Contributed by John Nedney <ortp21@gmail.com>
+!
+program main
+ implicit none
+ integer, parameter :: dp = kind(0.0d0)
+ real(kind=dp), allocatable :: delta(:,:)
+ real(kind=dp), allocatable, target :: a(:,:)
+ real(kind=dp), pointer :: aptr(:,:)
+
+ allocate(a(3,3))
+ aptr => a
+
+ call foo
+ if (.not. associated (aptr, a)) call abort () ! reallocated to same size - remains associated
+ call bar
+ if (.not. associated (aptr, a)) call abort () ! reallocated to smaller size - remains associated
+ call foobar
+ if (associated (aptr, a)) call abort () ! reallocated to larger size - disassociates
+
+ call pr48746
+contains
+!
+! Original reduced version from comment #2
+ subroutine foo
+ implicit none
+ real(kind=dp), allocatable :: b(:,:)
+
+ allocate(b(3,3))
+ allocate(delta(3,3))
+
+ a = reshape ([1d0, 2d0, 3d0, 4d0, 5d0, 6d0, 7d0, 8d0, 9d0], [3,3])
+ b = reshape ([1d0, 0d0, 0d0, 0d0, 1d0, 0d0, 0d0, 0d0, 1d0], [3,3])
+
+ a = matmul( matmul( a, b ), b )
+ delta = (a - reshape ([1d0, 2d0, 3d0, 4d0, 5d0, 6d0, 7d0, 8d0, 9d0], [3,3]))**2
+ if (any (delta > 1d-12)) call abort
+ if (any (lbound (a) .ne. [1, 1])) call abort
+ end subroutine
+!
+! Check that all is well when the shape of 'a' changes.
+ subroutine bar
+ implicit none
+ real(kind=dp), allocatable :: a(:,:)
+ real(kind=dp), allocatable :: b(:,:)
+
+ b = reshape ([1d0, 1d0, 1d0], [3,1])
+ a = reshape ([1d0, 2d0, 3d0, 4d0, 5d0, 6d0, 7d0, 8d0, 9d0], [3,3])
+
+ a = matmul( a, matmul( a, b ) )
+
+ delta = (a - reshape ([198d0, 243d0, 288d0], [3,1]))**2
+ if (any (delta > 1d-12)) call abort
+ if (any (lbound (a) .ne. [1, 1])) call abort
+ end subroutine
+ subroutine foobar
+ integer :: i
+ a = reshape ([(real(i, dp), i = 1, 100)],[10,10])
+ end subroutine
+ subroutine pr48746
+! This is a further wrinkle on the original problem and came about
+! because the dtype field of the result argument, passed to matmul,
+! was not being set. This is needed by matmul for the rank.
+!
+! Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
+!
+ implicit none
+ integer, parameter :: m=10, n=12, count=4
+ real :: optmatmul(m, n)
+ real :: a(m, count), b(count, n), c(m, n)
+ real, dimension(:,:), allocatable :: tmp
+ call random_number(a)
+ call random_number(b)
+ tmp = matmul(a,b)
+ if (any (lbound (tmp) .ne. [1,1])) call abort
+ if (any (ubound (tmp) .ne. [10,12])) call abort
+ end subroutine
+end program main
+
diff --git a/gcc/testsuite/gfortran.dg/round_3.f08 b/gcc/testsuite/gfortran.dg/round_3.f08
new file mode 100644
index 00000000000..8b03ce562f1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/round_3.f08
@@ -0,0 +1,99 @@
+! { dg-do run }
+! PR48615 Invalid UP/DOWN rounding with E and ES descriptors
+! Test case provided by Thomas Henlich.
+program pr48615
+ call checkfmt("(RU,F17.0)", 2.5, " 3.")
+ call checkfmt("(RU,-1P,F17.1)", 2.5, " 0.3")
+ call checkfmt("(RU,E17.1)", 2.5, " 0.3E+01")
+ call checkfmt("(RU,1P,E17.0)", 2.5, " 3.E+00")
+ call checkfmt("(RU,ES17.0)", 2.5, " 3.E+00")
+ call checkfmt("(RU,EN17.0)", 2.5, " 3.E+00")
+ call checkfmt("(RU,F2.0)", 2.0, "2.")
+ call checkfmt("(RU,F6.4)", 2.0, "2.0000")
+ call checkfmt("(RU,1P,E6.0E2)", 2.0, "2.E+00")
+ call checkfmt("(RU,1P,E7.1E2)", 2.5, "2.5E+00")
+ call checkfmt("(RU,1P,E10.4E2)", 2.5, "2.5000E+00")
+ call checkfmt("(RU,1P,G6.0E2)", 2.0, "2.E+00")
+ call checkfmt("(RU,1P,G10.4E2)", 2.3456e5, "2.3456E+05")
+
+ call checkfmt("(RU,F2.0)", 0.09, "1.") ! 0.
+ call checkfmt("(RD,F3.0)", -0.09, "-1.") ! -0.
+ call checkfmt("(RU,F2.0)", 2.0, "2.") ! 3.
+ call checkfmt("(RD,F3.0)", -2.0, "-2.") ! -3.
+ call checkfmt("(RU,F6.4)", 2.0, "2.0000") ! 2.0001
+ call checkfmt("(RD,F7.4)", -2.0, "-2.0000") ! -2.0001
+ call checkfmt("(RU,1P,E6.0E2)", 2.0, "2.E+00") ! 3.E+00
+ call checkfmt("(RD,1P,E7.0E2)", -2.0, "-2.E+00") ! -3.E+00
+ call checkfmt("(RU,1P,E7.1E2)", 2.5, "2.5E+00") ! 2.6E+00
+ call checkfmt("(RD,1P,E8.1E2)", -2.5, "-2.5E+00") ! -2.6E+00
+ call checkfmt("(RU,1P,E10.4E2)", 2.5, "2.5000E+00") ! 2.5001E+00
+ call checkfmt("(RD,1P,E11.4E2)", -2.5, "-2.5000E+00") ! -2.5001E+00
+ call checkfmt("(RU,1P,G6.0E2)", 2.0, "2.E+00") ! 3.E+00
+ call checkfmt("(RD,1P,G7.0E2)", -2.0, "-2.E+00") ! -3.E+00
+ call checkfmt("(RU,1P,G10.4E2)", 2.3456e5, "2.3456E+05") ! 2.3457E+05
+ call checkfmt("(RD,1P,G11.4E2)", -2.3456e5, "-2.3456E+05") ! -2.3457E+05
+
+ call checkfmt("(RD,F17.0)", 2.5, " 2.")
+ call checkfmt("(RD,-1P,F17.1)", 2.5, " 0.2")
+ call checkfmt("(RD,E17.1)", 2.5, " 0.2E+01")
+ call checkfmt("(RD,1P,E17.0)", 2.5, " 2.E+00")
+ call checkfmt("(RD,ES17.0)", 2.5, " 2.E+00")
+ call checkfmt("(RD,EN17.0)", 2.5, " 2.E+00")
+
+ call checkfmt("(RC,F17.0)", 2.5, " 3.")
+ call checkfmt("(RC,-1P,F17.1)", 2.5, " 0.3")
+ call checkfmt("(RC,E17.1)", 2.5, " 0.3E+01")
+ call checkfmt("(RC,1P,E17.0)", 2.5, " 3.E+00")
+ call checkfmt("(RC,ES17.0)", 2.5, " 3.E+00")
+ call checkfmt("(RC,EN17.0)", 2.5, " 3.E+00")
+
+ call checkfmt("(RN,F17.0)", 2.5, " 2.")
+ call checkfmt("(RN,-1P,F17.1)", 2.5, " 0.2")
+ call checkfmt("(RN,E17.1)", 2.5, " 0.2E+01")
+ call checkfmt("(RN,1P,E17.0)", 2.5, " 2.E+00")
+ call checkfmt("(RN,ES17.0)", 2.5, " 2.E+00")
+ call checkfmt("(RN,EN17.0)", 2.5, " 2.E+00")
+
+ call checkfmt("(RZ,F17.0)", 2.5, " 2.")
+ call checkfmt("(RZ,-1P,F17.1)", 2.5, " 0.2")
+ call checkfmt("(RZ,E17.1)", 2.5, " 0.2E+01")
+ call checkfmt("(RZ,1P,E17.0)", 2.5, " 2.E+00")
+ call checkfmt("(RZ,ES17.0)", 2.5, " 2.E+00")
+ call checkfmt("(RZ,EN17.0)", 2.5, " 2.E+00")
+
+ call checkfmt("(RZ,F17.0)", -2.5, " -2.")
+ call checkfmt("(RZ,-1P,F17.1)", -2.5, " -0.2")
+ call checkfmt("(RZ,E17.1)", -2.5, " -0.2E+01")
+ call checkfmt("(RZ,1P,E17.0)", -2.5, " -2.E+00")
+ call checkfmt("(RZ,ES17.0)", -2.5, " -2.E+00")
+ call checkfmt("(RZ,EN17.0)", -2.5, " -2.E+00")
+
+ call checkfmt("(RN,F17.0)", -2.5, " -2.")
+ call checkfmt("(RN,-1P,F17.1)", -2.5, " -0.2")
+ call checkfmt("(RN,E17.1)", -2.5, " -0.2E+01")
+ call checkfmt("(RN,1P,E17.0)", -2.5, " -2.E+00")
+ call checkfmt("(RN,ES17.0)", -2.5, " -2.E+00")
+ call checkfmt("(RN,EN17.0)", -2.5, " -2.E+00")
+
+ call checkfmt("(RC,F17.0)", -2.5, " -3.")
+ call checkfmt("(RC,-1P,F17.1)", -2.5, " -0.3")
+ call checkfmt("(RC,E17.1)", -2.5, " -0.3E+01")
+ call checkfmt("(RC,1P,E17.0)", -2.5, " -3.E+00")
+ call checkfmt("(RC,ES17.0)", -2.5, " -3.E+00")
+ call checkfmt("(RC,EN17.0)", -2.5, " -3.E+00")
+
+ call checkfmt("(RU,E17.1)", nearest(2.0, 1.0), " 0.3E+01")
+ call checkfmt("(RD,E17.1)", nearest(3.0, -1.0), " 0.2E+01")
+
+contains
+ subroutine checkfmt(fmt, x, cmp)
+ character(len=*), intent(in) :: fmt
+ real, intent(in) :: x
+ character(len=*), intent(in) :: cmp
+ character(len=20) :: s
+
+ write(s, fmt) x
+ if (s /= cmp) call abort
+ !if (s /= cmp) print "(a,1x,a,' expected: ',1x)", fmt, s, cmp
+ end subroutine
+end program
diff --git a/gcc/testsuite/gfortran.dg/scratch_1.f90 b/gcc/testsuite/gfortran.dg/scratch_1.f90
new file mode 100644
index 00000000000..1547bfe8c5b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/scratch_1.f90
@@ -0,0 +1,8 @@
+! { dg-do run }
+! Check that we can open more than 26 scratch files concurrently
+ integer :: i
+ do i = 1, 30
+ print *, i
+ open(100+i,status="scratch")
+ end do
+end
diff --git a/gcc/testsuite/gfortran.dg/trim_optimize_5.f90 b/gcc/testsuite/gfortran.dg/trim_optimize_5.f90
new file mode 100644
index 00000000000..70a85d601d4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/trim_optimize_5.f90
@@ -0,0 +1,21 @@
+! { dg-do run }
+! { dg-options "-O -fdump-tree-original" }
+! PR 47065 - replace trim with substring expressions even with references.
+program main
+ use foo
+ implicit none
+ type t
+ character(len=2) :: x
+ end type t
+ type(t) :: a
+ character(len=3) :: b
+ character(len=10) :: line
+ a%x = 'a'
+ write(unit=line,fmt='(A,A)') trim(a%x),"X"
+ if (line /= 'aX ') call abort
+ b = 'ab'
+ write (unit=line,fmt='(A,A)') trim(b),"Y"
+ if (line /= 'abY ') call abort
+end program main
+! { dg-final { scan-tree-dump-times "string_len_trim" 2 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/trim_optimize_6.f90 b/gcc/testsuite/gfortran.dg/trim_optimize_6.f90
new file mode 100644
index 00000000000..2303bb4ef78
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/trim_optimize_6.f90
@@ -0,0 +1,25 @@
+! { dg-do run }
+! PR 47065 - make sure that impure functions are not evaluated twice when
+! replacing calls to trim with expression(1:len_trim)
+module foo
+ implicit none
+contains
+ function f()
+ integer :: f
+ integer :: s=0
+ s = s + 1
+ f = s
+ end function f
+end module foo
+
+program main
+ use foo
+ implicit none
+ character(len=10) :: line
+ character(len=4) :: b(2)
+ b(1) = 'a'
+ b(2) = 'bc'
+ write(unit=line,fmt='(A,A)') trim(b(f())), "X"
+ if (line /= "aX ") call abort
+ if (f() .ne. 2) call abort
+end program main
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_22.f90 b/gcc/testsuite/gfortran.dg/typebound_proc_22.f90
new file mode 100644
index 00000000000..f7691c5f283
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_22.f90
@@ -0,0 +1,49 @@
+! { dg-do compile }
+!
+! PR fortran/48810
+!
+! Contributed by Andrew Baldwin
+!
+ module qtest
+ type foobar
+ integer :: x
+ contains
+ private
+ procedure :: gimmex
+ generic, public :: getx => gimmex
+ end type foobar
+ contains
+ function gimmex(foo)
+ class (foobar) :: foo
+ integer :: gimmex
+ gimmex = foo%x
+ end function gimmex
+ end module qtest
+
+ module qtestPriv
+ type foobarPriv
+ integer :: x
+ contains
+ private
+ procedure :: gimmexPriv
+ generic, private :: getxPriv => gimmexPriv
+ end type foobarPriv
+ contains
+ function gimmexPriv(foo)
+ class (foobarPriv) :: foo
+ integer :: gimmex
+ gimmex = foo%x
+ end function gimmexPriv
+ end module qtestPriv
+
+ program quicktest
+ use qtest
+ use qtestPriv
+ type (foobar) :: foo
+ type (foobarPriv) :: fooPriv
+ integer :: bar
+ bar = foo%getx() ! OK
+ bar = fooPriv%getxPriv() ! { dg-error " is PRIVATE " }
+ end program quicktest
+
+! { dg-final { cleanup-modules "qtest qtestpriv" } }
diff --git a/gcc/testsuite/gfortran.dg/use_rename_1.f90 b/gcc/testsuite/gfortran.dg/use_rename_1.f90
index 01645f678b6..2e9a3c8652a 100644
--- a/gcc/testsuite/gfortran.dg/use_rename_1.f90
+++ b/gcc/testsuite/gfortran.dg/use_rename_1.f90
@@ -1,6 +1,6 @@
! { dg-do compile }
! Tests the fix for PR34854, in which the second of the two subroutines would fail
-! because the the type declaration of nmoltype_phase would incorrectly conflict
+! because the type declaration of nmoltype_phase would incorrectly conflict
! with the type given to the module variable of the same name.
!
! Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
diff --git a/gcc/testsuite/gfortran.dg/whole_file_33.f90 b/gcc/testsuite/gfortran.dg/whole_file_33.f90
new file mode 100644
index 00000000000..31faeaa0992
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/whole_file_33.f90
@@ -0,0 +1,50 @@
+! { dg-do compile }
+!
+! PR fortran/48588
+!
+! Contributed by Andres Legarra.
+!
+
+MODULE LA_PRECISION
+IMPLICIT NONE
+INTEGER, PARAMETER :: dp = KIND(1.0D0)
+END MODULE LA_PRECISION
+
+module lapack90
+INTERFACE
+ SUBROUTINE DGESV_F90( A, B, IPIV, INFO )
+ USE la_precision, ONLY: wp => dp
+ IMPLICIT NONE
+ INTEGER, INTENT(OUT), OPTIONAL :: INFO
+ INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
+ REAL(WP), INTENT(IN OUT) :: A(:,:), B(:,:)
+ END SUBROUTINE DGESV_F90
+END INTERFACE
+end module
+
+SUBROUTINE DGESV_F90( A, B, IPIV, INFO )
+ USE la_precision, ONLY: wp => dp
+ IMPLICIT NONE
+ INTEGER, INTENT(OUT), OPTIONAL :: INFO
+ INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
+ REAL(WP), INTENT(IN OUT) :: A(:,:), B(:,:)
+END SUBROUTINE DGESV_F90
+
+MODULE DENSEOP
+ USE LAPACK90
+ implicit none
+ integer, parameter :: r8 = SELECTED_REAL_KIND( 15, 307 )
+ real(r8)::denseop_tol=1.d-50
+
+ CONTAINS
+
+ SUBROUTINE GEINV8 (x)
+ real(r8)::x(:,:)
+ real(r8),allocatable::x_o(:,:)
+ allocate(x_o(size(x,1),size(x,1)))
+ CALL dgesv_f90(x,x_o)
+ x=x_o
+ END SUBROUTINE GEINV8
+END MODULE DENSEOP
+
+! { dg-final { cleanup-modules "la_precision lapack90 denseop" } }
diff --git a/gcc/testsuite/gfortran.dg/whole_file_34.f90 b/gcc/testsuite/gfortran.dg/whole_file_34.f90
new file mode 100644
index 00000000000..9b421e004ae
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/whole_file_34.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+!
+! PR fortran/48788
+!
+! Contributed by Zdenek Sojka
+!
+function foo ()
+end function foo
+ character(4), external :: foo ! { dg-error "Return type mismatch of function" }
+ character(4) :: x
+ x = foo ()
+END
diff --git a/gcc/testsuite/gnat.dg/aggr17.adb b/gcc/testsuite/gnat.dg/aggr17.adb
new file mode 100644
index 00000000000..3ba41985f72
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/aggr17.adb
@@ -0,0 +1,28 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+procedure Aggr17 is
+
+ type Enum is (A, B);
+
+ type Rec (D : Enum := Enum'First) is record
+ case D is
+ when A => X : Integer;
+ when B => null;
+ end case;
+ end record;
+ for Rec'Size use 128;
+ pragma Volatile (Rec);
+
+ type Config_T (D : Enum := Enum'First) is record
+ N : Natural;
+ R : Rec (D);
+ end record;
+
+ C : constant Config_T := (D => A, N => 1, R => (D => A, X => 0));
+
+ type Arr is array (Natural range 1 .. C.N) of Boolean;
+
+begin
+ null;
+end;
diff --git a/gcc/testsuite/gnat.dg/aggr18.adb b/gcc/testsuite/gnat.dg/aggr18.adb
new file mode 100644
index 00000000000..511add8a17d
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/aggr18.adb
@@ -0,0 +1,28 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+procedure Aggr18 is
+
+ type Enum is (A, B);
+
+ type Rec (D : Enum := Enum'First) is record
+ case D is
+ when A => X : Integer;
+ when B => null;
+ end case;
+ end record;
+ for Rec'Size use 128;
+ pragma Volatile (Rec);
+
+ type Config_T (D : Enum := Enum'First) is record
+ N : Natural;
+ R : Rec (D);
+ end record;
+
+ C : Config_T := (D => A, N => 1, R => (D => A, X => 0));
+
+ type Arr is array (Natural range 1 .. C.N) of Boolean;
+
+begin
+ null;
+end;
diff --git a/gcc/testsuite/gnat.dg/array14.adb b/gcc/testsuite/gnat.dg/array14.adb
new file mode 100644
index 00000000000..aed29015a9a
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array14.adb
@@ -0,0 +1,35 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+with Array14_Pkg; use Array14_Pkg;
+
+package body Array14 is
+
+ package Nested is
+
+ Length : constant SSE.Storage_Count := Length2;
+
+ subtype Encoded_Index_Type is SSE.Storage_Count range 1 .. Length;
+ subtype Encoded_Type is SSE.Storage_Array (Encoded_Index_Type'Range);
+
+ procedure Encode (Input : in Integer; Output : out Encoded_Type);
+
+ end;
+
+ package body Nested is
+
+ procedure Encode (Input : in Integer; Output : out Encoded_Type) is
+ begin
+ Encode2 (Input, Output);
+ end;
+
+ end;
+
+ procedure Init is
+ O : Nested.Encoded_Type;
+ for O'Alignment use 4;
+ begin
+ null;
+ end;
+
+end Array14;
diff --git a/gcc/testsuite/gnat.dg/array14.ads b/gcc/testsuite/gnat.dg/array14.ads
new file mode 100644
index 00000000000..9d38eeb8895
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array14.ads
@@ -0,0 +1,5 @@
+package Array14 is
+
+ procedure Init;
+
+end Array14;
diff --git a/gcc/testsuite/gnat.dg/array14_pkg.ads b/gcc/testsuite/gnat.dg/array14_pkg.ads
new file mode 100644
index 00000000000..804090586e3
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array14_pkg.ads
@@ -0,0 +1,16 @@
+with System.Storage_Elements;
+
+package Array14_Pkg is
+
+ package SSE renames System.Storage_Elements;
+
+ function Parity_Byte_Count return SSE.Storage_Count;
+
+ Length2 : constant SSE.Storage_Count := Parity_Byte_Count;
+
+ subtype Encoded_Index_Type2 is SSE.Storage_Count range 1 .. Length2;
+ subtype Encoded_Type2 is SSE.Storage_Array (Encoded_Index_Type2'Range);
+
+ procedure Encode2 (Input : in Integer; Output : out Encoded_Type2);
+
+end Array14_Pkg;
diff --git a/gcc/testsuite/gnat.dg/array15.adb b/gcc/testsuite/gnat.dg/array15.adb
new file mode 100644
index 00000000000..eb51f37c5ae
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array15.adb
@@ -0,0 +1,24 @@
+-- { dg-do compile }
+-- { dg-options "-O -gnatws" }
+
+package body Array15 is
+
+ type Arr is array (Natural range <>) of Integer;
+
+ Table : Arr (1 .. 4);
+
+ N : Natural := 1;
+
+ procedure Zero is
+ begin
+ N := 0;
+ end;
+
+ function F (I : Integer) return Integer is
+ A1 : Arr := (1 => I);
+ A2 : Arr := Table (1 .. N) & A1;
+ begin
+ return A2 (I);
+ end;
+
+end Array15;
diff --git a/gcc/testsuite/gnat.dg/array15.ads b/gcc/testsuite/gnat.dg/array15.ads
new file mode 100644
index 00000000000..c5c2087a62f
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array15.ads
@@ -0,0 +1,5 @@
+package Array15 is
+
+ function F (I : Integer) return Integer;
+
+end Array15;
diff --git a/gcc/testsuite/gnat.dg/array16.adb b/gcc/testsuite/gnat.dg/array16.adb
new file mode 100644
index 00000000000..18abf8f8199
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array16.adb
@@ -0,0 +1,22 @@
+package body Array16 is
+
+ function F1 (A : access My_T1) return My_T1 is
+ begin
+ return A.all;
+ end;
+
+ function F2 (A : access My_T2) return My_T2 is
+ begin
+ return A.all;
+ end;
+
+ procedure Proc (A : access My_T1; B : access My_T2) is
+ L1 : My_T1 := F1(A);
+ L2 : My_T2 := F2(B);
+ begin
+ if L1.D = 0 and then L2(1) = 0 then
+ raise Program_Error;
+ end if;
+ end;
+
+end Array16;
diff --git a/gcc/testsuite/gnat.dg/array16.ads b/gcc/testsuite/gnat.dg/array16.ads
new file mode 100644
index 00000000000..69452c98f3a
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array16.ads
@@ -0,0 +1,31 @@
+-- { dg-do compile }
+-- { dg-options "-O -gnatn -fdump-tree-optimized" }
+
+with Array16_Pkg;
+
+package Array16 is
+
+ type T1 (D : Integer) is record
+ case D is
+ when 1 => I : Integer;
+ when others => null;
+ end case;
+ end record;
+
+ type Arr is array (Integer range <>) of Integer;
+
+ type My_T1 is new T1 (Array16_Pkg.N);
+ type My_T2 is new Arr (1 .. Integer'Min (2, Array16_Pkg.N));
+
+ function F1 (A : access My_T1) return My_T1;
+ pragma Inline (F1);
+
+ function F2 (A : access My_T2) return My_T2;
+ pragma Inline (F2);
+
+ procedure Proc (A : access My_T1; B : access My_T2);
+
+end Array16;
+
+-- { dg-final { scan-tree-dump-not "secondary_stack" "optimized" } }
+-- { dg-final { cleanup-tree-dump "optimized" } }
diff --git a/gcc/testsuite/gnat.dg/array16_pkg.ads b/gcc/testsuite/gnat.dg/array16_pkg.ads
new file mode 100644
index 00000000000..93447978cd4
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array16_pkg.ads
@@ -0,0 +1,5 @@
+package Array16_Pkg is
+
+ function N return Integer;
+
+end Array16_Pkg;
diff --git a/gcc/testsuite/gnat.dg/debug2.adb b/gcc/testsuite/gnat.dg/debug2.adb
new file mode 100644
index 00000000000..f962243d6c3
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/debug2.adb
@@ -0,0 +1,40 @@
+-- { dg-do compile }
+-- { dg-options "-g" }
+
+with Debug2_Pkg; use Debug2_Pkg;
+
+package body Debug2 is
+
+ procedure Proc is
+
+ function F return String_List_Ptr is
+ begin
+ return new String_List'(Singleton);
+ end;
+
+ A : String_List_Ptr := F;
+
+ begin
+ null;
+ end;
+
+ function Get return Integer is
+ begin
+ return 0;
+ end;
+
+ Failed : exception;
+
+ A: String_Ptr;
+
+begin
+
+ declare
+ Server_Args : Integer;
+ begin
+ Server_Args := Get;
+ exception
+ when X : Failed => A := To_Heap;
+ end;
+
+end Debug2;
diff --git a/gcc/testsuite/gnat.dg/debug2.ads b/gcc/testsuite/gnat.dg/debug2.ads
new file mode 100644
index 00000000000..dbdf5346dec
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/debug2.ads
@@ -0,0 +1,5 @@
+package Debug2 is
+
+ procedure Proc;
+
+end Debug2;
diff --git a/gcc/testsuite/gnat.dg/debug2_pkg.ads b/gcc/testsuite/gnat.dg/debug2_pkg.ads
new file mode 100644
index 00000000000..fc68249b821
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/debug2_pkg.ads
@@ -0,0 +1,19 @@
+package Debug2_Pkg is
+
+ type String_Ptr is access all String;
+
+ function To_Heap return String_Ptr;
+
+ type String_List(Chars_Length: Positive) is private;
+
+ type String_List_Ptr is access constant String_List;
+
+ function Singleton return String_List;
+
+private
+
+ type String_List(Chars_Length: Positive) is record
+ Chars: String(1..Chars_Length);
+ end record;
+
+end Debug2_Pkg;
diff --git a/gcc/testsuite/gnat.dg/debug3.adb b/gcc/testsuite/gnat.dg/debug3.adb
new file mode 100644
index 00000000000..6ed6b1a3d5a
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/debug3.adb
@@ -0,0 +1,31 @@
+-- { dg-do compile }
+-- { dg-options "-g" }
+
+with Ada.Unchecked_Conversion;
+with System;
+
+package body Debug3 is
+
+ type Rec is record
+ I : Integer;
+ end record;
+ for Rec'Alignment use 1;
+
+ type Ptr is access Rec;
+
+ function To_Ptr is new Ada.Unchecked_Conversion(System.Address, Ptr);
+
+ procedure Proc is
+
+ function Get (S1 : String) return Ptr is
+ begin
+ return To_Ptr (S1'Address);
+ end;
+
+ M : Ptr;
+
+ begin
+ M := Get ("");
+ end;
+
+end Debug3;
diff --git a/gcc/testsuite/gnat.dg/debug3.ads b/gcc/testsuite/gnat.dg/debug3.ads
new file mode 100644
index 00000000000..89d57cb62f1
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/debug3.ads
@@ -0,0 +1,5 @@
+package Debug3 is
+
+ procedure Proc;
+
+end Debug3;
diff --git a/gcc/testsuite/gnat.dg/derived_type2.adb b/gcc/testsuite/gnat.dg/derived_type2.adb
new file mode 100644
index 00000000000..607eb0b22c4
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/derived_type2.adb
@@ -0,0 +1,40 @@
+-- { dg-do run }
+-- { dg-options "-gnatws" }
+
+procedure Derived_Type2 is
+
+ package Pkg is
+
+ type Parent (B : Boolean := True) is record
+ case B is
+ when True => S : String (1 .. 5);
+ when False => F : Float;
+ end case;
+ end record;
+
+ function Create (X : Parent) return Parent;
+
+ end Pkg;
+
+ package body Pkg is
+
+ function Create (X : Parent) return Parent is
+ begin
+ return (True, "12345");
+ end;
+
+ end Pkg;
+
+ use Pkg;
+
+ type T is new Parent (True);
+
+ X : T;
+
+begin
+
+ if Create (X).B /= True then
+ raise Program_Error;
+ end if;
+
+end;
diff --git a/gcc/testsuite/gnat.dg/discr26.adb b/gcc/testsuite/gnat.dg/discr26.adb
new file mode 100644
index 00000000000..2d498889bf8
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr26.adb
@@ -0,0 +1,19 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+package body Discr26 is
+
+ function F1 return My_T1 is
+ R: My_T1;
+ begin
+ return R;
+ end;
+
+ procedure Proc is
+ begin
+ if F1.D = 0 then
+ raise Program_Error;
+ end if;
+ end;
+
+end Discr26;
diff --git a/gcc/testsuite/gnat.dg/discr26.ads b/gcc/testsuite/gnat.dg/discr26.ads
new file mode 100644
index 00000000000..5a428f2bfed
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr26.ads
@@ -0,0 +1,16 @@
+with Discr26_Pkg;
+
+package Discr26 is
+
+ type T1 (D : Integer) is record
+ case D is
+ when 1 => I : Integer;
+ when others => null;
+ end case;
+ end record;
+
+ type My_T1 is new T1 (Discr26_Pkg.N);
+
+ procedure Proc;
+
+end Discr26;
diff --git a/gcc/testsuite/gnat.dg/discr26_pkg.ads b/gcc/testsuite/gnat.dg/discr26_pkg.ads
new file mode 100644
index 00000000000..ca775eb5d61
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr26_pkg.ads
@@ -0,0 +1,5 @@
+package Discr26_Pkg is
+
+ function N return Integer;
+
+end Discr26_Pkg;
diff --git a/gcc/testsuite/gnat.dg/discr27.adb b/gcc/testsuite/gnat.dg/discr27.adb
new file mode 100644
index 00000000000..875fe435b66
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr27.adb
@@ -0,0 +1,33 @@
+-- { dg-do compile }
+
+package body Discr27 is
+
+ subtype Index is Positive range 1..4096;
+
+ function F return String is
+ S : String(1..1) := (others =>'w');
+ begin
+ return S;
+ end;
+
+ type Enum is (One, Two);
+
+ type Rec (D : Enum := One; Len : Index := 1) is record
+ case D is
+ when One => I : Integer;
+ when Two => A : String(1..Len);
+ end case;
+ end record;
+
+ procedure Nothing is
+ M : constant String := F;
+ C : constant Rec := (Two, M'Length, M);
+ begin
+ null;
+ end;
+
+ procedure Proc is begin
+ null;
+ end;
+
+end Discr27;
diff --git a/gcc/testsuite/gnat.dg/discr27.ads b/gcc/testsuite/gnat.dg/discr27.ads
new file mode 100644
index 00000000000..247134a9916
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr27.ads
@@ -0,0 +1,5 @@
+package Discr27 is
+
+ procedure Proc;
+
+end Discr27;
diff --git a/gcc/testsuite/gnat.dg/discr28.adb b/gcc/testsuite/gnat.dg/discr28.adb
new file mode 100644
index 00000000000..97ca8cd68b7
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr28.adb
@@ -0,0 +1,25 @@
+-- { dg-do compile }
+
+package body Discr28 is
+
+ procedure Dummy (E : Rec) is
+ begin
+ null;
+ end;
+
+ function F return Rec is
+ begin
+ return Default_Rec;
+ end;
+
+ procedure Proc1 is
+ begin
+ Dummy (F);
+ end;
+
+ procedure Proc2 is
+ begin
+ Dummy (F);
+ end;
+
+end Discr28;
diff --git a/gcc/testsuite/gnat.dg/discr28.ads b/gcc/testsuite/gnat.dg/discr28.ads
new file mode 100644
index 00000000000..3288b52bfcb
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr28.ads
@@ -0,0 +1,19 @@
+with Discr28_Pkg;
+
+package Discr28 is
+
+ type Enum is (One, Two);
+
+ type Rec (D : Enum := One) is record
+ case D is
+ when One => null;
+ when Two => S : String (1 .. Discr28_Pkg.N);
+ end case;
+ end record;
+
+ Default_Rec : constant Rec := (D => One);
+
+ procedure Proc1;
+ procedure Proc2;
+
+end Discr28;
diff --git a/gcc/testsuite/gnat.dg/discr28_pkg.ads b/gcc/testsuite/gnat.dg/discr28_pkg.ads
new file mode 100644
index 00000000000..f6be834eedc
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr28_pkg.ads
@@ -0,0 +1,5 @@
+package Discr28_Pkg is
+
+ function N return Natural;
+
+end Discr28_Pkg;
diff --git a/gcc/testsuite/gnat.dg/discr29.adb b/gcc/testsuite/gnat.dg/discr29.adb
new file mode 100644
index 00000000000..56047c9cf6e
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr29.adb
@@ -0,0 +1,8 @@
+package body Discr29 is
+
+ procedure Proc (R : out Rec3) is
+ begin
+ R := (False, Tmp);
+ end;
+
+end Discr29;
diff --git a/gcc/testsuite/gnat.dg/discr29.ads b/gcc/testsuite/gnat.dg/discr29.ads
new file mode 100644
index 00000000000..a205bc1e0dd
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr29.ads
@@ -0,0 +1,27 @@
+-- { dg-do compile }
+
+package Discr29 is
+
+ type Rec1 is record
+ I1 : Integer;
+ I2 : Integer;
+ I3 : Integer;
+ end record;
+
+ type Rec2 is tagged record
+ I1 : Integer;
+ I2 : Integer;
+ end record;
+
+ type Rec3 (D : Boolean) is record
+ case D is
+ when True => A : Rec1;
+ when False => B : Rec2;
+ end case;
+ end record;
+
+ procedure Proc (R : out Rec3);
+
+ Tmp : Rec2;
+
+end Discr29;
diff --git a/gcc/testsuite/gnat.dg/discr30.adb b/gcc/testsuite/gnat.dg/discr30.adb
new file mode 100644
index 00000000000..b3bf10013b6
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr30.adb
@@ -0,0 +1,50 @@
+-- PR ada/48844
+-- Reported by Georg Bauhaus <bauhaus@futureapps.de> */
+
+-- { dg-do compile }
+
+procedure Discr30 is
+
+ generic
+ type Source is private;
+ type Target is private;
+ function Conversion (S : Source) return Target;
+
+ function Conversion (S : Source) return Target is
+ type Source_Wrapper is tagged record
+ S : Source;
+ end record;
+ type Target_Wrapper is tagged record
+ T : Target;
+ end record;
+
+ type Selector is (Source_Field, Target_Field);
+ type Magic (Sel : Selector := Target_Field) is record
+ case Sel is
+ when Source_Field => S : Source_Wrapper;
+ when Target_Field => T : Target_Wrapper;
+ end case;
+ end record;
+
+ M : Magic;
+
+ function Convert (T : Target_Wrapper) return Target is
+ begin
+ M := (Sel => Source_Field, S => (S => S));
+ return T.T;
+ end Convert;
+
+ begin
+ return Convert (M.T);
+ end Conversion;
+
+ type Integer_Access is access all Integer;
+
+ I : aliased Integer;
+ I_Access : Integer_Access := I'Access;
+
+ function Convert is new Conversion (Integer_Access, Integer);
+
+begin
+ I := Convert (I_Access);
+end;
diff --git a/gcc/testsuite/gnat.dg/limited_with2.adb b/gcc/testsuite/gnat.dg/limited_with2.adb
new file mode 100644
index 00000000000..b9c5417a627
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/limited_with2.adb
@@ -0,0 +1,12 @@
+-- { dg-do compile }
+
+with Limited_With2_Pkg2;
+
+package body Limited_With2 is
+
+ function Func (Val : Rec1) return Limited_With2_Pkg1.Rec2 is
+ begin
+ return Val.F;
+ end;
+
+end Limited_With2;
diff --git a/gcc/testsuite/gnat.dg/limited_with2.ads b/gcc/testsuite/gnat.dg/limited_with2.ads
new file mode 100644
index 00000000000..4f076d4b8ec
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/limited_with2.ads
@@ -0,0 +1,11 @@
+with Limited_With2_Pkg1;
+
+package Limited_With2 is
+
+ type Rec1 is record
+ F : Limited_With2_Pkg1.Rec2;
+ end record;
+
+ function Func (Val : Rec1) return Limited_With2_Pkg1.Rec2;
+
+end Limited_With2;
diff --git a/gcc/testsuite/gnat.dg/limited_with2_pkg1.ads b/gcc/testsuite/gnat.dg/limited_with2_pkg1.ads
new file mode 100644
index 00000000000..d821fa3a6d6
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/limited_with2_pkg1.ads
@@ -0,0 +1,9 @@
+limited with Limited_With2_Pkg2;
+
+package Limited_With2_Pkg1 is
+
+ type Rec2 is record
+ F : access Limited_With2_Pkg2.Rec3;
+ end record;
+
+end Limited_With2_Pkg1;
diff --git a/gcc/testsuite/gnat.dg/limited_with2_pkg2.ads b/gcc/testsuite/gnat.dg/limited_with2_pkg2.ads
new file mode 100644
index 00000000000..c2d1012e3ab
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/limited_with2_pkg2.ads
@@ -0,0 +1,9 @@
+with Limited_With2;
+
+package Limited_With2_Pkg2 is
+
+ type Rec3 is record
+ F : Limited_With2.Rec1;
+ end record;
+
+end Limited_With2_Pkg2;
diff --git a/gcc/testsuite/gnat.dg/opt15.adb b/gcc/testsuite/gnat.dg/opt15.adb
new file mode 100644
index 00000000000..eadc25d7023
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/opt15.adb
@@ -0,0 +1,12 @@
+-- { dg-do compile }
+-- { dg-options "-O -gnatn -fdump-tree-optimized" }
+
+with Opt15_Pkg; use Opt15_Pkg;
+
+procedure Opt15 is
+begin
+ Trace_Inlined;
+end;
+
+-- { dg-final { scan-tree-dump-not "trace_inlined" "optimized" } }
+-- { dg-final { cleanup-tree-dump "optimized" } }
diff --git a/gcc/testsuite/gnat.dg/opt15_pkg.adb b/gcc/testsuite/gnat.dg/opt15_pkg.adb
new file mode 100644
index 00000000000..ebb1d263e81
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/opt15_pkg.adb
@@ -0,0 +1,13 @@
+package body Opt15_Pkg is
+
+ procedure Trace_Non_Inlined is
+ begin
+ raise Program_Error;
+ end;
+
+ procedure Trace_Inlined is
+ begin
+ Trace_Non_Inlined;
+ end;
+
+end Opt15_Pkg;
diff --git a/gcc/testsuite/gnat.dg/opt15_pkg.ads b/gcc/testsuite/gnat.dg/opt15_pkg.ads
new file mode 100644
index 00000000000..f1d0302033d
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/opt15_pkg.ads
@@ -0,0 +1,6 @@
+package Opt15_Pkg is
+
+ procedure Trace_Inlined;
+ pragma Inline (Trace_Inlined);
+
+end Opt15_Pkg;
diff --git a/gcc/testsuite/gnat.dg/opt16.adb b/gcc/testsuite/gnat.dg/opt16.adb
new file mode 100644
index 00000000000..d8e93bda2a1
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/opt16.adb
@@ -0,0 +1,33 @@
+-- { dg-do compile }
+-- { dg-options "-O2 -gnatws" }
+
+procedure Opt16 is
+
+ generic
+ type T (<>) is private;
+ V, V1 : T;
+ with function F1 (X : T) return T;
+ package GP is
+ R : Boolean := F1 (V) = V1;
+ end GP;
+
+ type AB is array (Boolean range <>) of Boolean;
+
+begin
+ for I1 in Boolean loop
+ for I2 in Boolean loop
+ declare
+ B1 : Boolean := I1;
+ B2 : Boolean := I2;
+ AB1 : AB (Boolean) := (I1, I2);
+ T : AB (B1 .. B2) := (B1 .. B2 => True);
+ F : AB (B1 .. B2) := (B1 .. B2 => False);
+
+ package P is new GP (AB, AB1, NOT AB1, "NOT");
+
+ begin
+ null;
+ end;
+ end loop;
+ end loop;
+end;
diff --git a/gcc/testsuite/gnat.dg/return3.adb b/gcc/testsuite/gnat.dg/return3.adb
new file mode 100644
index 00000000000..0f6e3fc64d4
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/return3.adb
@@ -0,0 +1,9 @@
+-- { dg-do compile { target *-*-linux* } }
+-- { dg-options "-gdwarf-2" }
+
+procedure Return3 is
+begin
+ return;
+end;
+
+-- { dg-final { scan-assembler "loc 1 6" } }
diff --git a/gcc/testsuite/gnat.dg/specs/aggr2.ads b/gcc/testsuite/gnat.dg/specs/aggr2.ads
new file mode 100644
index 00000000000..8f7ea871733
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/specs/aggr2.ads
@@ -0,0 +1,14 @@
+-- { dg-do compile }
+
+package Aggr2 is
+
+ type Buffer is array (Positive range <>) of Boolean;
+ for Buffer'Alignment use 4;
+
+ type Buffer_Ptr is access Buffer;
+
+ subtype My_Buffer is Buffer (1 .. 2);
+
+ P : Buffer_Ptr := new My_Buffer'(Others => False);
+
+end Aggr2;
diff --git a/gcc/testsuite/gnat.dg/specs/elab2.ads b/gcc/testsuite/gnat.dg/specs/elab2.ads
new file mode 100644
index 00000000000..005871b08a4
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/specs/elab2.ads
@@ -0,0 +1,20 @@
+-- { dg-do compile }
+
+with Elab2_Pkg; use Elab2_Pkg;
+
+package Elab2 is
+
+ type Num is (One, Two);
+
+ type Rec2 (D : Index_Type := 0) is record
+ Data : Rec1(D);
+ end record;
+
+ type Rec3 (D : Num) is record
+ case D is
+ when One => R : Rec2;
+ when others => null;
+ end case;
+ end record;
+
+end Elab2;
diff --git a/gcc/testsuite/gnat.dg/specs/elab2_pkg.ads b/gcc/testsuite/gnat.dg/specs/elab2_pkg.ads
new file mode 100644
index 00000000000..8d40cd1de9d
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/specs/elab2_pkg.ads
@@ -0,0 +1,18 @@
+-- { dg-excess-errors "no code generated" }
+
+package Elab2_Pkg is
+
+ function Get_Value (S : String) return Integer;
+
+ Max_Limit : constant array(1..2) of Integer :=
+ (1 => Get_Value ("One"), 2 => Get_Value ("Two"));
+
+ type Index_Type is new Natural range 0 .. Max_Limit(1);
+
+ type Array_Type is array (Index_Type range <>) of Natural;
+
+ type Rec1(D : Index_Type) is record
+ A : Array_Type(1 .. D);
+ end record;
+
+end Elab2_Pkg;
diff --git a/gcc/testsuite/gnat.dg/volatile5.adb b/gcc/testsuite/gnat.dg/volatile5.adb
new file mode 100644
index 00000000000..24527a50004
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/volatile5.adb
@@ -0,0 +1,16 @@
+-- { dg-do compile }
+
+with Volatile5_Pkg; use Volatile5_Pkg;
+
+procedure Volatile5 is
+
+ A : Rec;
+
+ procedure Proc is
+ begin
+ A := F;
+ end;
+
+begin
+ Proc;
+end;
diff --git a/gcc/testsuite/gnat.dg/volatile5_pkg.ads b/gcc/testsuite/gnat.dg/volatile5_pkg.ads
new file mode 100644
index 00000000000..71a0c8046a3
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/volatile5_pkg.ads
@@ -0,0 +1,11 @@
+package Volatile5_Pkg is
+
+ type Rec is record
+ I : Integer;
+ end record;
+ pragma Volatile(Rec);
+
+ function F return Rec;
+
+end Volatile5_Pkg;
+-- \ No newline at end of file
diff --git a/gcc/testsuite/go.test/go-test.exp b/gcc/testsuite/go.test/go-test.exp
index 19cc0dfc4d3..f0285a25cff 100644
--- a/gcc/testsuite/go.test/go-test.exp
+++ b/gcc/testsuite/go.test/go-test.exp
@@ -35,7 +35,7 @@ load_lib go-dg.exp
load_lib go-torture.exp
# Implement errchk
-proc errchk { test } {
+proc errchk { test opts } {
global dg-do-what-default
global DEFAULT_GOCFLAGS
global runtests
@@ -51,6 +51,10 @@ proc errchk { test } {
set fdout [open $filename w]
fconfigure $fdout -encoding binary
while { [gets $fdin copy_line] >= 0 } {
+ if [string match "*////*" $copy_line] {
+ puts $fdout $copy_line
+ continue
+ }
regsub "// \(GCCGO_\)?ERROR \"\(\[^\"\]*\)\".*$" $copy_line "// \{ dg-error \"\\2\" \}" out_line
if [string match "*dg-error*.\**" $out_line] {
# I worked out the right number of backslashes by
@@ -65,6 +69,14 @@ proc errchk { test } {
set index [string first "dg-error" $out_line]
regsub -start $index -all "\}\(.\)" $out_line "\\\\\[\\\}\\\\\]\\1" out_line
}
+ if [string match "*dg-error*\(*" $out_line] {
+ set index [string first "dg-error" $out_line]
+ regsub -start $index -all "\\\\\\\(" $out_line "\\\\\[\\\(\\\\\]" out_line
+ }
+ if [string match "*dg-error*\)*\}" $out_line] {
+ set index [string first "dg-error" $out_line]
+ regsub -start $index -all "\\\\\\\)\(.\)" $out_line "\\\\\[\\\)\\\\\]\\1" out_line
+ }
if [string match "*dg-error*\[.\]*" $out_line] {
set index [string first "dg-error" $out_line]
regsub -all "\\\[\\.\\\]" $out_line "\\\\\[.\\\\\]" out_line
@@ -76,7 +88,7 @@ proc errchk { test } {
set hold_runtests $runtests
set runtests "go-test.exp"
- go-dg-runtest $filename "-fno-show-column $DEFAULT_GOCFLAGS"
+ go-dg-runtest $filename "-fno-show-column $DEFAULT_GOCFLAGS $opts"
set runtests $hold_runtests
file delete $filename
@@ -111,6 +123,9 @@ proc go-set-goarch { } {
global target_triplet
switch -glob $target_triplet {
+ "alpha*-*-*" {
+ set goarch "alpha"
+ }
"arm*-*-*" -
"ep9312*-*-*" -
"strongarm*-*-*" -
@@ -125,11 +140,41 @@ proc go-set-goarch { } {
set goarch "amd64"
}
}
+ "mips*-*-*" {
+ if [check_no_compiler_messages mipso32 assembly {
+ #if _MIPS_SIM != _ABIO32
+ #error FOO
+ #endif
+ }] {
+ set goarch "mipso32"
+ } elseif [check_no_compiler_messages mipsn32 assembly {
+ #if _MIPS_SIM != _ABIN32
+ #error FOO
+ #endif
+ }] {
+ set goarch "mipsn32"
+ } elseif [check_no_compiler_messages mipsn64 assembly {
+ #if _MIPS_SIM != _ABI64
+ #error FOO
+ #endif
+ }] {
+ set goarch "mipsn64"
+ } elseif [check_no_compiler_messages mipso64 assembly {
+ #if _MIPS_SIM != _ABIO64
+ #error FOO
+ #endif
+ }] {
+ set goarch "mipso64"
+ } else {
+ perror "$target_triplet: unrecognized MIPS ABI"
+ return ""
+ }
+ }
"sparc*-*-*" {
if [check_effective_target_ilp32] {
set goarch "sparc"
} else {
- set goarch "sparcv9"
+ set goarch "sparc64"
}
}
default {
@@ -336,7 +381,8 @@ proc go-gc-tests { } {
"// \$G \$D/\$F.go && \$L \$F.\$A || echo BUG*" \
$test_line] \
|| [string match "// \$G \$F.go && \$L \$F.\$A #*" \
- $test_line] } {
+ $test_line]
+ || $test_line == "// \$G \$D/\$F.go && \$L \$F.\$A" } {
# This is a vanilla compile and link test.
set dg-do-what-default "link"
go-dg-runtest $test "-w $DEFAULT_GOCFLAGS"
@@ -387,7 +433,7 @@ proc go-gc-tests { } {
$test_line] \
|| [string match "// errchk \$G \$D/\$F.go || echo BUG*" \
$test_line] } {
- errchk $test
+ errchk $test ""
} elseif { [string match \
"// \$G \$D/\$F.dir/bug0.go && \$G \$D/\$F.dir/bug1.go || echo BUG*" \
$test_line] } {
@@ -421,7 +467,7 @@ proc go-gc-tests { } {
regsub "\\.go$" $test ".dir/$name1" file1
dg-test -keep-output $file1 "-O" "-w $DEFAULT_GOCFLAGS"
regsub "\\.go$" $test ".dir/$name2" file2
- errchk $file2
+ errchk $file2 ""
file delete "[file rootname [file tail $file1]].o"
set runtests $hold_runtests
} elseif { [string match \
@@ -464,7 +510,7 @@ proc go-gc-tests { } {
regsub "\\.go$" $test ".dir/bug1.go" file2
dg-test -keep-output $file2 "-O" "-w $DEFAULT_GOCFLAGS"
regsub "\\.go$" $test ".dir/bug2.go" file3
- errchk $file3
+ errchk $file3 ""
file delete "[file rootname [file tail $file1]].o"
file delete "[file rootname [file tail $file2]].o"
set runtests $hold_runtests
@@ -544,6 +590,33 @@ proc go-gc-tests { } {
file delete $ofile1 $ofile2 $output_file
set runtests $hold_runtests
} elseif { [string match \
+ "// \$G \$D/\$F.dir/lib.go && \$G \$D/\$F.dir/main.go && \$L main.\$A && ./\$A.out || echo BUG*" \
+ $test_line ] } {
+ set hold_runtests $runtests
+ set runtests "go-test.exp"
+ set dg-do-what-default "assemble"
+ regsub "\\.go$" $test ".dir/lib.go" file1
+ dg-test -keep-output $file1 "-O" "-w $DEFAULT_GOCFLAGS"
+ set ofile1 "[file rootname [file tail $file1]].o"
+ regsub "\\.go$" $test ".dir/main.go" file2
+ dg-test -keep-output $file2 "-O" "-w $DEFAULT_GOCFLAGS"
+ set ofile2 "[file rootname [file tail $file2]].o"
+ set dg-do-what-default "link"
+ set output_file "./[file rootname [file tail $file2]].exe"
+ set comp_output [go_target_compile "$ofile1 $ofile2" \
+ $output_file "executable" "$DEFAULT_GOCFLAGS"]
+ set comp_output [go-dg-prune $target_triplet $comp_output]
+ if [string match "" $comp_output] {
+ set result [go_load "$output_file" "" ""]
+ set status [lindex $result 0]
+ $status $name
+ } else {
+ verbose -log $comp_output
+ fail $name
+ }
+ file delete $ofile1 $ofile2 $output_file
+ set runtests $hold_runtests
+ } elseif { [string match \
"// \$G \$D/\$F.dir/chanbug.go && \$G -I. \$D/\$F.dir/chanbug2.go" \
$test_line] } {
set hold_runtests $runtests
@@ -570,7 +643,7 @@ proc go-gc-tests { } {
regsub "\\.go$" $test ".dir/x.go" file1
dg-test -keep-output $file1 "-O" "-w $DEFAULT_GOCFLAGS"
regsub "\\.go$" $test ".dir/y.go" file2
- errchk $file2
+ errchk $file2 ""
file delete "[file rootname [file tail $file1]].o"
set runtests $hold_runtests
} elseif { [string match "// true*" $test_line] } {
@@ -594,7 +667,7 @@ proc go-gc-tests { } {
dg-test -keep-output $file2 "-O" "-w $DEFAULT_GOCFLAGS"
set ofile2 "[file rootname [file tail $file2]].o"
regsub "\\.go$" $test ".dir/bug3.go" file3
- errchk $file3
+ errchk $file3 ""
set output_file "./[file rootname [file tail $test]].exe"
set comp_output [go_target_compile "$ofile0 $ofile1 $ofile2" \
$output_file "executable" "$DEFAULT_GOCFLAGS"]
@@ -658,7 +731,7 @@ proc go-gc-tests { } {
}
file delete $output_file
} elseif { $test_line == "// \$G \$D/\$F.go && \$L \$F.\$A &&" \
- && $test_line2 == "// ./\$A.out -pass 0 >tmp.go && \$G tmp.go && \$L -o tmp1.\$A tmp.\$A && ./tmp1.\$A &&" \
+ && $test_line2 == "// ./\$A.out -pass 0 >tmp.go && \$G tmp.go && \$L -o \$A.out1 tmp.\$A && ./\$A.out1 &&" \
&& $test_line3 == "// ./\$A.out -pass 1 >tmp.go && errchk \$G -e tmp.go &&" \
&& $test_line4 == "// ./\$A.out -pass 2 >tmp.go && errchk \$G -e tmp.go" } {
set go_execute_args ""
@@ -679,13 +752,13 @@ proc go-gc-tests { } {
fail "$name execution 1"
} else {
pass "$name execution 1"
- errchk tmp.go
+ errchk tmp.go ""
}
if { [catch "exec $output_file -pass 2 >tmp.go"] != 0 } {
fail "$name execution 2"
} else {
pass "$name execution 2"
- errchk tmp.go
+ errchk tmp.go ""
}
file delete tmp.go
}
@@ -705,11 +778,63 @@ proc go-gc-tests { } {
} else {
pass "$name execution"
file delete tmp.x
- errchk tmp.go
+ errchk tmp.go ""
+ }
+ }
+ file delete $output_file
+ set runtests $hold_runtests
+ } elseif { [string match \
+ "// \$G \$D/\$F.dir/p.go && \$G \$D/\$F.dir/main.go && \$L main.\$A && ! ./\$A.out || echo BUG*" \
+ $test_line] } {
+ set hold_runtests $runtests
+ set runtests "go-test.exp"
+ set dg-do-what-default "assemble"
+ regsub "\\.go$" $test ".dir/p.go" file1
+ dg-test -keep-output $file1 "-O" "-w $DEFAULT_GOCFLAGS"
+ set ofile1 "[file rootname [file tail $file1]].o"
+ regsub "\\.go$" $test ".dir/main.go" file2
+ dg-test -keep-output $file2 "-O" "-w $DEFAULT_GOCFLAGS"
+ set ofile2 "[file rootname [file tail $file2]].o"
+ set output_file "./[file rootname [file tail $test]].exe"
+ set comp_output [go_target_compile "$ofile1 $ofile2" \
+ $output_file "executable" "$DEFAULT_GOCFLAGS"]
+ set comp_output [go-dg-prune $target_triplet $comp_output]
+ if [string match "" $comp_output] {
+ setup_xfail "*-*-*"
+ set result [go_load "$output_file" "" ""]
+ set status [lindex $result 0]
+ $status $name
+ } else {
+ verbose -log $comp_output
+ fali $name
+ }
+ file delete $ofile1 $ofile2 $output_file
+ set runtests $hold_runtests
+ } elseif { $test_line == "// \$G \$D/\$F.go && \$L \$F.\$A && ./\$A.out >tmp.go &&"
+ && $test_line2 == "// \$G tmp.go && \$L tmp.\$A && ./\$A.out || echo BUG: select5" } {
+ set go_execute_args ""
+ set hold_runtests $runtests
+ set runtests "go-test.exp"
+ set dg-do-what-default "link"
+ dg-test -keep-output $test "-O" "-w $DEFAULT_GOCFLAGS"
+ set output_file "./[file rootname [file tail $test]].exe"
+ set base "[file rootname [file tail $test]]"
+ if [isnative] {
+ if { [catch "exec $output_file > $base-out.go"] != 0 } {
+ fail "$name execution"
+ } else {
+ pass "$name execution"
+ file delete $base-out.x
+ go-torture-execute "./$base-out.go"
}
+ # file delete $base-out.go
}
file delete $output_file
set runtests $hold_runtests
+ } elseif { $test_line == "// errchk \$G -e \$D/\$F.dir/\[ab\].go" } {
+ regsub "\\.go$" $test ".dir/a.go" file1
+ regsub "\\.go$" $test ".dir/b.go" file2
+ errchk "$file1" "$file2"
} elseif { $test_line == "// # generated by cmplxdivide.c" } {
# Ignore.
} elseif { $test_line == "// \$G \$D/bug302.dir/p.go && gopack grc pp.a p.\$A && \$G \$D/bug302.dir/main.go" \
diff --git a/gcc/testsuite/go.test/test/append.go b/gcc/testsuite/go.test/test/append.go
new file mode 100644
index 00000000000..96421c36b89
--- /dev/null
+++ b/gcc/testsuite/go.test/test/append.go
@@ -0,0 +1,227 @@
+// $G $F.go && $L $F.$A && ./$A.out
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Semi-exhaustive test for append()
+
+package main
+
+import (
+ "fmt"
+ "reflect"
+)
+
+
+func verify(name string, result, expected interface{}) {
+ if !reflect.DeepEqual(result, expected) {
+ panic(name)
+ }
+}
+
+
+func main() {
+ for _, t := range tests {
+ verify(t.name, t.result, t.expected)
+ }
+ verifyStruct()
+ verifyInterface()
+}
+
+
+var tests = []struct {
+ name string
+ result, expected interface{}
+}{
+ {"bool a", append([]bool{}), []bool{}},
+ {"bool b", append([]bool{}, true), []bool{true}},
+ {"bool c", append([]bool{}, true, false, true, true), []bool{true, false, true, true}},
+
+ {"bool d", append([]bool{true, false, true}), []bool{true, false, true}},
+ {"bool e", append([]bool{true, false, true}, false), []bool{true, false, true, false}},
+ {"bool f", append([]bool{true, false, true}, false, false, false), []bool{true, false, true, false, false, false}},
+
+ {"bool g", append([]bool{}, []bool{true}...), []bool{true}},
+ {"bool h", append([]bool{}, []bool{true, false, true, false}...), []bool{true, false, true, false}},
+
+ {"bool i", append([]bool{true, false, true}, []bool{true}...), []bool{true, false, true, true}},
+ {"bool j", append([]bool{true, false, true}, []bool{true, true, true}...), []bool{true, false, true, true, true, true}},
+
+
+ {"byte a", append([]byte{}), []byte{}},
+ {"byte b", append([]byte{}, 0), []byte{0}},
+ {"byte c", append([]byte{}, 0, 1, 2, 3), []byte{0, 1, 2, 3}},
+
+ {"byte d", append([]byte{0, 1, 2}), []byte{0, 1, 2}},
+ {"byte e", append([]byte{0, 1, 2}, 3), []byte{0, 1, 2, 3}},
+ {"byte f", append([]byte{0, 1, 2}, 3, 4, 5), []byte{0, 1, 2, 3, 4, 5}},
+
+ {"byte g", append([]byte{}, []byte{0}...), []byte{0}},
+ {"byte h", append([]byte{}, []byte{0, 1, 2, 3}...), []byte{0, 1, 2, 3}},
+
+ {"byte i", append([]byte{0, 1, 2}, []byte{3}...), []byte{0, 1, 2, 3}},
+ {"byte j", append([]byte{0, 1, 2}, []byte{3, 4, 5}...), []byte{0, 1, 2, 3, 4, 5}},
+
+
+ {"int16 a", append([]int16{}), []int16{}},
+ {"int16 b", append([]int16{}, 0), []int16{0}},
+ {"int16 c", append([]int16{}, 0, 1, 2, 3), []int16{0, 1, 2, 3}},
+
+ {"int16 d", append([]int16{0, 1, 2}), []int16{0, 1, 2}},
+ {"int16 e", append([]int16{0, 1, 2}, 3), []int16{0, 1, 2, 3}},
+ {"int16 f", append([]int16{0, 1, 2}, 3, 4, 5), []int16{0, 1, 2, 3, 4, 5}},
+
+ {"int16 g", append([]int16{}, []int16{0}...), []int16{0}},
+ {"int16 h", append([]int16{}, []int16{0, 1, 2, 3}...), []int16{0, 1, 2, 3}},
+
+ {"int16 i", append([]int16{0, 1, 2}, []int16{3}...), []int16{0, 1, 2, 3}},
+ {"int16 j", append([]int16{0, 1, 2}, []int16{3, 4, 5}...), []int16{0, 1, 2, 3, 4, 5}},
+
+
+ {"uint32 a", append([]uint32{}), []uint32{}},
+ {"uint32 b", append([]uint32{}, 0), []uint32{0}},
+ {"uint32 c", append([]uint32{}, 0, 1, 2, 3), []uint32{0, 1, 2, 3}},
+
+ {"uint32 d", append([]uint32{0, 1, 2}), []uint32{0, 1, 2}},
+ {"uint32 e", append([]uint32{0, 1, 2}, 3), []uint32{0, 1, 2, 3}},
+ {"uint32 f", append([]uint32{0, 1, 2}, 3, 4, 5), []uint32{0, 1, 2, 3, 4, 5}},
+
+ {"uint32 g", append([]uint32{}, []uint32{0}...), []uint32{0}},
+ {"uint32 h", append([]uint32{}, []uint32{0, 1, 2, 3}...), []uint32{0, 1, 2, 3}},
+
+ {"uint32 i", append([]uint32{0, 1, 2}, []uint32{3}...), []uint32{0, 1, 2, 3}},
+ {"uint32 j", append([]uint32{0, 1, 2}, []uint32{3, 4, 5}...), []uint32{0, 1, 2, 3, 4, 5}},
+
+
+ {"float64 a", append([]float64{}), []float64{}},
+ {"float64 b", append([]float64{}, 0), []float64{0}},
+ {"float64 c", append([]float64{}, 0, 1, 2, 3), []float64{0, 1, 2, 3}},
+
+ {"float64 d", append([]float64{0, 1, 2}), []float64{0, 1, 2}},
+ {"float64 e", append([]float64{0, 1, 2}, 3), []float64{0, 1, 2, 3}},
+ {"float64 f", append([]float64{0, 1, 2}, 3, 4, 5), []float64{0, 1, 2, 3, 4, 5}},
+
+ {"float64 g", append([]float64{}, []float64{0}...), []float64{0}},
+ {"float64 h", append([]float64{}, []float64{0, 1, 2, 3}...), []float64{0, 1, 2, 3}},
+
+ {"float64 i", append([]float64{0, 1, 2}, []float64{3}...), []float64{0, 1, 2, 3}},
+ {"float64 j", append([]float64{0, 1, 2}, []float64{3, 4, 5}...), []float64{0, 1, 2, 3, 4, 5}},
+
+
+ {"complex128 a", append([]complex128{}), []complex128{}},
+ {"complex128 b", append([]complex128{}, 0), []complex128{0}},
+ {"complex128 c", append([]complex128{}, 0, 1, 2, 3), []complex128{0, 1, 2, 3}},
+
+ {"complex128 d", append([]complex128{0, 1, 2}), []complex128{0, 1, 2}},
+ {"complex128 e", append([]complex128{0, 1, 2}, 3), []complex128{0, 1, 2, 3}},
+ {"complex128 f", append([]complex128{0, 1, 2}, 3, 4, 5), []complex128{0, 1, 2, 3, 4, 5}},
+
+ {"complex128 g", append([]complex128{}, []complex128{0}...), []complex128{0}},
+ {"complex128 h", append([]complex128{}, []complex128{0, 1, 2, 3}...), []complex128{0, 1, 2, 3}},
+
+ {"complex128 i", append([]complex128{0, 1, 2}, []complex128{3}...), []complex128{0, 1, 2, 3}},
+ {"complex128 j", append([]complex128{0, 1, 2}, []complex128{3, 4, 5}...), []complex128{0, 1, 2, 3, 4, 5}},
+
+
+ {"string a", append([]string{}), []string{}},
+ {"string b", append([]string{}, "0"), []string{"0"}},
+ {"string c", append([]string{}, "0", "1", "2", "3"), []string{"0", "1", "2", "3"}},
+
+ {"string d", append([]string{"0", "1", "2"}), []string{"0", "1", "2"}},
+ {"string e", append([]string{"0", "1", "2"}, "3"), []string{"0", "1", "2", "3"}},
+ {"string f", append([]string{"0", "1", "2"}, "3", "4", "5"), []string{"0", "1", "2", "3", "4", "5"}},
+
+ {"string g", append([]string{}, []string{"0"}...), []string{"0"}},
+ {"string h", append([]string{}, []string{"0", "1", "2", "3"}...), []string{"0", "1", "2", "3"}},
+
+ {"string i", append([]string{"0", "1", "2"}, []string{"3"}...), []string{"0", "1", "2", "3"}},
+ {"string j", append([]string{"0", "1", "2"}, []string{"3", "4", "5"}...), []string{"0", "1", "2", "3", "4", "5"}},
+}
+
+
+func verifyStruct() {
+ type T struct {
+ a, b, c string
+ }
+ type S []T
+ e := make(S, 100)
+ for i := range e {
+ e[i] = T{"foo", fmt.Sprintf("%d", i), "bar"}
+ }
+
+ verify("struct a", append(S{}), S{})
+ verify("struct b", append(S{}, e[0]), e[0:1])
+ verify("struct c", append(S{}, e[0], e[1], e[2]), e[0:3])
+
+ verify("struct d", append(e[0:1]), e[0:1])
+ verify("struct e", append(e[0:1], e[1]), e[0:2])
+ verify("struct f", append(e[0:1], e[1], e[2], e[3]), e[0:4])
+
+ verify("struct g", append(e[0:3]), e[0:3])
+ verify("struct h", append(e[0:3], e[3]), e[0:4])
+ verify("struct i", append(e[0:3], e[3], e[4], e[5], e[6]), e[0:7])
+
+ for i := range e {
+ verify("struct j", append(S{}, e[0:i]...), e[0:i])
+ input := make(S, i)
+ copy(input, e[0:i])
+ verify("struct k", append(input, e[i:]...), e)
+ verify("struct k - input modified", input, e[0:i])
+ }
+
+ s := make(S, 10, 20)
+ r := make(S, len(s)+len(e))
+ for i, x := range e {
+ r[len(s)+i] = x
+ }
+ verify("struct l", append(s), s)
+ verify("struct m", append(s, e...), r)
+}
+
+
+func verifyInterface() {
+ type T interface{}
+ type S []T
+ e := make(S, 100)
+ for i := range e {
+ switch i % 4 {
+ case 0:
+ e[i] = i
+ case 1:
+ e[i] = "foo"
+ case 2:
+ e[i] = fmt.Sprintf("%d", i)
+ case 3:
+ e[i] = float64(i)
+ }
+ }
+
+ verify("interface a", append(S{}), S{})
+ verify("interface b", append(S{}, e[0]), e[0:1])
+ verify("interface c", append(S{}, e[0], e[1], e[2]), e[0:3])
+
+ verify("interface d", append(e[0:1]), e[0:1])
+ verify("interface e", append(e[0:1], e[1]), e[0:2])
+ verify("interface f", append(e[0:1], e[1], e[2], e[3]), e[0:4])
+
+ verify("interface g", append(e[0:3]), e[0:3])
+ verify("interface h", append(e[0:3], e[3]), e[0:4])
+ verify("interface i", append(e[0:3], e[3], e[4], e[5], e[6]), e[0:7])
+
+ for i := range e {
+ verify("interface j", append(S{}, e[0:i]...), e[0:i])
+ input := make(S, i)
+ copy(input, e[0:i])
+ verify("interface k", append(input, e[i:]...), e)
+ verify("interface k - input modified", input, e[0:i])
+ }
+
+ s := make(S, 10, 20)
+ r := make(S, len(s)+len(e))
+ for i, x := range e {
+ r[len(s)+i] = x
+ }
+ verify("interface l", append(s), s)
+ verify("interface m", append(s, e...), r)
+}
diff --git a/gcc/testsuite/go.test/test/arm-pass.txt b/gcc/testsuite/go.test/test/arm-pass.txt
deleted file mode 100644
index 2c7230f100a..00000000000
--- a/gcc/testsuite/go.test/test/arm-pass.txt
+++ /dev/null
@@ -1,488 +0,0 @@
-./235.go
-# ./64bit.go # fail, flaky on android build
-./args.go
-./assign.go
-./assign1.go
-./bigalg.go
-./bigmap.go
-./blank.go
-./blank1.go
-./chancap.go
-./char_lit.go
-./char_lit1.go
-./closedchan.go
-./closure.go
-./cmp1.go
-./cmp2.go
-./cmp3.go
-./cmp4.go
-./cmp5.go
-./cmplx.go
-# ./cmplxdivide.go # fail, BUG
-./cmplxdivide1.go
-./complit.go
-./compos.go
-./const.go
-./const1.go
-./const2.go
-./const3.go
-./convert.go
-./convert3.go
-./convlit.go
-./convlit1.go
-./copy.go
-./ddd.go
-./ddd1.go
-./ddd2.go
-./ddd3.go
-./decl.go
-./declbad.go
-./defer.go
-./deferprint.go
-./empty.go
-./env.go
-./escape.go
-./float_lit.go
-./floatcmp.go
-./for.go
-./func.go
-./func1.go
-./func2.go
-./func3.go
-./func4.go
-./func5.go
-./gc.go
-./gc1.go
-./hashmap.go
-./helloworld.go
-./if.go
-./if1.go
-./import.go
-./import1.go
-./import2.go
-./import3.go
-./import4.go
-./indirect.go
-./indirect1.go
-./initcomma.go
-./initialize.go
-./initializerr.go
-./initsyscall.go
-./int_lit.go
-./intcvt.go
-./iota.go
-./literal.go
-./malloc1.go
-# ./mallocfin.go # fail
-./mallocrand.go
-./mallocrep.go
-./mallocrep1.go
-# ./map.go # fail
-./method.go
-./method1.go
-./method2.go
-./method3.go
-./named.go
-./named1.go
-./nil.go
-./nul1.go
-./parentype.go
-./peano.go
-./printbig.go
-./range.go
-./recover.go
-./recover1.go
-./recover2.go
-# ./recover3.go # fail
-./rename.go
-./rename1.go
-./runtime.go
-./sieve.go
-./sigchld.go
-./simassign.go
-./sinit.go
-./stack.go
-./string_lit.go
-./stringrange.go
-./switch.go
-./switch1.go
-./test0.go
-./turing.go
-./typeswitch.go
-./typeswitch1.go
-./typeswitch2.go
-./undef.go
-./utf.go
-./varerr.go
-./varinit.go
-./vectors.go
-./zerodivide.go
-ken/array.go
-ken/chan.go
-ken/chan1.go
-ken/complit.go
-# ken/cplx0.go # output fail
-# ken/cplx1.go # fail
-# ken/cplx2.go # fail
-# ken/cplx3.go # output fail
-# ken/cplx4.go # fail, BUG
-# ken/cplx5.go # output fail
-ken/divconst.go
-ken/divmod.go
-ken/embed.go
-ken/for.go
-ken/interbasic.go
-ken/interfun.go
-ken/intervar.go
-ken/label.go
-ken/litfun.go
-ken/mfunc.go
-ken/modconst.go
-ken/ptrfun.go
-ken/ptrvar.go
-ken/range.go
-ken/rob1.go
-ken/rob2.go
-ken/robfor.go
-ken/robfunc.go
-ken/robif.go
-ken/shift.go
-ken/simparray.go
-ken/simpbool.go
-ken/simpconv.go
-ken/simpfun.go
-ken/simpprint.go
-ken/simpswitch.go
-ken/simpvar.go
-ken/slicearray.go
-ken/sliceslice.go
-ken/string.go
-ken/strvar.go
-chan/doubleselect.go
-chan/fifo.go
-chan/goroutines.go
-chan/nonblock.go
-chan/perm.go
-chan/powser1.go
-chan/powser2.go
-chan/select.go
-chan/select2.go
-# chan/select3.go # fail
-chan/sieve1.go
-chan/sieve2.go
-interface/bigdata.go
-interface/convert.go
-interface/convert1.go
-interface/convert2.go
-interface/embed.go
-interface/embed0.go
-interface/embed1.go
-interface/explicit.go
-interface/fail.go
-interface/fake.go
-interface/pointer.go
-interface/receiver.go
-interface/receiver1.go
-interface/recursive.go
-interface/returntype.go
-interface/struct.go
-nilptr/arrayindex.go
-nilptr/arrayindex1.go
-nilptr/arraytoslice.go
-nilptr/arraytoslice1.go
-nilptr/arraytoslice2.go
-nilptr/slicearray.go
-nilptr/structfield.go
-nilptr/structfield1.go
-nilptr/structfield2.go
-nilptr/structfieldaddr.go
-syntax/forvar.go
-syntax/import.go
-syntax/interface.go
-syntax/semi1.go
-syntax/semi2.go
-syntax/semi3.go
-syntax/semi4.go
-syntax/semi5.go
-syntax/semi6.go
-syntax/semi7.go
-syntax/slice.go
-syntax/topexpr.go
-syntax/vareq.go
-syntax/vareq1.go
-fixedbugs/bug000.go
-fixedbugs/bug001.go
-fixedbugs/bug002.go
-fixedbugs/bug003.go
-fixedbugs/bug004.go
-fixedbugs/bug005.go
-fixedbugs/bug006.go
-fixedbugs/bug007.go
-fixedbugs/bug008.go
-fixedbugs/bug009.go
-fixedbugs/bug010.go
-fixedbugs/bug011.go
-fixedbugs/bug012.go
-fixedbugs/bug013.go
-fixedbugs/bug014.go
-fixedbugs/bug015.go
-fixedbugs/bug016.go
-fixedbugs/bug017.go
-fixedbugs/bug020.go
-fixedbugs/bug021.go
-fixedbugs/bug022.go
-fixedbugs/bug023.go
-fixedbugs/bug024.go
-fixedbugs/bug026.go
-fixedbugs/bug027.go
-fixedbugs/bug028.go
-fixedbugs/bug030.go
-fixedbugs/bug031.go
-fixedbugs/bug035.go
-fixedbugs/bug036.go
-fixedbugs/bug037.go
-fixedbugs/bug038.go
-fixedbugs/bug039.go
-fixedbugs/bug040.go
-fixedbugs/bug045.go
-fixedbugs/bug046.go
-fixedbugs/bug047.go
-fixedbugs/bug048.go
-fixedbugs/bug049.go
-fixedbugs/bug050.go
-fixedbugs/bug051.go
-fixedbugs/bug052.go
-fixedbugs/bug053.go
-fixedbugs/bug054.go
-fixedbugs/bug055.go
-fixedbugs/bug056.go
-fixedbugs/bug057.go
-fixedbugs/bug058.go
-fixedbugs/bug059.go
-fixedbugs/bug060.go
-fixedbugs/bug061.go
-fixedbugs/bug062.go
-fixedbugs/bug063.go
-fixedbugs/bug064.go
-fixedbugs/bug065.go
-fixedbugs/bug066.go
-fixedbugs/bug067.go
-fixedbugs/bug068.go
-fixedbugs/bug069.go
-fixedbugs/bug070.go
-fixedbugs/bug071.go
-fixedbugs/bug072.go
-fixedbugs/bug073.go
-fixedbugs/bug074.go
-fixedbugs/bug075.go
-fixedbugs/bug076.go
-fixedbugs/bug077.go
-fixedbugs/bug078.go
-fixedbugs/bug080.go
-fixedbugs/bug081.go
-fixedbugs/bug082.go
-fixedbugs/bug083.go
-fixedbugs/bug084.go
-fixedbugs/bug085.go
-fixedbugs/bug086.go
-fixedbugs/bug087.go
-fixedbugs/bug088.go
-fixedbugs/bug089.go
-fixedbugs/bug090.go
-fixedbugs/bug091.go
-fixedbugs/bug092.go
-fixedbugs/bug093.go
-fixedbugs/bug094.go
-fixedbugs/bug096.go
-fixedbugs/bug097.go
-fixedbugs/bug098.go
-fixedbugs/bug099.go
-fixedbugs/bug101.go
-fixedbugs/bug102.go
-fixedbugs/bug103.go
-fixedbugs/bug104.go
-fixedbugs/bug106.go
-fixedbugs/bug107.go
-fixedbugs/bug108.go
-fixedbugs/bug109.go
-fixedbugs/bug110.go
-fixedbugs/bug111.go
-fixedbugs/bug112.go
-fixedbugs/bug113.go
-fixedbugs/bug114.go
-fixedbugs/bug115.go
-fixedbugs/bug116.go
-fixedbugs/bug117.go
-fixedbugs/bug118.go
-fixedbugs/bug119.go
-fixedbugs/bug120.go
-fixedbugs/bug121.go
-fixedbugs/bug122.go
-fixedbugs/bug123.go
-fixedbugs/bug126.go
-fixedbugs/bug127.go
-fixedbugs/bug128.go
-fixedbugs/bug129.go
-fixedbugs/bug130.go
-fixedbugs/bug131.go
-fixedbugs/bug132.go
-fixedbugs/bug133.go
-fixedbugs/bug135.go
-fixedbugs/bug136.go
-fixedbugs/bug137.go
-fixedbugs/bug139.go
-fixedbugs/bug140.go
-fixedbugs/bug141.go
-fixedbugs/bug142.go
-fixedbugs/bug143.go
-fixedbugs/bug144.go
-fixedbugs/bug145.go
-fixedbugs/bug146.go
-fixedbugs/bug147.go
-fixedbugs/bug148.go
-fixedbugs/bug149.go
-fixedbugs/bug150.go
-fixedbugs/bug151.go
-fixedbugs/bug152.go
-fixedbugs/bug154.go
-fixedbugs/bug155.go
-fixedbugs/bug156.go
-fixedbugs/bug157.go
-fixedbugs/bug158.go
-fixedbugs/bug159.go
-fixedbugs/bug160.go
-fixedbugs/bug161.go
-fixedbugs/bug163.go
-fixedbugs/bug164.go
-fixedbugs/bug165.go
-fixedbugs/bug167.go
-fixedbugs/bug168.go
-fixedbugs/bug169.go
-fixedbugs/bug170.go
-fixedbugs/bug171.go
-fixedbugs/bug172.go
-fixedbugs/bug173.go
-fixedbugs/bug174.go
-fixedbugs/bug175.go
-fixedbugs/bug176.go
-fixedbugs/bug177.go
-fixedbugs/bug178.go
-fixedbugs/bug179.go
-fixedbugs/bug180.go
-fixedbugs/bug181.go
-fixedbugs/bug182.go
-fixedbugs/bug183.go
-fixedbugs/bug184.go
-fixedbugs/bug185.go
-fixedbugs/bug186.go
-fixedbugs/bug187.go
-fixedbugs/bug188.go
-fixedbugs/bug189.go
-fixedbugs/bug190.go
-fixedbugs/bug191.go
-fixedbugs/bug192.go
-fixedbugs/bug193.go
-fixedbugs/bug194.go
-fixedbugs/bug195.go
-fixedbugs/bug196.go
-fixedbugs/bug197.go
-fixedbugs/bug198.go
-fixedbugs/bug199.go
-fixedbugs/bug200.go
-fixedbugs/bug201.go
-fixedbugs/bug202.go
-fixedbugs/bug203.go
-fixedbugs/bug204.go
-fixedbugs/bug205.go
-fixedbugs/bug206.go
-fixedbugs/bug207.go
-fixedbugs/bug208.go
-fixedbugs/bug209.go
-fixedbugs/bug211.go
-fixedbugs/bug212.go
-fixedbugs/bug213.go
-fixedbugs/bug214.go
-fixedbugs/bug215.go
-fixedbugs/bug216.go
-fixedbugs/bug217.go
-fixedbugs/bug218.go
-fixedbugs/bug219.go
-fixedbugs/bug220.go
-fixedbugs/bug221.go
-fixedbugs/bug222.go
-fixedbugs/bug223.go
-fixedbugs/bug224.go
-fixedbugs/bug225.go
-fixedbugs/bug226.go
-fixedbugs/bug227.go
-fixedbugs/bug228.go
-fixedbugs/bug229.go
-fixedbugs/bug230.go
-fixedbugs/bug231.go
-fixedbugs/bug232.go
-fixedbugs/bug233.go
-fixedbugs/bug234.go
-fixedbugs/bug235.go
-fixedbugs/bug236.go
-fixedbugs/bug237.go
-fixedbugs/bug238.go
-fixedbugs/bug239.go
-fixedbugs/bug240.go
-fixedbugs/bug241.go
-fixedbugs/bug242.go
-# fixedbugs/bug243.go # fail, flaky on android build
-fixedbugs/bug244.go
-fixedbugs/bug245.go
-fixedbugs/bug246.go
-fixedbugs/bug247.go
-fixedbugs/bug248.go
-fixedbugs/bug249.go
-fixedbugs/bug250.go
-fixedbugs/bug251.go
-fixedbugs/bug252.go
-fixedbugs/bug253.go
-fixedbugs/bug254.go
-fixedbugs/bug255.go
-fixedbugs/bug256.go
-fixedbugs/bug257.go
-fixedbugs/bug258.go
-fixedbugs/bug259.go
-fixedbugs/bug261.go
-fixedbugs/bug262.go
-fixedbugs/bug263.go
-fixedbugs/bug264.go
-fixedbugs/bug265.go
-fixedbugs/bug266.go
-fixedbugs/bug267.go
-fixedbugs/bug268.go
-fixedbugs/bug269.go
-fixedbugs/bug270.go
-fixedbugs/bug271.go
-fixedbugs/bug272.go
-fixedbugs/bug273.go
-fixedbugs/bug274.go
-fixedbugs/bug275.go
-fixedbugs/bug276.go
-fixedbugs/bug277.go
-fixedbugs/bug278.go
-fixedbugs/bug279.go
-fixedbugs/bug280.go
-fixedbugs/bug281.go
-fixedbugs/bug282.go
-fixedbugs/bug283.go
-fixedbugs/bug284.go
-fixedbugs/bug285.go
-fixedbugs/bug286.go
-fixedbugs/bug287.go
-fixedbugs/bug288.go
-fixedbugs/bug289.go
-fixedbugs/bug290.go
-fixedbugs/bug291.go
-fixedbugs/bug292.go
-fixedbugs/bug293.go
-fixedbugs/bug294.go
-fixedbugs/bug295.go
-fixedbugs/bug296.go
-fixedbugs/bug297.go
-fixedbugs/bug298.go
-# bugs/bug260.go # fail, BUG
diff --git a/gcc/testsuite/go.test/test/bench/Makefile b/gcc/testsuite/go.test/test/bench/Makefile
new file mode 100644
index 00000000000..145fe0cea63
--- /dev/null
+++ b/gcc/testsuite/go.test/test/bench/Makefile
@@ -0,0 +1,14 @@
+# Copyright 2011 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+include ../../src/Make.inc
+
+all:
+ @echo "make clean or timing"
+
+timing:
+ ./timing.sh
+
+clean:
+ rm -f [568].out *.[568]
diff --git a/gcc/testsuite/go.test/test/bench/clean.bash b/gcc/testsuite/go.test/test/bench/clean.bash
deleted file mode 100755
index d56c0e39405..00000000000
--- a/gcc/testsuite/go.test/test/bench/clean.bash
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-OS=568
-rm -f [$OS].out *.[$OS]
diff --git a/gcc/testsuite/go.test/test/bench/fannkuch-parallel.go b/gcc/testsuite/go.test/test/bench/fannkuch-parallel.go
index 7897eac0524..7e9b98d5051 100644
--- a/gcc/testsuite/go.test/test/bench/fannkuch-parallel.go
+++ b/gcc/testsuite/go.test/test/bench/fannkuch-parallel.go
@@ -44,7 +44,7 @@ import (
)
var n = flag.Int("n", 7, "count")
-var nCPU = flag.Int("ncpu", 2, "number of cpus")
+var nCPU = flag.Int("ncpu", 4, "number of cpus")
type Job struct {
start []int
diff --git a/gcc/testsuite/go.test/test/bench/fasta.c b/gcc/testsuite/go.test/test/bench/fasta.c
index 78a8490d710..64c1c520581 100644
--- a/gcc/testsuite/go.test/test/bench/fasta.c
+++ b/gcc/testsuite/go.test/test/bench/fasta.c
@@ -41,10 +41,12 @@ POSSIBILITY OF SUCH DAMAGE.
#include <stdlib.h>
#include <string.h>
+#ifndef fwrite_unlocked
// not available on OS X
#define fwrite_unlocked fwrite
#define fputc_unlocked fputc
#define fputs_unlocked fputs
+#endif
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
#define unlikely(x) __builtin_expect((x), 0)
@@ -214,4 +216,4 @@ main(int argc, const char **argv) {
">THREE Homo sapiens frequency\n", n*5, &rand);
return 0;
-} \ No newline at end of file
+}
diff --git a/gcc/testsuite/go.test/test/bench/fasta.go b/gcc/testsuite/go.test/test/bench/fasta.go
index 470bdb3285a..d13edd5dcfa 100644
--- a/gcc/testsuite/go.test/test/bench/fasta.go
+++ b/gcc/testsuite/go.test/test/bench/fasta.go
@@ -37,7 +37,6 @@ POSSIBILITY OF SUCH DAMAGE.
package main
import (
- "bytes"
"flag"
"os"
)
@@ -49,7 +48,7 @@ var n = flag.Int("n", 1000, "length of result")
const Line = 60
func Repeat(alu []byte, n int) {
- buf := bytes.Add(alu, alu)
+ buf := append(alu, alu...)
off := 0
for n > 0 {
m := n
@@ -138,28 +137,28 @@ func main() {
flag.Parse()
iub := []Acid{
- Acid{prob: 0.27, sym: 'a'},
- Acid{prob: 0.12, sym: 'c'},
- Acid{prob: 0.12, sym: 'g'},
- Acid{prob: 0.27, sym: 't'},
- Acid{prob: 0.02, sym: 'B'},
- Acid{prob: 0.02, sym: 'D'},
- Acid{prob: 0.02, sym: 'H'},
- Acid{prob: 0.02, sym: 'K'},
- Acid{prob: 0.02, sym: 'M'},
- Acid{prob: 0.02, sym: 'N'},
- Acid{prob: 0.02, sym: 'R'},
- Acid{prob: 0.02, sym: 'S'},
- Acid{prob: 0.02, sym: 'V'},
- Acid{prob: 0.02, sym: 'W'},
- Acid{prob: 0.02, sym: 'Y'},
+ {prob: 0.27, sym: 'a'},
+ {prob: 0.12, sym: 'c'},
+ {prob: 0.12, sym: 'g'},
+ {prob: 0.27, sym: 't'},
+ {prob: 0.02, sym: 'B'},
+ {prob: 0.02, sym: 'D'},
+ {prob: 0.02, sym: 'H'},
+ {prob: 0.02, sym: 'K'},
+ {prob: 0.02, sym: 'M'},
+ {prob: 0.02, sym: 'N'},
+ {prob: 0.02, sym: 'R'},
+ {prob: 0.02, sym: 'S'},
+ {prob: 0.02, sym: 'V'},
+ {prob: 0.02, sym: 'W'},
+ {prob: 0.02, sym: 'Y'},
}
homosapiens := []Acid{
- Acid{prob: 0.3029549426680, sym: 'a'},
- Acid{prob: 0.1979883004921, sym: 'c'},
- Acid{prob: 0.1975473066391, sym: 'g'},
- Acid{prob: 0.3015094502008, sym: 't'},
+ {prob: 0.3029549426680, sym: 'a'},
+ {prob: 0.1979883004921, sym: 'c'},
+ {prob: 0.1975473066391, sym: 'g'},
+ {prob: 0.3015094502008, sym: 't'},
}
alu := []byte(
@@ -192,9 +191,7 @@ func (b *buffer) Flush() {
func (b *buffer) WriteString(s string) {
p := b.NextWrite(len(s))
- for i := 0; i < len(s); i++ {
- p[i] = s[i]
- }
+ copy(p, s)
}
func (b *buffer) NextWrite(n int) []byte {
@@ -204,6 +201,6 @@ func (b *buffer) NextWrite(n int) []byte {
p = *b
}
out := p[len(p) : len(p)+n]
- *b = p[0 : len(p)+n]
+ *b = p[:len(p)+n]
return out
}
diff --git a/gcc/testsuite/go.test/test/bench/k-nucleotide-parallel.go b/gcc/testsuite/go.test/test/bench/k-nucleotide-parallel.go
index 0234f33d113..96c80d8f0c8 100644
--- a/gcc/testsuite/go.test/test/bench/k-nucleotide-parallel.go
+++ b/gcc/testsuite/go.test/test/bench/k-nucleotide-parallel.go
@@ -41,6 +41,7 @@ import (
"fmt"
"io/ioutil"
"os"
+ "runtime"
"sort"
)
@@ -97,6 +98,7 @@ func printKnucs(a kNucArray) {
}
func main() {
+ runtime.GOMAXPROCS(4)
in := bufio.NewReader(os.Stdin)
three := []byte(">THREE ")
for {
diff --git a/gcc/testsuite/go.test/test/bench/pidigits.go b/gcc/testsuite/go.test/test/bench/pidigits.go
index dcfb502ce2a..e59312177f4 100644
--- a/gcc/testsuite/go.test/test/bench/pidigits.go
+++ b/gcc/testsuite/go.test/test/bench/pidigits.go
@@ -49,6 +49,7 @@ var silent = flag.Bool("s", false, "don't print result")
var (
tmp1 = big.NewInt(0)
tmp2 = big.NewInt(0)
+ tmp3 = big.NewInt(0)
y2 = big.NewInt(0)
bigk = big.NewInt(0)
numer = big.NewInt(1)
@@ -80,7 +81,6 @@ func extract_digit() int64 {
}
func next_term(k int64) {
- // TODO(eds) If big.Int ever gets a Scale method, y2 and bigk could be int64
y2.SetInt64(k*2 + 1)
bigk.SetInt64(k)
@@ -92,15 +92,15 @@ func next_term(k int64) {
}
func eliminate_digit(d int64) {
- tmp := big.NewInt(0).Set(denom)
- accum.Sub(accum, tmp.Mul(tmp, big.NewInt(d)))
+ tmp3.SetInt64(d)
+ accum.Sub(accum, tmp3.Mul(denom, tmp3))
accum.Mul(accum, ten)
numer.Mul(numer, ten)
}
func printf(s string, arg ...interface{}) {
if !*silent {
- fmt.Printf(s, arg)
+ fmt.Printf(s, arg...)
}
}
diff --git a/gcc/testsuite/go.test/test/bench/timing.log b/gcc/testsuite/go.test/test/bench/timing.log
index e7b0b48c11f..a967f27d223 100644
--- a/gcc/testsuite/go.test/test/bench/timing.log
+++ b/gcc/testsuite/go.test/test/bench/timing.log
@@ -90,7 +90,7 @@ mandelbrot 5500
gc mandelbrot 74.32u 0.00s 74.35r
gc_B mandelbrot 74.28u 0.01s 74.31r
-meteor 16000
+meteor 2100
# we don't know
gcc -O2 meteor-contest.c 0.10u 0.00s 0.10r
gccgo -O2 meteor-contest.go 0.12u 0.00s 0.14r
@@ -209,7 +209,7 @@ mandelbrot 16000
gc mandelbrot 64.05u 0.02s 64.08r # *** -14%
gc_B mandelbrot 64.10u 0.02s 64.14r # *** -14%
-meteor 16000
+meteor 2100
# we don't know
gcc -O2 meteor-contest.c 0.10u 0.00s 0.10r
gccgo -O2 meteor-contest.go 0.12u 0.00s 0.12r
@@ -307,7 +307,7 @@ mandelbrot 16000
gc mandelbrot 63.31u 0.01s 63.35r # -1%
gc_B mandelbrot 63.29u 0.00s 63.31r # -1%
-meteor 16000
+meteor 2100
# we don't know
gcc -O2 meteor-contest.c 0.10u 0.00s 0.10r
gccgo -O2 meteor-contest.go 0.11u 0.00s 0.12r
@@ -414,7 +414,7 @@ chameneos 6000000
gcc -O2 chameneosredux.c -lpthread 18.00u 303.29s 83.64r
gc chameneosredux 12.10u 0.00s 12.10r # 2.22X faster
-Jan 6, 2009
+Jan 6, 2010
# Long-overdue update. All numbers included in this complete run.
# Some programs (e.g. reverse-complement) rewritten for speed.
@@ -429,7 +429,7 @@ fasta -n 25000000
reverse-complement < output-of-fasta-25000000
gcc -O2 reverse-complement.c 2.00u 0.80s 9.54r
- gccgo -O2 reverse-complement.go 4.57u 0.35s 4.94r # 33% faster
+# gccgo -O2 reverse-complement.go 4.57u 0.35s 4.94r # 33% faster
gc reverse-complement 2.01u 0.38s 2.40r # 3.3X faster
gc_B reverse-complement 1.88u 0.36s 2.24r # 3.2X faster
GOGC=off
@@ -445,7 +445,6 @@ nbody -n 50000000
binary-tree 15 # too slow to use 20
gcc -O2 binary-tree.c -lm 0.86u 0.00s 0.87r
gccgo -O2 binary-tree.go 4.82u 0.41s 5.24r # 2.5X slower
- gccgo -O2 binary-tree-freelist.go 0.00u 0.00s 0.00r
gc binary-tree 7.23u 0.01s 7.25r # # -19%
gc binary-tree-freelist 0.43u 0.00s 0.44r # -9%
@@ -478,7 +477,7 @@ mandelbrot 16000
gc mandelbrot 66.05u 0.00s 66.07r # -3%
gc_B mandelbrot 66.06u 0.00s 66.07r # -3%
-meteor 16000
+meteor 2100
gcc -O2 meteor-contest.c 0.10u 0.00s 0.10r
gccgo -O2 meteor-contest.go 0.12u 0.00s 0.12r
gc meteor-contest 0.17u 0.00s 0.17r
@@ -498,3 +497,180 @@ chameneos 6000000
gcc -O2 chameneosredux.c -lpthread 19.02u 331.08s 90.79r
gc chameneosredux 12.54u 0.00s 12.55r
+Oct 19, 2010
+
+# Another long-overdue update. Some of the code is new; parallel versions
+# of some are added. A few significant improvements.
+
+fasta -n 25000000
+ gcc -O2 fasta.c 4.92u 0.00s 4.93r
+ gccgo -O2 fasta.go 3.31u 0.00s 3.34r # new code
+ gc fasta 3.68u 0.00s 3.69r # 2.5X faster with no code
+ gc_B fasta 3.68u 0.00s 3.69r # 2.3X faster with no code
+
+reverse-complement < output-of-fasta-25000000
+ gcc -O2 reverse-complement.c 1.93u 0.81s 11.24r
+ gccgo -O2 reverse-complement.go 1.58u 0.43s 2.04r # first run with new code?
+ gc reverse-complement 1.84u 0.34s 2.20r # 10% faster
+ gc_B reverse-complement 1.85u 0.32s 2.18r
+
+nbody -n 50000000
+ gcc -O2 nbody.c 21.35u 0.00s 21.36r
+ gccgo -O2 nbody.go 21.62u 0.00s 21.66r # 3.7X faster - why??
+ gc nbody 29.78u 0.00s 29.79r
+ gc_B nbody 29.72u 0.00s 29.72r
+
+binary-tree 15 # too slow to use 20
+ gcc -O2 binary-tree.c -lm 0.86u 0.00s 0.88r
+ gccgo -O2 binary-tree.go 4.05u 0.02s 4.08r # 28% faster
+ gccgo -O2 binary-tree-freelist 0.34u 0.08s 0.34r
+ gc binary-tree 5.94u 0.00s 5.95r # 20% faster
+ gc binary-tree-freelist 0.50u 0.01s 0.54r
+
+fannkuch 12
+ gcc -O2 fannkuch.c 60.45u 0.00s 60.45r
+ gccgo -O2 fannkuch.go 64.64u 0.00s 64.64r
+ gccgo -O2 fannkuch-parallel.go 115.63u 0.00s 31.58r
+ gc fannkuch 126.52u 0.04s 126.68r
+ gc fannkuch-parallel 238.82u 0.10s 65.93r # GOMAXPROCS=4
+ gc_B fannkuch 88.99u 0.00s 89.02r
+
+regex-dna 100000
+ gcc -O2 regex-dna.c -lpcre 0.89u 0.00s 0.89r
+ gc regex-dna 8.99u 0.02s 9.03r
+ gc regex-dna-parallel 8.94u 0.02s 3.68r # GOMAXPROCS=4
+ gc_B regex-dna 9.12u 0.00s 9.14r
+
+spectral-norm 5500
+ gcc -O2 spectral-norm.c -lm 11.55u 0.00s 11.57r
+ gccgo -O2 spectral-norm.go 11.73u 0.00s 11.75r
+ gc spectral-norm 23.74u 0.00s 23.79r
+ gc_B spectral-norm 24.49u 0.02s 24.54r
+
+k-nucleotide 1000000
+ gcc -O2 k-nucleotide.c 11.44u 0.06s 11.50r
+ gccgo -O2 k-nucleotide.go 8.65u 0.04s 8.71r
+ gccgo -O2 k-nucleotide-parallel.go 8.75u 0.03s 2.97r # set GOMAXPROCS=4
+ gc k-nucleotide 14.92u 0.05s 15.01r
+ gc k-nucleotide-parallel 16.96u 0.06s 6.53r # set GOMAXPROCS=4
+ gc_B k-nucleotide 15.97u 0.03s 16.08r
+
+mandelbrot 16000
+ gcc -O2 mandelbrot.c 56.32u 0.00s 56.35r
+ gccgo -O2 mandelbrot.go 55.62u 0.02s 55.77r
+ gc mandelbrot 64.85u 0.01s 64.94r
+ gc_B mandelbrot 65.02u 0.01s 65.14r
+
+meteor 2100
+ gcc -O2 meteor-contest.c 0.10u 0.00s 0.10r
+ gccgo -O2 meteor-contest.go 0.10u 0.00s 0.11r
+ gc meteor-contest 0.17u 0.00s 0.18r
+ gc_B meteor-contest 0.16u 0.00s 0.16r
+
+pidigits 10000
+ gcc -O2 pidigits.c -lgmp 2.58u 0.00s 2.59r
+ gccgo -O2 pidigits.go 14.06u 0.01s 14.09r # first run?
+ gc pidigits 8.47u 0.05s 8.55r # 4.5X faster due to package big
+ gc_B pidigits 8.33u 0.01s 8.36r # 4.5X faster due to package big
+
+threadring 50000000
+ gcc -O2 threadring.c 28.18u 153.19s 186.47r
+ gccgo -O2 threadring.go 110.10u 516.48s 515.25r
+ gc threadring 40.39u 0.00s 40.40r
+
+chameneos 6000000
+ gcc -O2 chameneosredux.c -lpthread 18.20u 301.55s 83.10r
+ gccgo -O2 chameneosredux.go 52.22u 324.54s 201.21r
+ gc chameneosredux 13.52u 0.00s 13.54r
+
+Dec 14, 2010
+
+# Improved regex code (same algorithm) gets ~30%.
+
+regex-dna 100000
+ gcc -O2 regex-dna.c -lpcre 0.77u 0.01s 0.78r
+ gc regex-dna 6.80u 0.00s 6.81r
+ gc regex-dna-parallel 6.82u 0.01s 2.75r
+ gc_B regex-dna 6.69u 0.02s 6.70r
+
+Feb 15, 2011
+
+# Improved GC, still single-threaded but more efficient
+
+fasta -n 25000000
+ gcc -O2 fasta.c 3.40u 0.00s 3.40r
+ gccgo -O2 fasta.go 3.51u 0.00s 3.50r
+ gc fasta 3.66u 0.01s 3.66r
+ gc_B fasta 3.66u 0.00s 3.66r
+
+reverse-complement < output-of-fasta-25000000
+ gcc -O2 reverse-complement.c 1.86u 1.29s 4.93r
+ gccgo -O2 reverse-complement.go 2.18u 0.41s 2.60r
+ gc reverse-complement 1.67u 0.48s 2.15r
+ gc_B reverse-complement 1.71u 0.45s 2.15r
+
+nbody -n 50000000
+ gcc -O2 -lm nbody.c 21.64u 0.00s 21.64r
+ gccgo -O2 nbody.go 21.46u 0.00s 21.45r
+ gc nbody 29.07u 0.00s 29.06r
+ gc_B nbody 31.61u 0.00s 31.61r
+
+binary-tree 15 # too slow to use 20
+ gcc -O2 binary-tree.c -lm 0.88u 0.00s 0.87r
+ gccgo -O2 binary-tree.go 2.74u 0.07s 2.81r
+ gccgo -O2 binary-tree-freelist.go 0.01u 0.00s 0.00r
+ gc binary-tree 4.22u 0.02s 4.24r
+ gc binary-tree-freelist 0.54u 0.02s 0.55r
+
+fannkuch 12
+ gcc -O2 fannkuch.c 57.64u 0.00s 57.64r
+ gccgo -O2 fannkuch.go 65.79u 0.00s 65.82r
+ gccgo -O2 fannkuch-parallel.go 160.91u 0.02s 43.90r
+ gc fannkuch 126.36u 0.03s 126.53r
+ gc fannkuch-parallel 175.23u 0.04s 45.49r
+ gc_B fannkuch 89.23u 0.00s 89.24r
+
+regex-dna 100000
+ gcc -O2 regex-dna.c -lpcre 0.77u 0.01s 0.80r
+ gccgo -O2 regex-dna.go 12.38u 0.10s 12.52r
+ gccgo -O2 regex-dna-parallel.go 43.96u 4.64s 15.11r
+ gc regex-dna 7.03u 0.01s 7.05r
+ gc regex-dna-parallel 6.85u 0.05s 2.70r
+ gc_B regex-dna 6.87u 0.02s 6.89r
+
+spectral-norm 5500
+ gcc -O2 spectral-norm.c -lm 12.29u 0.00s 12.28r
+ gccgo -O2 spectral-norm.go 11.79u 0.00s 11.79r
+ gc spectral-norm 24.00u 0.02s 24.05r
+ gc_B spectral-norm 24.59u 0.01s 24.59r
+
+k-nucleotide 1000000
+ gcc -O2 k-nucleotide.c 9.75u 0.07s 9.82r
+ gccgo -O2 k-nucleotide.go 8.92u 0.06s 8.98r
+ gccgo -O2 k-nucleotide-parallel.go 8.40u 0.04s 2.76r
+ gc k-nucleotide 17.01u 0.03s 17.04r
+ gc k-nucleotide-parallel 16.51u 0.08s 6.21r
+ gc_B k-nucleotide 16.94u 0.08s 17.02r
+
+mandelbrot 16000
+ gcc -O2 mandelbrot.c 54.60u 0.00s 54.66r
+ gccgo -O2 mandelbrot.go 59.38u 0.00s 59.41r
+ gc mandelbrot 64.93u 0.04s 65.08r
+ gc_B mandelbrot 64.85u 0.03s 64.92r
+
+meteor 2098
+ gcc -O2 meteor-contest.c 0.10u 0.01s 0.10r
+ gccgo -O2 meteor-contest.go 0.11u 0.00s 0.11r
+ gc meteor-contest 0.18u 0.00s 0.17r
+ gc_B meteor-contest 0.17u 0.00s 0.16r
+
+pidigits 10000
+ gcc -O2 pidigits.c -lgmp 2.24u 0.00s 2.23r
+ gccgo -O2 pidigits.go 14.05u 0.00s 14.06r
+ gc pidigits 6.34u 0.05s 6.38r
+ gc_B pidigits 6.37u 0.02s 6.38r
+
+threadring 50000000
+ gcc -O2 threadring.c 30.50u 258.05s 325.72r
+ gccgo -O2 threadring.go 92.87u 748.39s 728.46r
+ gc threadring 38.03u 0.01s 38.04r
diff --git a/gcc/testsuite/go.test/test/bench/timing.sh b/gcc/testsuite/go.test/test/bench/timing.sh
index c52c0af94a6..473c9b312f8 100755
--- a/gcc/testsuite/go.test/test/bench/timing.sh
+++ b/gcc/testsuite/go.test/test/bench/timing.sh
@@ -8,6 +8,12 @@ set -e
eval $(gomake --no-print-directory -f ../../src/Make.inc go-env)
PATH=.:$PATH
+havegccgo=false
+if which gccgo >/dev/null 2>&1
+then
+ havegccgo=true
+fi
+
mode=run
case X"$1" in
X-test)
@@ -30,8 +36,6 @@ runonly() {
fi
}
-
-
run() {
if [ $mode = test ]
then
@@ -57,6 +61,10 @@ run() {
fi
return
fi
+ if ! $havegccgo && echo $1 | grep -q '^gccgo '
+ then
+ return
+ fi
echo -n ' '$1' '
$1
shift
@@ -67,7 +75,7 @@ run() {
fasta() {
runonly echo 'fasta -n 25000000'
run 'gcc -O2 fasta.c' a.out 25000000
- #run 'gccgo -O2 fasta.go' a.out -n 25000000 #commented out until WriteString is in bufio
+ run 'gccgo -O2 fasta.go' a.out -n 25000000 #commented out until WriteString is in bufio
run 'gc fasta' $O.out -n 25000000
run 'gc_B fasta' $O.out -n 25000000
}
@@ -85,7 +93,7 @@ revcomp() {
nbody() {
runonly echo 'nbody -n 50000000'
- run 'gcc -O2 nbody.c' a.out 50000000
+ run 'gcc -O2 -lm nbody.c' a.out 50000000
run 'gccgo -O2 nbody.go' a.out -n 50000000
run 'gc nbody' $O.out -n 50000000
run 'gc_B nbody' $O.out -n 50000000
@@ -115,7 +123,8 @@ regexdna() {
runonly a.out 100000 > x
runonly echo 'regex-dna 100000'
run 'gcc -O2 regex-dna.c -lpcre' a.out <x
-# run 'gccgo -O2 regex-dna.go' a.out <x # pages badly; don't run
+ run 'gccgo -O2 regex-dna.go' a.out <x
+ run 'gccgo -O2 regex-dna-parallel.go' a.out <x
run 'gc regex-dna' $O.out <x
run 'gc regex-dna-parallel' $O.out <x
run 'gc_B regex-dna' $O.out <x
@@ -135,8 +144,8 @@ knucleotide() {
runonly a.out 1000000 > x # should be using 25000000
runonly echo 'k-nucleotide 1000000'
run 'gcc -O2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include k-nucleotide.c -lglib-2.0' a.out <x
- run 'gccgo -O2 k-nucleotide.go' a.out <x # warning: pages badly!
- run 'gccgo -O2 k-nucleotide-parallel.go' a.out <x # warning: pages badly!
+ run 'gccgo -O2 k-nucleotide.go' a.out <x
+ run 'gccgo -O2 k-nucleotide-parallel.go' a.out <x
run 'gc k-nucleotide' $O.out <x
run 'gc k-nucleotide-parallel' $O.out <x
run 'gc_B k-nucleotide' $O.out <x
@@ -152,17 +161,17 @@ mandelbrot() {
}
meteor() {
- runonly echo 'meteor 16000'
- run 'gcc -O2 meteor-contest.c' a.out
- run 'gccgo -O2 meteor-contest.go' a.out
- run 'gc meteor-contest' $O.out
- run 'gc_B meteor-contest' $O.out
+ runonly echo 'meteor 2098'
+ run 'gcc -O2 meteor-contest.c' a.out 2098
+ run 'gccgo -O2 meteor-contest.go' a.out -n 2098
+ run 'gc meteor-contest' $O.out -n 2098
+ run 'gc_B meteor-contest' $O.out -n 2098
}
pidigits() {
runonly echo 'pidigits 10000'
run 'gcc -O2 pidigits.c -lgmp' a.out 10000
-# run 'gccgo -O2 pidigits.go' a.out -n 10000 # uncomment when gccgo library updated
+ run 'gccgo -O2 pidigits.go' a.out -n 10000
run 'gc pidigits' $O.out -n 10000
run 'gc_B pidigits' $O.out -n 10000
}
diff --git a/gcc/testsuite/go.test/test/bugs/bug322.dir/lib.go b/gcc/testsuite/go.test/test/bugs/bug322.dir/lib.go
new file mode 100644
index 00000000000..0de56d3d649
--- /dev/null
+++ b/gcc/testsuite/go.test/test/bugs/bug322.dir/lib.go
@@ -0,0 +1,15 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package lib
+
+type T struct {
+ x int // non-exported field
+}
+
+func (t T) M() {
+}
+
+func (t *T) PM() {
+}
diff --git a/gcc/testsuite/go.test/test/bugs/bug322.dir/main.go b/gcc/testsuite/go.test/test/bugs/bug322.dir/main.go
new file mode 100644
index 00000000000..0ab5b32e453
--- /dev/null
+++ b/gcc/testsuite/go.test/test/bugs/bug322.dir/main.go
@@ -0,0 +1,47 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./lib"
+
+type I interface {
+ M()
+}
+
+type PI interface {
+ PM()
+}
+
+func main() {
+ var t lib.T
+ t.M()
+ t.PM()
+
+ // This is still an error.
+ // var i1 I = t
+ // i1.M()
+
+ // This combination is illegal because
+ // PM requires a pointer receiver.
+ // var pi1 PI = t
+ // pi1.PM()
+
+ var pt = &t
+ pt.M()
+ pt.PM()
+
+ var i2 I = pt
+ i2.M()
+
+ var pi2 PI = pt
+ pi2.PM()
+}
+
+/*
+These should not be errors anymore:
+
+bug322.dir/main.go:19: implicit assignment of unexported field 'x' of lib.T in method receiver
+bug322.dir/main.go:32: implicit assignment of unexported field 'x' of lib.T in method receiver
+*/
diff --git a/gcc/testsuite/go.test/test/bugs/bug322.go b/gcc/testsuite/go.test/test/bugs/bug322.go
new file mode 100644
index 00000000000..ad0e62dc8c9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/bugs/bug322.go
@@ -0,0 +1,8 @@
+// $G $D/$F.dir/lib.go && $G $D/$F.dir/main.go && $L main.$A && ./$A.out || echo BUG: fails incorrectly
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test case for issue 1402.
+ignored
diff --git a/gcc/testsuite/go.test/test/bugs/bug324.dir/main.go b/gcc/testsuite/go.test/test/bugs/bug324.dir/main.go
new file mode 100644
index 00000000000..4c1a18d9ca2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/bugs/bug324.dir/main.go
@@ -0,0 +1,48 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "./p"
+)
+
+type Exported interface {
+ private()
+}
+
+type Implementation struct{}
+
+func (p *Implementation) private() { println("main.Implementation.private()") }
+
+
+func main() {
+ // nothing unusual here
+ var x Exported
+ x = new(Implementation)
+ x.private() // main.Implementation.private()
+
+ // same here - should be and is legal
+ var px p.Exported
+ px = p.X
+
+ // this assignment is correctly illegal:
+ // px.private undefined (cannot refer to unexported field or method private)
+ // px.private()
+
+ // this assignment is correctly illegal:
+ // *Implementation does not implement p.Exported (missing p.private method)
+ // px = new(Implementation)
+
+ // this assignment is correctly illegal:
+ // p.Exported does not implement Exported (missing private method)
+ // x = px
+
+ // this assignment unexpectedly compiles and then executes
+ x = px.(Exported)
+
+ // this is a legitimate call, but because of the previous assignment,
+ // it invokes the method private in p!
+ x.private() // p.Implementation.private()
+}
diff --git a/gcc/testsuite/go.test/test/bugs/bug324.dir/p.go b/gcc/testsuite/go.test/test/bugs/bug324.dir/p.go
new file mode 100644
index 00000000000..d1e3b991aad
--- /dev/null
+++ b/gcc/testsuite/go.test/test/bugs/bug324.dir/p.go
@@ -0,0 +1,15 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type Exported interface {
+ private()
+}
+
+type Implementation struct{}
+
+func (p *Implementation) private() { println("p.Implementation.private()") }
+
+var X = new(Implementation)
diff --git a/gcc/testsuite/go.test/test/bugs/bug324.go b/gcc/testsuite/go.test/test/bugs/bug324.go
new file mode 100644
index 00000000000..e188515d772
--- /dev/null
+++ b/gcc/testsuite/go.test/test/bugs/bug324.go
@@ -0,0 +1,8 @@
+// $G $D/$F.dir/p.go && $G $D/$F.dir/main.go && $L main.$A && ! ./$A.out || echo BUG: should fail
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test case for issue 1550
+ignored
diff --git a/gcc/testsuite/go.test/test/chan/doubleselect.go b/gcc/testsuite/go.test/test/chan/doubleselect.go
index 592d2f54a43..3c7412ed6ab 100644
--- a/gcc/testsuite/go.test/test/chan/doubleselect.go
+++ b/gcc/testsuite/go.test/test/chan/doubleselect.go
@@ -21,6 +21,8 @@ var iterations *int = flag.Int("n", 100000, "number of iterations")
func sender(n int, c1, c2, c3, c4 chan<- int) {
defer close(c1)
defer close(c2)
+ defer close(c3)
+ defer close(c4)
for i := 0; i < n; i++ {
select {
@@ -35,26 +37,18 @@ func sender(n int, c1, c2, c3, c4 chan<- int) {
// mux receives the values from sender and forwards them onto another channel.
// It would be simplier to just have sender's four cases all be the same
// channel, but this doesn't actually trigger the bug.
-func mux(out chan<- int, in <-chan int) {
- for {
- v := <-in
- if closed(in) {
- close(out)
- break
- }
+func mux(out chan<- int, in <-chan int, done chan<- bool) {
+ for v := range in {
out <- v
}
+ done <- true
}
// recver gets a steam of values from the four mux's and checks for duplicates.
func recver(in <-chan int) {
seen := make(map[int]bool)
- for {
- v := <-in
- if closed(in) {
- break
- }
+ for v := range in {
if _, ok := seen[v]; ok {
println("got duplicate value: ", v)
panic("fail")
@@ -70,15 +64,23 @@ func main() {
c2 := make(chan int)
c3 := make(chan int)
c4 := make(chan int)
+ done := make(chan bool)
cmux := make(chan int)
go sender(*iterations, c1, c2, c3, c4)
- go mux(cmux, c1)
- go mux(cmux, c2)
- go mux(cmux, c3)
- go mux(cmux, c4)
+ go mux(cmux, c1, done)
+ go mux(cmux, c2, done)
+ go mux(cmux, c3, done)
+ go mux(cmux, c4, done)
+ go func() {
+ <-done
+ <-done
+ <-done
+ <-done
+ close(cmux)
+ }()
// We keep the recver because it might catch more bugs in the future.
// However, the result of the bug linked to at the top is that we'll
- // end up panicing with: "throw: bad g->status in ready".
+ // end up panicking with: "throw: bad g->status in ready".
recver(cmux)
print("PASS\n")
}
diff --git a/gcc/testsuite/go.test/test/chan/nonblock.go b/gcc/testsuite/go.test/test/chan/nonblock.go
index 52f04bfb12f..33afb329165 100644
--- a/gcc/testsuite/go.test/test/chan/nonblock.go
+++ b/gcc/testsuite/go.test/test/chan/nonblock.go
@@ -76,7 +76,6 @@ func main() {
var i64 int64
var b bool
var s string
- var ok bool
var sync = make(chan bool)
@@ -86,35 +85,45 @@ func main() {
cb := make(chan bool, buffer)
cs := make(chan string, buffer)
- i32, ok = <-c32
- if ok {
+ select {
+ case i32 = <-c32:
panic("blocked i32sender")
+ default:
}
- i64, ok = <-c64
- if ok {
+ select {
+ case i64 = <-c64:
panic("blocked i64sender")
+ default:
}
- b, ok = <-cb
- if ok {
+ select {
+ case b = <-cb:
panic("blocked bsender")
+ default:
}
- s, ok = <-cs
- if ok {
+ select {
+ case s = <-cs:
panic("blocked ssender")
+ default:
}
go i32receiver(c32, sync)
try := 0
- for !(c32 <- 123) {
- try++
- if try > maxTries {
- println("i32receiver buffer=", buffer)
- panic("fail")
+ Send32:
+ for {
+ select {
+ case c32 <- 123:
+ break Send32
+ default:
+ try++
+ if try > maxTries {
+ println("i32receiver buffer=", buffer)
+ panic("fail")
+ }
+ sleep()
}
- sleep()
}
<-sync
@@ -123,13 +132,19 @@ func main() {
<-sync
}
try = 0
- for i32, ok = <-c32; !ok; i32, ok = <-c32 {
- try++
- if try > maxTries {
- println("i32sender buffer=", buffer)
- panic("fail")
+ Recv32:
+ for {
+ select {
+ case i32 = <-c32:
+ break Recv32
+ default:
+ try++
+ if try > maxTries {
+ println("i32sender buffer=", buffer)
+ panic("fail")
+ }
+ sleep()
}
- sleep()
}
if i32 != 234 {
panic("i32sender value")
@@ -140,12 +155,18 @@ func main() {
go i64receiver(c64, sync)
try = 0
- for !(c64 <- 123456) {
- try++
- if try > maxTries {
- panic("i64receiver")
+ Send64:
+ for {
+ select {
+ case c64 <- 123456:
+ break Send64
+ default:
+ try++
+ if try > maxTries {
+ panic("i64receiver")
+ }
+ sleep()
}
- sleep()
}
<-sync
@@ -154,12 +175,18 @@ func main() {
<-sync
}
try = 0
- for i64, ok = <-c64; !ok; i64, ok = <-c64 {
- try++
- if try > maxTries {
- panic("i64sender")
+ Recv64:
+ for {
+ select {
+ case i64 = <-c64:
+ break Recv64
+ default:
+ try++
+ if try > maxTries {
+ panic("i64sender")
+ }
+ sleep()
}
- sleep()
}
if i64 != 234567 {
panic("i64sender value")
@@ -170,12 +197,18 @@ func main() {
go breceiver(cb, sync)
try = 0
- for !(cb <- true) {
- try++
- if try > maxTries {
- panic("breceiver")
+ SendBool:
+ for {
+ select {
+ case cb <- true:
+ break SendBool
+ default:
+ try++
+ if try > maxTries {
+ panic("breceiver")
+ }
+ sleep()
}
- sleep()
}
<-sync
@@ -184,12 +217,18 @@ func main() {
<-sync
}
try = 0
- for b, ok = <-cb; !ok; b, ok = <-cb {
- try++
- if try > maxTries {
- panic("bsender")
+ RecvBool:
+ for {
+ select {
+ case b = <-cb:
+ break RecvBool
+ default:
+ try++
+ if try > maxTries {
+ panic("bsender")
+ }
+ sleep()
}
- sleep()
}
if !b {
panic("bsender value")
@@ -200,12 +239,18 @@ func main() {
go sreceiver(cs, sync)
try = 0
- for !(cs <- "hello") {
- try++
- if try > maxTries {
- panic("sreceiver")
+ SendString:
+ for {
+ select {
+ case cs <- "hello":
+ break SendString
+ default:
+ try++
+ if try > maxTries {
+ panic("sreceiver")
+ }
+ sleep()
}
- sleep()
}
<-sync
@@ -214,12 +259,18 @@ func main() {
<-sync
}
try = 0
- for s, ok = <-cs; !ok; s, ok = <-cs {
- try++
- if try > maxTries {
- panic("ssender")
+ RecvString:
+ for {
+ select {
+ case s = <-cs:
+ break RecvString
+ default:
+ try++
+ if try > maxTries {
+ panic("ssender")
+ }
+ sleep()
}
- sleep()
}
if s != "hello again" {
panic("ssender value")
diff --git a/gcc/testsuite/go.test/test/chan/perm.go b/gcc/testsuite/go.test/test/chan/perm.go
index d08c035193d..038ff94e369 100644
--- a/gcc/testsuite/go.test/test/chan/perm.go
+++ b/gcc/testsuite/go.test/test/chan/perm.go
@@ -9,49 +9,43 @@ package main
var (
cr <-chan int
cs chan<- int
- c chan int
+ c chan int
)
func main() {
- cr = c // ok
- cs = c // ok
- c = cr // ERROR "illegal types|incompatible|cannot"
- c = cs // ERROR "illegal types|incompatible|cannot"
- cr = cs // ERROR "illegal types|incompatible|cannot"
- cs = cr // ERROR "illegal types|incompatible|cannot"
-
- c <- 0 // ok
- ok := c <- 0 // ok
- _ = ok
- <-c // ok
+ cr = c // ok
+ cs = c // ok
+ c = cr // ERROR "illegal types|incompatible|cannot"
+ c = cs // ERROR "illegal types|incompatible|cannot"
+ cr = cs // ERROR "illegal types|incompatible|cannot"
+ cs = cr // ERROR "illegal types|incompatible|cannot"
+
+ c <- 0 // ok
+ <-c // ok
x, ok := <-c // ok
_, _ = x, ok
- cr <- 0 // ERROR "send"
- ok = cr <- 0 // ERROR "send"
- _ = ok
- <-cr // ok
+ cr <- 0 // ERROR "send"
+ <-cr // ok
x, ok = <-cr // ok
_, _ = x, ok
- cs <- 0 // ok
- ok = cs <- 0 // ok
- _ = ok
- <-cs // ERROR "receive"
+ cs <- 0 // ok
+ <-cs // ERROR "receive"
x, ok = <-cs // ERROR "receive"
_, _ = x, ok
select {
- case c <- 0: // ok
- case x := <-c: // ok
+ case c <- 0: // ok
+ case x := <-c: // ok
_ = x
- case cr <- 0: // ERROR "send"
- case x := <-cr: // ok
+ case cr <- 0: // ERROR "send"
+ case x := <-cr: // ok
_ = x
- case cs <- 0: // ok
- case x := <-cs: // ERROR "receive"
+ case cs <- 0: // ok
+ case x := <-cs: // ERROR "receive"
_ = x
}
}
diff --git a/gcc/testsuite/go.test/test/chan/select3.go b/gcc/testsuite/go.test/test/chan/select3.go
index a1a2ef50b56..b4e8f8e4bf9 100644
--- a/gcc/testsuite/go.test/test/chan/select3.go
+++ b/gcc/testsuite/go.test/test/chan/select3.go
@@ -88,22 +88,22 @@ func main() {
ch <- 7
})
- // receiving (a small number of times) from a closed channel never blocks
+ // receiving from a closed channel never blocks
testBlock(never, func() {
for i := 0; i < 10; i++ {
if <-closedch != 0 {
panic("expected zero value when reading from closed channel")
}
+ if x, ok := <-closedch; x != 0 || ok {
+ println("closedch:", x, ok)
+ panic("expected 0, false from closed channel")
+ }
}
})
- // sending (a small number of times) to a closed channel is not specified
- // but the current implementation doesn't block: test that different
- // implementations behave the same
- testBlock(never, func() {
- for i := 0; i < 10; i++ {
- closedch <- 7
- }
+ // sending to a closed channel panics.
+ testPanic(always, func() {
+ closedch <- 7
})
// receiving from a non-ready channel always blocks
@@ -189,7 +189,7 @@ func main() {
}
})
- // selects with closed channels don't block
+ // selects with closed channels behave like ordinary operations
testBlock(never, func() {
select {
case <-closedch:
@@ -197,7 +197,28 @@ func main() {
})
testBlock(never, func() {
select {
+ case x := <-closedch:
+ _ = x
+ }
+ })
+ testBlock(never, func() {
+ select {
+ case x, ok := <-closedch:
+ _, _ = x, ok
+ }
+ })
+ testPanic(always, func() {
+ select {
case closedch <- 7:
}
})
+
+ // select should not get confused if it sees itself
+ testBlock(always, func() {
+ c := make(chan int)
+ select {
+ case c <- 1:
+ case <-c:
+ }
+ })
}
diff --git a/gcc/testsuite/go.test/test/chan/select4.go b/gcc/testsuite/go.test/test/chan/select4.go
new file mode 100644
index 00000000000..46618ac8812
--- /dev/null
+++ b/gcc/testsuite/go.test/test/chan/select4.go
@@ -0,0 +1,25 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out
+
+package main
+
+func f() *int {
+ println("BUG: called f")
+ return new(int)
+}
+
+func main() {
+ var x struct {
+ a int
+ }
+ c := make(chan int, 1)
+ c1 := make(chan int)
+ c <- 42
+ select {
+ case *f() = <-c1:
+ // nothing
+ case x.a = <-c:
+ if x.a != 42 {
+ println("BUG:", x.a)
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/chan/select5.go b/gcc/testsuite/go.test/test/chan/select5.go
new file mode 100644
index 00000000000..e7ca9e015c1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/chan/select5.go
@@ -0,0 +1,482 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out >tmp.go &&
+// $G tmp.go && $L tmp.$A && ./$A.out || echo BUG: select5
+// rm -f tmp.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Generate test of channel operations and simple selects.
+// Only doing one real send or receive at a time, but phrased
+// in various ways that the compiler may or may not rewrite
+// into simpler expressions.
+
+package main
+
+import (
+ "bufio"
+ "fmt"
+ "io"
+ "os"
+ "template"
+)
+
+func main() {
+ out := bufio.NewWriter(os.Stdout)
+ fmt.Fprintln(out, header)
+ a := new(arg)
+
+ // Generate each kind of test as a separate function to avoid
+ // hitting the 6g optimizer with one enormous function.
+ // If we name all the functions init we don't have to
+ // maintain a list of which ones to run.
+ do := func(t *template.Template) {
+ fmt.Fprintln(out, `func init() {`)
+ for ; next(); a.reset() {
+ run(t, a, out)
+ }
+ fmt.Fprintln(out, `}`)
+ }
+
+ do(recv)
+ do(send)
+ do(recvOrder)
+ do(sendOrder)
+ do(nonblock)
+
+ fmt.Fprintln(out, "//", a.nreset, "cases")
+ out.Flush()
+}
+
+func run(t *template.Template, a interface{}, out io.Writer) {
+ if err := t.Execute(out, a); err != nil {
+ panic(err)
+ }
+}
+
+type arg struct{
+ def bool
+ nreset int
+}
+
+func (a *arg) Maybe() bool {
+ return maybe()
+}
+
+func (a *arg) MaybeDefault() bool {
+ if a.def {
+ return false
+ }
+ a.def = maybe()
+ return a.def
+}
+
+func (a *arg) MustDefault() bool {
+ return !a.def
+}
+
+func (a *arg) reset() {
+ a.def = false
+ a.nreset++
+}
+
+const header = `// GENERATED BY select5.go; DO NOT EDIT
+
+package main
+
+// channel is buffered so test is single-goroutine.
+// we are not interested in the concurrency aspects
+// of select, just testing that the right calls happen.
+var c = make(chan int, 1)
+var nilch chan int
+var n = 1
+var x int
+var i interface{}
+var dummy = make(chan int)
+var m = make(map[int]int)
+var order = 0
+
+func f(p *int) *int {
+ return p
+}
+
+// check order of operations by ensuring that
+// successive calls to checkorder have increasing o values.
+func checkorder(o int) {
+ if o <= order {
+ println("invalid order", o, "after", order)
+ panic("order")
+ }
+ order = o
+}
+
+func fc(c chan int, o int) chan int {
+ checkorder(o)
+ return c
+}
+
+func fp(p *int, o int) *int {
+ checkorder(o)
+ return p
+}
+
+func fn(n, o int) int {
+ checkorder(o)
+ return n
+}
+
+func die(x int) {
+ println("have", x, "want", n)
+ panic("chan")
+}
+
+func main() {
+ // everything happens in init funcs
+}
+`
+
+func parse(s string) *template.Template {
+ t := template.New(nil)
+ t.SetDelims("〈", "〉")
+ if err := t.Parse(s); err != nil {
+ panic(s)
+ }
+ return t
+}
+
+var recv = parse(`
+ 〈# Send n, receive it one way or another into x, check that they match.〉
+ c <- n
+ 〈.section Maybe〉
+ x = <-c
+ 〈.or〉
+ select {
+ 〈# Blocking or non-blocking, before the receive.〉
+ 〈# The compiler implements two-case select where one is default with custom code,〉
+ 〈# so test the default branch both before and after the send.〉
+ 〈.section MaybeDefault〉
+ default:
+ panic("nonblock")
+ 〈.end〉
+ 〈# Receive from c. Different cases are direct, indirect, :=, interface, and map assignment.〉
+ 〈.section Maybe〉
+ case x = <-c:
+ 〈.or〉〈.section Maybe〉
+ case *f(&x) = <-c:
+ 〈.or〉〈.section Maybe〉
+ case y := <-c:
+ x = y
+ 〈.or〉〈.section Maybe〉
+ case i = <-c:
+ x = i.(int)
+ 〈.or〉
+ case m[13] = <-c:
+ x = m[13]
+ 〈.end〉〈.end〉〈.end〉〈.end〉
+ 〈# Blocking or non-blocking again, after the receive.〉
+ 〈.section MaybeDefault〉
+ default:
+ panic("nonblock")
+ 〈.end〉
+ 〈# Dummy send, receive to keep compiler from optimizing select.〉
+ 〈.section Maybe〉
+ case dummy <- 1:
+ panic("dummy send")
+ 〈.end〉
+ 〈.section Maybe〉
+ case <-dummy:
+ panic("dummy receive")
+ 〈.end〉
+ 〈# Nil channel send, receive to keep compiler from optimizing select.〉
+ 〈.section Maybe〉
+ case nilch <- 1:
+ panic("nilch send")
+ 〈.end〉
+ 〈.section Maybe〉
+ case <-nilch:
+ panic("nilch recv")
+ 〈.end〉
+ }
+ 〈.end〉
+ if x != n {
+ die(x)
+ }
+ n++
+`)
+
+var recvOrder = parse(`
+ 〈# Send n, receive it one way or another into x, check that they match.〉
+ 〈# Check order of operations along the way by calling functions that check〉
+ 〈# that the argument sequence is strictly increasing.〉
+ order = 0
+ c <- n
+ 〈.section Maybe〉
+ 〈# Outside of select, left-to-right rule applies.〉
+ 〈# (Inside select, assignment waits until case is chosen,〉
+ 〈# so right hand side happens before anything on left hand side.〉
+ *fp(&x, 1) = <-fc(c, 2)
+ 〈.or〉〈.section Maybe〉
+ m[fn(13, 1)] = <-fc(c, 2)
+ x = m[13]
+ 〈.or〉
+ select {
+ 〈# Blocking or non-blocking, before the receive.〉
+ 〈# The compiler implements two-case select where one is default with custom code,〉
+ 〈# so test the default branch both before and after the send.〉
+ 〈.section MaybeDefault〉
+ default:
+ panic("nonblock")
+ 〈.end〉
+ 〈# Receive from c. Different cases are direct, indirect, :=, interface, and map assignment.〉
+ 〈.section Maybe〉
+ case *fp(&x, 100) = <-fc(c, 1):
+ 〈.or〉〈.section Maybe〉
+ case y := <-fc(c, 1):
+ x = y
+ 〈.or〉〈.section Maybe〉
+ case i = <-fc(c, 1):
+ x = i.(int)
+ 〈.or〉
+ case m[fn(13, 100)] = <-fc(c, 1):
+ x = m[13]
+ 〈.end〉〈.end〉〈.end〉
+ 〈# Blocking or non-blocking again, after the receive.〉
+ 〈.section MaybeDefault〉
+ default:
+ panic("nonblock")
+ 〈.end〉
+ 〈# Dummy send, receive to keep compiler from optimizing select.〉
+ 〈.section Maybe〉
+ case fc(dummy, 2) <- fn(1, 3):
+ panic("dummy send")
+ 〈.end〉
+ 〈.section Maybe〉
+ case <-fc(dummy, 4):
+ panic("dummy receive")
+ 〈.end〉
+ 〈# Nil channel send, receive to keep compiler from optimizing select.〉
+ 〈.section Maybe〉
+ case fc(nilch, 5) <- fn(1, 6):
+ panic("nilch send")
+ 〈.end〉
+ 〈.section Maybe〉
+ case <-fc(nilch, 7):
+ panic("nilch recv")
+ 〈.end〉
+ }
+ 〈.end〉〈.end〉
+ if x != n {
+ die(x)
+ }
+ n++
+`)
+
+var send = parse(`
+ 〈# Send n one way or another, receive it into x, check that they match.〉
+ 〈.section Maybe〉
+ c <- n
+ 〈.or〉
+ select {
+ 〈# Blocking or non-blocking, before the receive (same reason as in recv).〉
+ 〈.section MaybeDefault〉
+ default:
+ panic("nonblock")
+ 〈.end〉
+ 〈# Send c <- n. No real special cases here, because no values come back〉
+ 〈# from the send operation.〉
+ case c <- n:
+ 〈# Blocking or non-blocking.〉
+ 〈.section MaybeDefault〉
+ default:
+ panic("nonblock")
+ 〈.end〉
+ 〈# Dummy send, receive to keep compiler from optimizing select.〉
+ 〈.section Maybe〉
+ case dummy <- 1:
+ panic("dummy send")
+ 〈.end〉
+ 〈.section Maybe〉
+ case <-dummy:
+ panic("dummy receive")
+ 〈.end〉
+ 〈# Nil channel send, receive to keep compiler from optimizing select.〉
+ 〈.section Maybe〉
+ case nilch <- 1:
+ panic("nilch send")
+ 〈.end〉
+ 〈.section Maybe〉
+ case <-nilch:
+ panic("nilch recv")
+ 〈.end〉
+ }
+ 〈.end〉
+ x = <-c
+ if x != n {
+ die(x)
+ }
+ n++
+`)
+
+var sendOrder = parse(`
+ 〈# Send n one way or another, receive it into x, check that they match.〉
+ 〈# Check order of operations along the way by calling functions that check〉
+ 〈# that the argument sequence is strictly increasing.〉
+ order = 0
+ 〈.section Maybe〉
+ fc(c, 1) <- fn(n, 2)
+ 〈.or〉
+ select {
+ 〈# Blocking or non-blocking, before the receive (same reason as in recv).〉
+ 〈.section MaybeDefault〉
+ default:
+ panic("nonblock")
+ 〈.end〉
+ 〈# Send c <- n. No real special cases here, because no values come back〉
+ 〈# from the send operation.〉
+ case fc(c, 1) <- fn(n, 2):
+ 〈# Blocking or non-blocking.〉
+ 〈.section MaybeDefault〉
+ default:
+ panic("nonblock")
+ 〈.end〉
+ 〈# Dummy send, receive to keep compiler from optimizing select.〉
+ 〈.section Maybe〉
+ case fc(dummy, 3) <- fn(1, 4):
+ panic("dummy send")
+ 〈.end〉
+ 〈.section Maybe〉
+ case <-fc(dummy, 5):
+ panic("dummy receive")
+ 〈.end〉
+ 〈# Nil channel send, receive to keep compiler from optimizing select.〉
+ 〈.section Maybe〉
+ case fc(nilch, 6) <- fn(1, 7):
+ panic("nilch send")
+ 〈.end〉
+ 〈.section Maybe〉
+ case <-fc(nilch, 8):
+ panic("nilch recv")
+ 〈.end〉
+ }
+ 〈.end〉
+ x = <-c
+ if x != n {
+ die(x)
+ }
+ n++
+`)
+
+var nonblock = parse(`
+ x = n
+ 〈# Test various combinations of non-blocking operations.〉
+ 〈# Receive assignments must not edit or even attempt to compute the address of the lhs.〉
+ select {
+ 〈.section MaybeDefault〉
+ default:
+ 〈.end〉
+ 〈.section Maybe〉
+ case dummy <- 1:
+ panic("dummy <- 1")
+ 〈.end〉
+ 〈.section Maybe〉
+ case nilch <- 1:
+ panic("nilch <- 1")
+ 〈.end〉
+ 〈.section Maybe〉
+ case <-dummy:
+ panic("<-dummy")
+ 〈.end〉
+ 〈.section Maybe〉
+ case x = <-dummy:
+ panic("<-dummy x")
+ 〈.end〉
+ 〈.section Maybe〉
+ case **(**int)(nil) = <-dummy:
+ panic("<-dummy (and didn't crash saving result!)")
+ 〈.end〉
+ 〈.section Maybe〉
+ case <-nilch:
+ panic("<-nilch")
+ 〈.end〉
+ 〈.section Maybe〉
+ case x = <-nilch:
+ panic("<-nilch x")
+ 〈.end〉
+ 〈.section Maybe〉
+ case **(**int)(nil) = <-nilch:
+ panic("<-nilch (and didn't crash saving result!)")
+ 〈.end〉
+ 〈.section MustDefault〉
+ default:
+ 〈.end〉
+ }
+ if x != n {
+ die(x)
+ }
+ n++
+`)
+
+// Code for enumerating all possible paths through
+// some logic. The logic should call choose(n) when
+// it wants to choose between n possibilities.
+// On successive runs through the logic, choose(n)
+// will return 0, 1, ..., n-1. The helper maybe() is
+// similar but returns true and then false.
+//
+// Given a function gen that generates an output
+// using choose and maybe, code can generate all
+// possible outputs using
+//
+// for next() {
+// gen()
+// }
+
+type choice struct {
+ i, n int
+}
+
+var choices []choice
+var cp int = -1
+
+func maybe() bool {
+ return choose(2) == 0
+}
+
+func choose(n int) int {
+ if cp >= len(choices) {
+ // never asked this before: start with 0.
+ choices = append(choices, choice{0, n})
+ cp = len(choices)
+ return 0
+ }
+ // otherwise give recorded answer
+ if n != choices[cp].n {
+ panic("inconsistent choices")
+ }
+ i := choices[cp].i
+ cp++
+ return i
+}
+
+func next() bool {
+ if cp < 0 {
+ // start a new round
+ cp = 0
+ return true
+ }
+
+ // increment last choice sequence
+ cp = len(choices)-1
+ for cp >= 0 && choices[cp].i == choices[cp].n-1 {
+ cp--
+ }
+ if cp < 0 {
+ choices = choices[:0]
+ return false
+ }
+ choices[cp].i++
+ choices = choices[:cp+1]
+ cp = 0
+ return true
+}
+
diff --git a/gcc/testsuite/go.test/test/chan/sendstmt.go b/gcc/testsuite/go.test/test/chan/sendstmt.go
new file mode 100644
index 00000000000..ee6f765cf88
--- /dev/null
+++ b/gcc/testsuite/go.test/test/chan/sendstmt.go
@@ -0,0 +1,37 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test various parsing cases that are a little
+// different now that send is a statement, not a expression.
+
+package main
+
+func main() {
+ chanchan()
+ sendprec()
+}
+
+func chanchan() {
+ cc := make(chan chan int, 1)
+ c := make(chan int, 1)
+ cc <- c
+ select {
+ case <-cc <- 2:
+ default:
+ panic("nonblock")
+ }
+ if <-c != 2 {
+ panic("bad receive")
+ }
+}
+
+func sendprec() {
+ c := make(chan bool, 1)
+ c <- false || true // not a syntax error: same as c <- (false || true)
+ if !<-c {
+ panic("sent false")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/closedchan.go b/gcc/testsuite/go.test/test/closedchan.go
index c7c759be3b3..95314b3345e 100644
--- a/gcc/testsuite/go.test/test/closedchan.go
+++ b/gcc/testsuite/go.test/test/closedchan.go
@@ -4,7 +4,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// Test close(c), closed(c).
+// Test close(c), receive of closed channel.
//
// TODO(rsc): Doesn't check behavior of close(c) when there
// are blocked senders/receivers.
@@ -14,21 +14,29 @@ package main
type Chan interface {
Send(int)
Nbsend(int) bool
- Recv() int
+ Recv() (int)
Nbrecv() (int, bool)
+ Recv2() (int, bool)
+ Nbrecv2() (int, bool, bool)
Close()
- Closed() bool
Impl() string
}
-// direct channel operations
+// direct channel operations when possible
type XChan chan int
+
func (c XChan) Send(x int) {
c <- x
}
func (c XChan) Nbsend(x int) bool {
- return c <- x
+ select {
+ case c <- x:
+ return true
+ default:
+ return false
+ }
+ panic("nbsend")
}
func (c XChan) Recv() int {
@@ -36,16 +44,32 @@ func (c XChan) Recv() int {
}
func (c XChan) Nbrecv() (int, bool) {
+ select {
+ case x := <-c:
+ return x, true
+ default:
+ return 0, false
+ }
+ panic("nbrecv")
+}
+
+func (c XChan) Recv2() (int, bool) {
x, ok := <-c
return x, ok
}
-func (c XChan) Close() {
- close(c)
+func (c XChan) Nbrecv2() (int, bool, bool) {
+ select {
+ case x, ok := <-c:
+ return x, ok, true
+ default:
+ return 0, false, false
+ }
+ panic("nbrecv2")
}
-func (c XChan) Closed() bool {
- return closed(c)
+func (c XChan) Close() {
+ close(c)
}
func (c XChan) Impl() string {
@@ -54,6 +78,7 @@ func (c XChan) Impl() string {
// indirect operations via select
type SChan chan int
+
func (c SChan) Send(x int) {
select {
case c <- x:
@@ -62,10 +87,10 @@ func (c SChan) Send(x int) {
func (c SChan) Nbsend(x int) bool {
select {
- case c <- x:
- return true
default:
return false
+ case c <- x:
+ return true
}
panic("nbsend")
}
@@ -80,10 +105,28 @@ func (c SChan) Recv() int {
func (c SChan) Nbrecv() (int, bool) {
select {
+ default:
+ return 0, false
case x := <-c:
return x, true
+ }
+ panic("nbrecv")
+}
+
+func (c SChan) Recv2() (int, bool) {
+ select {
+ case x, ok := <-c:
+ return x, ok
+ }
+ panic("recv")
+}
+
+func (c SChan) Nbrecv2() (int, bool, bool) {
+ select {
default:
- return 0, false
+ return 0, false, false
+ case x, ok := <-c:
+ return x, ok, true
}
panic("nbrecv")
}
@@ -92,65 +135,128 @@ func (c SChan) Close() {
close(c)
}
-func (c SChan) Closed() bool {
- return closed(c)
-}
-
func (c SChan) Impl() string {
return "(select)"
}
-func test1(c Chan) {
- // not closed until the close signal (a zero value) has been received.
- if c.Closed() {
- println("test1: Closed before Recv zero:", c.Impl())
+// indirect operations via larger selects
+var dummy = make(chan bool)
+
+type SSChan chan int
+
+func (c SSChan) Send(x int) {
+ select {
+ case c <- x:
+ case <-dummy:
+ }
+}
+
+func (c SSChan) Nbsend(x int) bool {
+ select {
+ default:
+ return false
+ case <-dummy:
+ case c <- x:
+ return true
+ }
+ panic("nbsend")
+}
+
+func (c SSChan) Recv() int {
+ select {
+ case <-dummy:
+ case x := <-c:
+ return x
+ }
+ panic("recv")
+}
+
+func (c SSChan) Nbrecv() (int, bool) {
+ select {
+ case <-dummy:
+ default:
+ return 0, false
+ case x := <-c:
+ return x, true
}
+ panic("nbrecv")
+}
+
+func (c SSChan) Recv2() (int, bool) {
+ select {
+ case <-dummy:
+ case x, ok := <-c:
+ return x, ok
+ }
+ panic("recv")
+}
+
+func (c SSChan) Nbrecv2() (int, bool, bool) {
+ select {
+ case <-dummy:
+ default:
+ return 0, false, false
+ case x, ok := <-c:
+ return x, ok, true
+ }
+ panic("nbrecv")
+}
+
+func (c SSChan) Close() {
+ close(c)
+}
+
+func (c SSChan) Impl() string {
+ return "(select)"
+}
+
+func shouldPanic(f func()) {
+ defer func() {
+ if recover() == nil {
+ panic("did not panic")
+ }
+ }()
+ f()
+}
+
+func test1(c Chan) {
for i := 0; i < 3; i++ {
// recv a close signal (a zero value)
if x := c.Recv(); x != 0 {
- println("test1: recv on closed got non-zero:", x, c.Impl())
+ println("test1: recv on closed:", x, c.Impl())
}
-
- // should now be closed.
- if !c.Closed() {
- println("test1: not closed after recv zero", c.Impl())
+ if x, ok := c.Recv2(); x != 0 || ok {
+ println("test1: recv2 on closed:", x, ok, c.Impl())
}
- // should work with ,ok: received a value without blocking, so ok == true.
- x, ok := c.Nbrecv()
- if !ok {
- println("test1: recv on closed got not ok", c.Impl())
+ // should work with select: received a value without blocking, so selected == true.
+ x, selected := c.Nbrecv()
+ if x != 0 || !selected {
+ println("test1: recv on closed nb:", x, selected, c.Impl())
}
- if x != 0 {
- println("test1: recv ,ok on closed got non-zero:", x, c.Impl())
+ x, ok, selected := c.Nbrecv2()
+ if x != 0 || ok || !selected {
+ println("test1: recv2 on closed nb:", x, ok, selected, c.Impl())
}
}
// send should work with ,ok too: sent a value without blocking, so ok == true.
- ok := c.Nbsend(1)
- if !ok {
- println("test1: send on closed got not ok", c.Impl())
- }
+ shouldPanic(func() { c.Nbsend(1) })
- // but the value should have been discarded.
+ // the value should have been discarded.
if x := c.Recv(); x != 0 {
println("test1: recv on closed got non-zero after send on closed:", x, c.Impl())
}
// similarly Send.
- c.Send(2)
+ shouldPanic(func() { c.Send(2) })
if x := c.Recv(); x != 0 {
println("test1: recv on closed got non-zero after send on closed:", x, c.Impl())
}
}
func testasync1(c Chan) {
- // not closed until the close signal (a zero value) has been received.
- if c.Closed() {
- println("testasync1: Closed before Recv zero:", c.Impl())
- }
-
// should be able to get the last value via Recv
if x := c.Recv(); x != 1 {
println("testasync1: Recv did not get 1:", x, c.Impl())
@@ -160,19 +266,31 @@ func testasync1(c Chan) {
}
func testasync2(c Chan) {
- // not closed until the close signal (a zero value) has been received.
- if c.Closed() {
- println("testasync2: Closed before Recv zero:", c.Impl())
+ // should be able to get the last value via Recv2
+ if x, ok := c.Recv2(); x != 1 || !ok {
+ println("testasync1: Recv did not get 1, true:", x, ok, c.Impl())
}
+ test1(c)
+}
+
+func testasync3(c Chan) {
// should be able to get the last value via Nbrecv
- if x, ok := c.Nbrecv(); !ok || x != 1 {
- println("testasync2: Nbrecv did not get 1, true:", x, ok, c.Impl())
+ if x, selected := c.Nbrecv(); x != 1 || !selected {
+ println("testasync2: Nbrecv did not get 1, true:", x, selected, c.Impl())
}
test1(c)
}
+func testasync4(c Chan) {
+ // should be able to get the last value via Nbrecv2
+ if x, ok, selected := c.Nbrecv2(); x != 1 || !ok || !selected {
+ println("testasync2: Nbrecv did not get 1, true, true:", x, ok, selected, c.Impl())
+ }
+ test1(c)
+}
+
func closedsync() chan int {
c := make(chan int)
close(c)
@@ -186,12 +304,27 @@ func closedasync() chan int {
return c
}
-func main() {
- test1(XChan(closedsync()))
- test1(SChan(closedsync()))
+var mks = []func(chan int) Chan {
+ func(c chan int) Chan { return XChan(c) },
+ func(c chan int) Chan { return SChan(c) },
+ func(c chan int) Chan { return SSChan(c) },
+}
+
+var testcloseds = []func(Chan) {
+ testasync1,
+ testasync2,
+ testasync3,
+ testasync4,
+}
- testasync1(XChan(closedasync()))
- testasync1(SChan(closedasync()))
- testasync2(XChan(closedasync()))
- testasync2(SChan(closedasync()))
+func main() {
+ for _, mk := range mks {
+ test1(mk(closedsync()))
+ }
+
+ for _, testclosed := range testcloseds {
+ for _, mk := range mks {
+ testclosed(mk(closedasync()))
+ }
+ }
}
diff --git a/gcc/testsuite/go.test/test/closure.go b/gcc/testsuite/go.test/test/closure.go
index 54e4cf8eae3..3033c02ed81 100644
--- a/gcc/testsuite/go.test/test/closure.go
+++ b/gcc/testsuite/go.test/test/closure.go
@@ -98,4 +98,15 @@ func main() {
println("newfunc returned broken funcs")
panic("fail")
}
+
+ ff(1)
+}
+
+func ff(x int) {
+ call(func() {
+ _ = x
+ })
+}
+
+func call(func()) {
}
diff --git a/gcc/testsuite/go.test/test/cmp1.go b/gcc/testsuite/go.test/test/cmp1.go
index db0a486dd33..698544c5821 100644
--- a/gcc/testsuite/go.test/test/cmp1.go
+++ b/gcc/testsuite/go.test/test/cmp1.go
@@ -26,6 +26,8 @@ func istrue(b bool) {
}
}
+type T *int
+
func main() {
var a []int
var b map[string]int
@@ -55,6 +57,24 @@ func main() {
isfalse(ib == id)
istrue(ic == id)
istrue(ie == ie)
+
+ // these are okay because one side of the
+ // comparison need only be assignable to the other.
+ isfalse(a == ib)
+ isfalse(a == ic)
+ isfalse(a == id)
+ isfalse(b == ic)
+ isfalse(b == id)
+ istrue(c == id)
+ istrue(e == ie)
+
+ isfalse(ia == b)
+ isfalse(ia == c)
+ isfalse(ia == d)
+ isfalse(ib == c)
+ isfalse(ib == d)
+ istrue(ic == d)
+ istrue(ie == e)
// 6g used to let this go through as true.
var g uint64 = 123
@@ -73,4 +93,38 @@ func main() {
println("m[ic] = ", m[ic])
panic("bad m[ic]")
}
+
+ // non-interface comparisons
+ {
+ c := make(chan int)
+ c1 := (<-chan int)(c)
+ c2 := (chan<- int)(c)
+ istrue(c == c1)
+ istrue(c == c2)
+ istrue(c1 == c)
+ istrue(c2 == c)
+
+ d := make(chan int)
+ isfalse(c == d)
+ isfalse(d == c)
+ isfalse(d == c1)
+ isfalse(d == c2)
+ isfalse(c1 == d)
+ isfalse(c2 == d)
+ }
+
+ // named types vs not
+ {
+ var x = new(int)
+ var y T
+ var z T = x
+
+ isfalse(x == y)
+ istrue(x == z)
+ isfalse(y == z)
+
+ isfalse(y == x)
+ istrue(z == x)
+ isfalse(z == y)
+ }
}
diff --git a/gcc/testsuite/go.test/test/cmp6.go b/gcc/testsuite/go.test/test/cmp6.go
new file mode 100644
index 00000000000..b3ea8ffebfd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/cmp6.go
@@ -0,0 +1,49 @@
+// errchk $G -e $D/$F.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func use(bool) {}
+
+type T1 *int
+type T2 *int
+
+type T3 struct {}
+
+var t3 T3
+
+func main() {
+ // Arguments to comparison must be
+ // assignable one to the other (or vice versa)
+ // so chan int can be compared against
+ // directional channels but channel of different
+ // direction cannot be compared against each other.
+ var c1 chan <-int
+ var c2 <-chan int
+ var c3 chan int
+
+ use(c1 == c2) // ERROR "invalid operation|incompatible"
+ use(c2 == c1) // ERROR "invalid operation|incompatible"
+ use(c1 == c3)
+ use(c2 == c2)
+ use(c3 == c1)
+ use(c3 == c2)
+
+ // Same applies to named types.
+ var p1 T1
+ var p2 T2
+ var p3 *int
+
+ use(p1 == p2) // ERROR "invalid operation|incompatible"
+ use(p2 == p1) // ERROR "invalid operation|incompatible"
+ use(p1 == p3)
+ use(p2 == p2)
+ use(p3 == p1)
+ use(p3 == p2)
+
+ // Comparison of structs should have a good message
+ use(t3 == t3) // ERROR "struct|expected"
+}
diff --git a/gcc/testsuite/go.test/test/cmplxdivide.c b/gcc/testsuite/go.test/test/cmplxdivide.c
index b3c6055ed23..b340f04d887 100644
--- a/gcc/testsuite/go.test/test/cmplxdivide.c
+++ b/gcc/testsuite/go.test/test/cmplxdivide.c
@@ -72,7 +72,7 @@ main(void)
if(iscnan(n) && d == 0)
q = (NAN+NAN*I) / zero;
- printf("\tTest{cmplx(%s, %s), cmplx(%s, %s), cmplx(%s, %s)},\n",
+ printf("\tTest{complex(%s, %s), complex(%s, %s), complex(%s, %s)},\n",
fmt(creal(n)), fmt(cimag(n)),
fmt(creal(d)), fmt(cimag(d)),
fmt(creal(q)), fmt(cimag(q)));
diff --git a/gcc/testsuite/go.test/test/const1.go b/gcc/testsuite/go.test/test/const1.go
index 6cfcb460b50..67f36e4fdc9 100644
--- a/gcc/testsuite/go.test/test/const1.go
+++ b/gcc/testsuite/go.test/test/const1.go
@@ -78,3 +78,5 @@ func main() {
f(String) // ERROR "convert|wrong type|cannot|incompatible"
f(Bool) // ERROR "convert|wrong type|cannot|incompatible"
}
+
+const ptr = nil // ERROR "const.*nil"
diff --git a/gcc/testsuite/go.test/test/const3.go b/gcc/testsuite/go.test/test/const3.go
index dd5c88958d7..9bba6ced0b8 100644
--- a/gcc/testsuite/go.test/test/const3.go
+++ b/gcc/testsuite/go.test/test/const3.go
@@ -26,4 +26,10 @@ func main() {
println("type info didn't propagate in const: got", s)
panic("fail")
}
+ x := uint(5)
+ y := float64(uint64(1)<<x) // used to fail to compile
+ if y != 32 {
+ println("wrong y", y)
+ panic("fail")
+ }
}
diff --git a/gcc/testsuite/go.test/test/copy.go b/gcc/testsuite/go.test/test/copy.go
index 037d3f41fe6..0b5bddbed5c 100644
--- a/gcc/testsuite/go.test/test/copy.go
+++ b/gcc/testsuite/go.test/test/copy.go
@@ -23,6 +23,15 @@ var input32 = make([]uint32, N)
var output32 = make([]uint32, N)
var input64 = make([]uint64, N)
var output64 = make([]uint64, N)
+var inputS string
+var outputS = make([]uint8, N)
+
+type my8 []uint8
+type my16 []uint16
+type my32 []uint32
+type my32b []uint32
+type my64 []uint64
+type myS string
func u8(i int) uint8 {
i = 'a' + i%26
@@ -64,6 +73,7 @@ func reset() {
for i := range input8 {
input8[i] = u8(in)
output8[i] = u8(out)
+ outputS[i] = u8(out)
input16[i] = u16(in)
output16[i] = u16(out)
input32[i] = u32(in)
@@ -73,6 +83,7 @@ func reset() {
in++
out++
}
+ inputS = string(input8)
}
func clamp(n int) int {
@@ -95,13 +106,15 @@ func ncopied(length, in, out int) int {
func doAllSlices(length, in, out int) {
reset()
- n := copy(output8[out:clamp(out+length)], input8[in:clamp(in+length)])
+ n := copy(my8(output8[out:clamp(out+length)]), input8[in:clamp(in+length)])
verify8(length, in, out, n)
- n = copy(output16[out:clamp(out+length)], input16[in:clamp(in+length)])
+ n = copy(my8(outputS[out:clamp(out+length)]), myS(inputS[in:clamp(in+length)]))
+ verifyS(length, in, out, n)
+ n = copy(my16(output16[out:clamp(out+length)]), input16[in:clamp(in+length)])
verify16(length, in, out, n)
- n = copy(output32[out:clamp(out+length)], input32[in:clamp(in+length)])
+ n = copy(my32(output32[out:clamp(out+length)]), my32b(input32[in:clamp(in+length)]))
verify32(length, in, out, n)
- n = copy(output64[out:clamp(out+length)], input64[in:clamp(in+length)])
+ n = copy(my64(output64[out:clamp(out+length)]), input64[in:clamp(in+length)])
verify64(length, in, out, n)
}
@@ -145,6 +158,46 @@ func verify8(length, in, out, m int) {
}
}
+func badS(state string, i, length, in, out int) {
+ fmt.Printf("%s bad(%d %d %d): %c not %c:\n\t%s\n\t%s\n",
+ state,
+ length, in, out,
+ outputS[i],
+ uint8(i+13),
+ inputS, outputS)
+ os.Exit(1)
+}
+
+func verifyS(length, in, out, m int) {
+ n := ncopied(length, in, out)
+ if m != n {
+ fmt.Printf("count bad(%d %d %d): %d not %d\n", length, in, out, m, n)
+ return
+ }
+ // before
+ var i int
+ for i = 0; i < out; i++ {
+ if outputS[i] != u8(i+13) {
+ badS("beforeS", i, length, in, out)
+ return
+ }
+ }
+ // copied part
+ for ; i < out+n; i++ {
+ if outputS[i] != u8(i+in-out) {
+ badS("copiedS", i, length, in, out)
+ return
+ }
+ }
+ // after
+ for ; i < len(outputS); i++ {
+ if outputS[i] != u8(i+13) {
+ badS("afterS", i, length, in, out)
+ return
+ }
+ }
+}
+
func bad16(state string, i, length, in, out int) {
fmt.Printf("%s bad(%d %d %d): %x not %x:\n\t%v\n\t%v\n",
state,
diff --git a/gcc/testsuite/go.test/test/ddd1.go b/gcc/testsuite/go.test/test/ddd1.go
index 6f714c078aa..ff6342843a9 100644
--- a/gcc/testsuite/go.test/test/ddd1.go
+++ b/gcc/testsuite/go.test/test/ddd1.go
@@ -6,6 +6,8 @@
package main
+import "unsafe"
+
func sum(args ...int) int { return 0 }
var (
@@ -26,3 +28,19 @@ var (
_ = funny(nil, nil)
_ = funny([]T{}) // ok because []T{} is a T; passes []T{[]T{}}
)
+
+func bad(args ...int) {
+ print(1, 2, args...) // ERROR "[.][.][.]"
+ println(args...) // ERROR "[.][.][.]"
+ ch := make(chan int)
+ close(ch...) // ERROR "[.][.][.]"
+ _ = len(args...) // ERROR "[.][.][.]"
+ _ = new(int...) // ERROR "[.][.][.]"
+ n := 10
+ _ = make([]byte, n...) // ERROR "[.][.][.]"
+ // TODO(rsc): enable after gofmt bug is fixed
+ // _ = make([]byte, 10 ...) // error "[.][.][.]"
+ var x int
+ _ = unsafe.Pointer(&x...) // ERROR "[.][.][.]"
+ _ = unsafe.Sizeof(x...) // ERROR "[.][.][.]"
+}
diff --git a/gcc/testsuite/go.test/test/defer.go b/gcc/testsuite/go.test/test/defer.go
index 8b8312235d1..bef8fbe26a6 100644
--- a/gcc/testsuite/go.test/test/defer.go
+++ b/gcc/testsuite/go.test/test/defer.go
@@ -26,7 +26,7 @@ func test1() {
}
}
-func addDotDotDot(v ...interface{}) { result += fmt.Sprint(v) }
+func addDotDotDot(v ...interface{}) { result += fmt.Sprint(v...) }
func test2helper() {
for i := 0; i < 10; i++ {
diff --git a/gcc/testsuite/go.test/test/env.go b/gcc/testsuite/go.test/test/env.go
index 7646e07dd68..28113bcb062 100644
--- a/gcc/testsuite/go.test/test/env.go
+++ b/gcc/testsuite/go.test/test/env.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # NaCl runner does not expose environment
// $G $F.go && $L $F.$A && ./$A.out
// Copyright 2009 The Go Authors. All rights reserved.
@@ -7,7 +6,10 @@
package main
-import os "os"
+import (
+ "os"
+ "runtime"
+)
func main() {
ga, e0 := os.Getenverror("GOARCH")
@@ -15,8 +17,8 @@ func main() {
print("$GOARCH: ", e0.String(), "\n")
os.Exit(1)
}
- if ga != "amd64" && ga != "386" && ga != "arm" {
- print("$GOARCH=", ga, "\n")
+ if ga != runtime.GOARCH {
+ print("$GOARCH=", ga, "!= runtime.GOARCH=", runtime.GOARCH, "\n")
os.Exit(1)
}
xxx, e1 := os.Getenverror("DOES_NOT_EXIST")
diff --git a/gcc/testsuite/go.test/test/eof.go b/gcc/testsuite/go.test/test/eof.go
new file mode 100644
index 00000000000..81f9fd028ff
--- /dev/null
+++ b/gcc/testsuite/go.test/test/eof.go
@@ -0,0 +1,9 @@
+// $G $D/$F.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// No newline at the end of this file.
+
+package main \ No newline at end of file
diff --git a/gcc/testsuite/go.test/test/eof1.go b/gcc/testsuite/go.test/test/eof1.go
new file mode 100644
index 00000000000..c39a3cfdb15
--- /dev/null
+++ b/gcc/testsuite/go.test/test/eof1.go
@@ -0,0 +1,9 @@
+// $G $D/$F.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+// No newline at the end of this comment. \ No newline at end of file
diff --git a/gcc/testsuite/go.test/test/errchk b/gcc/testsuite/go.test/test/errchk
index ab7192da2a8..fbb021ce417 100755
--- a/gcc/testsuite/go.test/test/errchk
+++ b/gcc/testsuite/go.test/test/errchk
@@ -3,30 +3,38 @@
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
-# This script checks that the compilers emits the errors which we
-# expect. Usage: errchk COMPILER [OPTS] SOURCEFILE. This will run
-# the command COMPILER [OPTS] SOURCEFILE. The compilation is expected
-# to fail; if it succeeds, this script will report an error. The
-# stderr output of the compiler will be matched against comments in
-# SOURCEFILE. For each line of the source file which should generate
-# an error, there should be a comment of the form // ERROR "regexp".
-# If the compiler generates an error for a line which has no such
-# commnt, this script will report an error. Likewise if the compiler
-# does not generate an error for a line which has a comment, or if the
-# error message does not match the <regexp>. The <regexp> syntax
-# is Perl but its best to stick to egrep.
+# This script checks that the compilers emit the errors which we expect.
+# Usage: errchk COMPILER [OPTS] SOURCEFILES. This will run the command
+# COMPILER [OPTS] SOURCEFILES. The compilation is expected to fail; if
+# it succeeds, this script will report an error. The stderr output of
+# the compiler will be matched against comments in SOURCEFILES. For each
+# line of the source files which should generate an error, there should
+# be a comment of the form // ERROR "regexp". If the compiler generates
+# an error for a line which has no such comment, this script will report
+# an error. Likewise if the compiler does not generate an error for a
+# line which has a comment, or if the error message does not match the
+# <regexp>. The <regexp> syntax is Perl but its best to stick to egrep.
use POSIX;
if(@ARGV < 1) {
- print STDERR "Usage: errchk COMPILER [OPTS] SOURCEFILE\n";
+ print STDERR "Usage: errchk COMPILER [OPTS] SOURCEFILES\n";
exit 1;
}
-$file = $ARGV[@ARGV-1];
-open(SRC, $file) || die "BUG: errchk: open $file: $!";
-@src = <SRC>;
-close(SRC);
+# Grab SOURCEFILES
+foreach(reverse 0 .. @ARGV-1) {
+ unless($ARGV[$_] =~ /\.go$/) {
+ @file = @ARGV[$_+1 .. @ARGV-1];
+ last;
+ }
+}
+
+foreach $file (@file) {
+ open(SRC, $file) || die "BUG: errchk: open $file: $!";
+ $src{$file} = [<SRC>];
+ close(SRC);
+}
# Run command
$cmd = join(' ', @ARGV);
@@ -57,35 +65,46 @@ sub bug() {
}
}
-$line = 0;
-foreach $src (@src) {
- $line++;
- next unless $src =~ m|// (GC_)?ERROR (.*)|;
- $regexp = $2;
- if($regexp !~ /^"([^"]*)"/) {
- print STDERR "$file:$line: malformed regexp\n";
- next;
- }
- $regexp = $1;
-
- @errmsg = grep { /$file:$line:/ } @out;
- @out = grep { !/$file:$line:/ } @out;
- if(@errmsg == 0) {
- bug();
- print STDERR "errchk: $file:$line: missing expected error: '$regexp'\n";
- next;
- }
- @match = grep { /$regexp/ } @errmsg;
- if(@match == 0) {
- bug();
- print STDERR "errchk: $file:$line: error message does not match '$regexp'\n";
- next;
+sub chk {
+ my $file = shift;
+ my $line = 0;
+ my $regexp;
+ my @errmsg;
+ my @match;
+ foreach my $src (@{$src{$file}}) {
+ $line++;
+ next if $src =~ m|////|; # double comment disables ERROR
+ next unless $src =~ m|// (GC_)?ERROR (.*)|;
+ $regexp = $2;
+ if($regexp !~ /^"([^"]*)"/) {
+ print STDERR "$file:$line: malformed regexp\n";
+ next;
+ }
+ $regexp = $1;
+
+ @errmsg = grep { /$file:$line[:[]/ } @out;
+ @out = grep { !/$file:$line[:[]/ } @out;
+ if(@errmsg == 0) {
+ bug();
+ print STDERR "errchk: $file:$line: missing expected error: '$regexp'\n";
+ next;
+ }
+ @match = grep { /$regexp/ } @errmsg;
+ if(@match == 0) {
+ bug();
+ print STDERR "errchk: $file:$line: error message does not match '$regexp'\n";
+ next;
+ }
}
}
+foreach $file (@file) {
+ chk($file)
+}
+
if(@out != 0) {
bug();
- print STDERR "errchk: $file: unmatched error messages:\n";
+ print STDERR "errchk: unmatched error messages:\n";
print STDERR "==================================================\n";
print STDERR @out;
print STDERR "==================================================\n";
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug001.go b/gcc/testsuite/go.test/test/fixedbugs/bug001.go
deleted file mode 100644
index 2df8791fffb..00000000000
--- a/gcc/testsuite/go.test/test/fixedbugs/bug001.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// $G $D/$F.go && $L $F.$A && ./$A.out
-
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-func main() {
- if {} // compiles; should be an error (must be an expression)
-}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug016.go b/gcc/testsuite/go.test/test/fixedbugs/bug016.go
index 461bcf82ac4..4fbfd48fd97 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug016.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug016.go
@@ -1,4 +1,4 @@
-// ! $G $D/$F.go
+// errchk $G -e $D/$F.go
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
@@ -7,8 +7,8 @@
package main
func main() {
- var i int = 100;
- i = i << -3; // BUG: should not compile (negative shift)
+ var i int = 100
+ i = i << -3 // ERROR "overflows|negative"
}
/*
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug055.go b/gcc/testsuite/go.test/test/fixedbugs/bug055.go
index 0326d828f2c..8617396109d 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug055.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug055.go
@@ -7,16 +7,21 @@
package main
func main() {
- var i int;
- var j int;
- if true {}
- { return }
- i = 0;
- if true {} else i++;
- type s struct {};
- i = 0;
- type s2 int;
- var k = func (a int) int { return a+1 }(3);
- _, _ = j, k;
-ro: ;
+ var i int
+ var j int
+ if true {
+ }
+ {
+ return
+ }
+ i = 0
+ if true {
+ } else {
+ i++
+ }
+ type s struct{}
+ i = 0
+ type s2 int
+ var k = func(a int) int { return a + 1 }(3)
+ _, _ = j, k
}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug069.go b/gcc/testsuite/go.test/test/fixedbugs/bug069.go
index d6796cd72be..9038387ac86 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug069.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug069.go
@@ -6,14 +6,14 @@
package main
-func main(){
+func main() {
c := make(chan int);
ok := false;
var i int;
-
+
i, ok = <-c; // works
_, _ = i, ok;
-
+
ca := new([2]chan int);
i, ok = <-(ca[0]); // fails: c.go:11: bad shape across assignment - cr=1 cl=2
_, _ = i, ok;
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug076.go b/gcc/testsuite/go.test/test/fixedbugs/bug076.go
index 065cecc015b..2ca518d76d8 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug076.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug076.go
@@ -1,4 +1,4 @@
-// $G $D/$F.go && $L $F.$A && ./$A.out
+// $G $D/$F.go && $L $F.$A
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
@@ -7,12 +7,16 @@
package main
func f() {
-exit: ;
+exit:
+ ;
+ goto exit
}
func main() {
-exit: ; // this should be legal (labels not properly scoped?)
+exit:
+ ; // this should be legal (labels not properly scoped?)
+ goto exit
}
/*
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug077.go b/gcc/testsuite/go.test/test/fixedbugs/bug077.go
index 08028ab10fa..2cbf96d98fe 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug077.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug077.go
@@ -7,7 +7,8 @@
package main
func main() {
- var exit int;
+ var exit int
exit:
- _ = exit;
+ _ = exit
+ goto exit
}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug081.go b/gcc/testsuite/go.test/test/fixedbugs/bug081.go
index ccb36995343..026ce8002f2 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug081.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug081.go
@@ -1,12 +1,12 @@
-// ! $G $D/$F.go
+// errchk $G $D/$F.go
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package main
-
-const x x = 2;
+package main
+
+const x x = 2 // ERROR "loop|type"
/*
bug081.go:3: first constant must evaluate an expression
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug091.go b/gcc/testsuite/go.test/test/fixedbugs/bug091.go
index cfbb09cd820..c2ede7153ce 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug091.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug091.go
@@ -7,18 +7,19 @@
package main
func f1() {
- exit:
- print("hi\n");
+exit:
+ print("hi\n")
+ goto exit
}
func f2() {
- const c = 1234;
+ const c = 1234
}
func f3() {
- i := c; // ERROR "undef"
+ i := c // ERROR "undef"
}
func main() {
- f3();
+ f3()
}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug137.go b/gcc/testsuite/go.test/test/fixedbugs/bug137.go
index 1527924116f..9d43f431be8 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug137.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug137.go
@@ -8,16 +8,21 @@ package main
func main() {
L1:
-L2: for i := 0; i < 10; i++ {
- print(i);
- break L2;
+L2:
+ for i := 0; i < 10; i++ {
+ print(i)
+ break L2
}
-L3: ;
-L4: for i := 0; i < 10; i++ {
- print(i);
- break L4;
+L3:
+ ;
+L4:
+ for i := 0; i < 10; i++ {
+ print(i)
+ break L4
}
+ goto L1
+ goto L3
}
/*
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug140.go b/gcc/testsuite/go.test/test/fixedbugs/bug140.go
index 33d1deb8a0c..e27b370e760 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug140.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug140.go
@@ -7,8 +7,17 @@
package main
func main() {
- if {} else L1: ;
- if {} else L2: main() ;
+ if true {
+ } else {
+ L1:
+ }
+ if true {
+ } else {
+ L2:
+ main()
+ }
+ goto L1
+ goto L2
}
/*
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug1515.go b/gcc/testsuite/go.test/test/fixedbugs/bug1515.go
new file mode 100644
index 00000000000..7402525164f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug1515.go
@@ -0,0 +1,20 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+const (
+ joao = "João"
+ jose = "José"
+)
+
+func main() {
+ s1 := joao
+ s2 := jose
+ if (s1 < s2) != (joao < jose) {
+ panic("unequal")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug178.go b/gcc/testsuite/go.test/test/fixedbugs/bug178.go
index 4f586342b46..20596102441 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug178.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug178.go
@@ -9,19 +9,25 @@ package main
func main() {
L:
for i := 0; i < 1; i++ {
-L1:
+ L1:
for {
- break L;
+ break L
}
- panic("BUG: not reached - break");
+ panic("BUG: not reached - break")
}
L2:
for i := 0; i < 1; i++ {
-L3:
+ L3:
for {
- continue L2;
+ continue L2
}
- panic("BUG: not reached - continue");
+ panic("BUG: not reached - continue")
+ }
+ if false {
+ goto L1
+ }
+ if false {
+ goto L3
}
}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug179.go b/gcc/testsuite/go.test/test/fixedbugs/bug179.go
index 67548733ce6..3347613d8db 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug179.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug179.go
@@ -10,16 +10,18 @@ func main() {
L:
for {
for {
- break L2; // ERROR "L2"
- continue L2; // ERROR "L2"
+ break L2 // ERROR "L2"
+ continue L2 // ERROR "L2"
}
}
L1:
- x := 1;
- _ = x;
+ x := 1
+ _ = x
for {
- break L1; // ERROR "L1"
- continue L1; // ERROR "L1"
+ break L1 // ERROR "L1"
+ continue L1 // ERROR "L1"
}
+
+ goto L
}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug219.go b/gcc/testsuite/go.test/test/fixedbugs/bug219.go
index 21361a2aab3..966d3fcf31a 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug219.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug219.go
@@ -12,8 +12,8 @@ func f(func()) int { return 0 }
// bug219.go:16: syntax error near if
func g1() {
if x := f(func() {
- if {}
- }); {
+ if true {}
+ }); true {
_ = x;
}
}
@@ -21,8 +21,8 @@ func g1() {
// this works
func g2() {
if x := f(func() {
- //if {}
- }); {
+ //if true {}
+ }); true {
_ = x;
}
}
@@ -30,9 +30,9 @@ func g2() {
// this works
func g3() {
x := f(func() {
- if {}
+ if true {}
});
- if {
+ if true {
_ = x;
}
}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug226.dir/y.go b/gcc/testsuite/go.test/test/fixedbugs/bug226.dir/y.go
index 01e8b7b4373..c66d592b7c0 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug226.dir/y.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug226.dir/y.go
@@ -15,7 +15,7 @@ func f() {
_ = x.T{};
_ = x.T{Y:2};
- ok1.M(); // ERROR "assignment.*T"
+ ok1.M();
bad1 := *ok; // ERROR "assignment.*T"
bad2 := ok1; // ERROR "assignment.*T"
*ok4 = ok1; // ERROR "assignment.*T"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug234.go b/gcc/testsuite/go.test/test/fixedbugs/bug234.go
index b806ca64e98..562109a058b 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug234.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug234.go
@@ -14,6 +14,7 @@ func main() {
println("x=", x, " ok=", ok, " want 100, true")
panic("fail")
}
+ close(c)
x, ok = <-c
if x != 0 || ok {
println("x=", x, " ok=", ok, " want 0, false")
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug242.go b/gcc/testsuite/go.test/test/fixedbugs/bug242.go
index 5c21eaaf008..839dccd3741 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug242.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug242.go
@@ -103,6 +103,7 @@ func main() {
c <- 'C'
// 15 16
*f(), p1 = <-e1(c, 16)
+ close(c)
// 17 18
*f(), p2 = <-e1(c, 18)
a[17] += '0'
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug243.go b/gcc/testsuite/go.test/test/fixedbugs/bug243.go
index 357f22eb274..0c531968e66 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug243.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug243.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # no network
// $G $D/$F.go && $L $F.$A && ./$A.out
// Copyright 2010 The Go Authors. All rights reserved.
@@ -7,12 +6,14 @@
package main
-import (
- "net"
-)
+import "os"
+
+// Issue 481: closures and var declarations
+// with multiple variables assigned from one
+// function call.
func main() {
- var listen, _ = net.Listen("tcp", "127.0.0.1:0")
+ var listen, _ = Listen("tcp", "127.0.0.1:0")
go func() {
for {
@@ -21,6 +22,31 @@ func main() {
}
}()
- var conn, _ = net.Dial("tcp", "", listen.Addr().String())
+ var conn, _ = Dial("tcp", "", listen.Addr().String())
_ = conn
}
+
+// Simulated net interface to exercise bug
+// without involving a real network.
+type T chan int
+
+var global T
+
+func Listen(x, y string) (T, string) {
+ global = make(chan int)
+ return global, y
+}
+
+func (t T) Addr() os.Error {
+ return os.ErrorString("stringer")
+}
+
+func (t T) Accept() (int, string) {
+ return <-t, ""
+}
+
+func Dial(x, y, z string) (int, string) {
+ global <- 1
+ return 0, ""
+}
+
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug252.go b/gcc/testsuite/go.test/test/fixedbugs/bug252.go
index 6df94241a0c..a2c1dab9d39 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug252.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug252.go
@@ -11,5 +11,5 @@ func f(args ...int) {
}
func g(args ...interface{}) {
- f(args) // ERROR "[.][.][.]|incompatible"
+ f(args) // ERROR "cannot use|incompatible"
}
diff --git a/gcc/testsuite/go.test/test/bugs/bug260.go b/gcc/testsuite/go.test/test/fixedbugs/bug260.go
index 6a6331e65b3..34757c70eef 100644
--- a/gcc/testsuite/go.test/test/bugs/bug260.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug260.go
@@ -10,9 +10,15 @@ import (
"strconv"
)
-type T1 struct { x uint8 }
-type T2 struct { x uint16 }
-type T4 struct { x uint32 }
+type T1 struct {
+ x uint8
+}
+type T2 struct {
+ x uint16
+}
+type T4 struct {
+ x uint32
+}
func main() {
report := len(os.Args) > 1
@@ -20,7 +26,7 @@ func main() {
var b1 [10]T1
a0, _ := strconv.Btoui64(fmt.Sprintf("%p", &b1[0])[2:], 16)
a1, _ := strconv.Btoui64(fmt.Sprintf("%p", &b1[1])[2:], 16)
- if a1 != a0 + 1 {
+ if a1 != a0+1 {
fmt.Println("FAIL")
if report {
fmt.Println("alignment should be 1, is", a1-a0)
@@ -30,7 +36,7 @@ func main() {
var b2 [10]T2
a0, _ = strconv.Btoui64(fmt.Sprintf("%p", &b2[0])[2:], 16)
a1, _ = strconv.Btoui64(fmt.Sprintf("%p", &b2[1])[2:], 16)
- if a1 != a0 + 2 {
+ if a1 != a0+2 {
if status == 0 {
fmt.Println("FAIL")
status = 1
@@ -42,7 +48,7 @@ func main() {
var b4 [10]T4
a0, _ = strconv.Btoui64(fmt.Sprintf("%p", &b4[0])[2:], 16)
a1, _ = strconv.Btoui64(fmt.Sprintf("%p", &b4[1])[2:], 16)
- if a1 != a0 + 4 {
+ if a1 != a0+4 {
if status == 0 {
fmt.Println("FAIL")
status = 1
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug274.go b/gcc/testsuite/go.test/test/fixedbugs/bug274.go
index 621f31eed37..348aed429e9 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug274.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug274.go
@@ -24,6 +24,7 @@ func main() {
case 1:
L1: // ERROR "statement"
default:
- L2: // correct since no semicolon is required before a '}'
+ // correct since no semicolon is required before a '}'
+ L2: // GCCGO_ERROR "not used"
}
}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug305.go b/gcc/testsuite/go.test/test/fixedbugs/bug305.go
new file mode 100644
index 00000000000..758fee2698a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug305.go
@@ -0,0 +1,24 @@
+// errchk $G $D/$F.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Use //line to set the line number of the next line to 20.
+//line fixedbugs/bug305.go:20
+
+package p
+
+// Introduce an error which should be reported on line 24.
+var a int = "bogus"
+
+// Line 15 of file.
+// 16
+// 17
+// 18
+// 19
+// 20
+// 21
+// 22
+// 23
+// ERROR "cannot|incompatible"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p1.go b/gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p1.go
new file mode 100644
index 00000000000..bf87ea1491d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p1.go
@@ -0,0 +1,9 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p1
+
+type T <-chan int
+var x = make(chan T)
+
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p2.go b/gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p2.go
new file mode 100644
index 00000000000..3f8bd9d49b5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug306.dir/p2.go
@@ -0,0 +1,8 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p2
+
+import _ "./p1"
+
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug306.go b/gcc/testsuite/go.test/test/fixedbugs/bug306.go
new file mode 100644
index 00000000000..a0a43507dcb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug306.go
@@ -0,0 +1,7 @@
+// $G $D/$F.dir/p1.go && $G $D/$F.dir/p2.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug307.go b/gcc/testsuite/go.test/test/fixedbugs/bug307.go
new file mode 100644
index 00000000000..1b42c09ab1e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug307.go
@@ -0,0 +1,15 @@
+// $G $D/$F.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Valid program, gccgo reported an error.
+// bug307.go:14:6: error: complex arguments must have identical types
+
+package main
+
+func main() {
+ var f float64
+ _ = complex(1/f, 0)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug308.go b/gcc/testsuite/go.test/test/fixedbugs/bug308.go
new file mode 100644
index 00000000000..c2845f04213
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug308.go
@@ -0,0 +1,19 @@
+// $G $D/$F.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 1136
+
+package main
+
+import "fmt"
+
+func log1(f string, argv ...interface{}) {
+ fmt.Printf("log: %s\n", fmt.Sprintf(f, argv...))
+}
+
+func main() {
+ log1("%d", 42)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug309.go b/gcc/testsuite/go.test/test/fixedbugs/bug309.go
new file mode 100644
index 00000000000..07bebae74c1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug309.go
@@ -0,0 +1,19 @@
+// $G $D/$F.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 1016
+
+package main
+
+func foo(t interface{}, c chan int) {
+ switch v := t.(type) {
+ case int:
+ select {
+ case <-c:
+ // bug was: internal compiler error: var without type, init: v
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug310.go b/gcc/testsuite/go.test/test/fixedbugs/bug310.go
new file mode 100644
index 00000000000..191f3ed2b4e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug310.go
@@ -0,0 +1,20 @@
+// errchk $G $D/$F.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+import (
+ "bytes"
+ "fmt"
+)
+
+type t int
+
+func main() {
+ _ = t.bar // ERROR "no method"
+ var b bytes.Buffer
+ fmt.Print(b) // ERROR "implicit assignment"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug311.go b/gcc/testsuite/go.test/test/fixedbugs/bug311.go
new file mode 100644
index 00000000000..ed937a67470
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug311.go
@@ -0,0 +1,20 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ m := make(map[string][1000]byte)
+ m["hi"] = [1000]byte{1}
+
+ v := m["hi"]
+
+ for k, vv := range m {
+ if k != "hi" || string(v[:]) != string(vv[:]) {
+ panic("bad iter")
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug312.go b/gcc/testsuite/go.test/test/fixedbugs/bug312.go
new file mode 100644
index 00000000000..70888dd410f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug312.go
@@ -0,0 +1,22 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 1172
+
+package main
+
+func main() {
+ var i interface{}
+ c := make(chan int, 1)
+ c <- 1
+ select {
+ case i = <-c: // error on this line
+ }
+ if i != 1 {
+ println("bad i", i)
+ panic("BUG")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug313.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/bug313.dir/a.go
new file mode 100644
index 00000000000..cb4ca7256b9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug313.dir/a.go
@@ -0,0 +1,11 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+func a() {
+ fmt.DoesNotExist() // ERROR "undefined"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug313.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/bug313.dir/b.go
new file mode 100644
index 00000000000..7eda72b4f8b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug313.dir/b.go
@@ -0,0 +1,11 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import . "fmt"
+
+func b() {
+ Println()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug313.go b/gcc/testsuite/go.test/test/fixedbugs/bug313.go
new file mode 100644
index 00000000000..eb2a0223b6c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug313.go
@@ -0,0 +1,19 @@
+// errchk $G -e $D/$F.dir/[ab].go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 1284
+
+package bug313
+
+/*
+6g bug313.dir/[ab].go
+
+Before:
+bug313.dir/b.go:7: internal compiler error: fault
+
+Now:
+bug313.dir/a.go:10: undefined: fmt.DoesNotExist
+*/
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug314.go b/gcc/testsuite/go.test/test/fixedbugs/bug314.go
new file mode 100644
index 00000000000..95d81d7951e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug314.go
@@ -0,0 +1,31 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug314
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Used to call wrong methods; issue 1290.
+
+package main
+
+type S struct {
+}
+func (S) a() int{
+ return 0
+}
+func (S) b() int{
+ return 1
+}
+
+func main() {
+ var i interface {
+ b() int
+ a() int
+ } = S{}
+ if i.a() != 0 {
+ panic("wrong method called")
+ }
+ if i.b() != 1 {
+ panic("wrong method called")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug315.go b/gcc/testsuite/go.test/test/fixedbugs/bug315.go
new file mode 100644
index 00000000000..c59ef29e6c0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug315.go
@@ -0,0 +1,18 @@
+// $G $D/$F.go || echo BUG: bug315
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 1368.
+
+package main
+
+func main() {
+ a := complex(2, 2)
+ a /= 2
+}
+
+/*
+bug315.go:13: internal compiler error: optoas: no entry DIV-complex
+*/
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug316.go b/gcc/testsuite/go.test/test/fixedbugs/bug316.go
new file mode 100644
index 00000000000..2146408a1e2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug316.go
@@ -0,0 +1,17 @@
+// $G $D/$F.go || echo BUG: bug316
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 1369.
+
+package main
+
+const (
+ c = complex(1, 2)
+ r = real(c) // was: const initializer must be constant
+ i = imag(c) // was: const initializer must be constant
+)
+
+func main() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug317.go b/gcc/testsuite/go.test/test/fixedbugs/bug317.go
new file mode 100644
index 00000000000..0cb26c29ba1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug317.go
@@ -0,0 +1,16 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug317
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ x := []uint{0}
+ x[0] &^= f()
+}
+
+func f() uint {
+ return 1<<31 // doesn't panic with 1<<31 - 1
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug318.go b/gcc/testsuite/go.test/test/fixedbugs/bug318.go
new file mode 100644
index 00000000000..9c46a04269c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug318.go
@@ -0,0 +1,12 @@
+// errchk $G $D/$F.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 1411.
+
+package main
+
+const ui uint = 0
+const i int = ui // ERROR "type"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug319.go b/gcc/testsuite/go.test/test/fixedbugs/bug319.go
new file mode 100644
index 00000000000..f60eee4fb23
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug319.go
@@ -0,0 +1,22 @@
+// $G $D/$F.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "unsafe"
+
+func main() {
+ var x int
+
+ a := uint64(uintptr(unsafe.Pointer(&x)))
+ b := uint32(uintptr(unsafe.Pointer(&x)))
+ c := uint16(uintptr(unsafe.Pointer(&x)))
+ d := int64(uintptr(unsafe.Pointer(&x)))
+ e := int32(uintptr(unsafe.Pointer(&x)))
+ f := int16(uintptr(unsafe.Pointer(&x)))
+
+ _, _, _, _, _, _ = a, b, c, d, e, f
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug320.go b/gcc/testsuite/go.test/test/fixedbugs/bug320.go
new file mode 100644
index 00000000000..06d41f2ed87
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug320.go
@@ -0,0 +1,45 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ c := make(chan int, 1)
+ dummy := make(chan int)
+ v := 0x12345678
+ for i := 0; i < 10; i++ {
+ // 6g had a bug that caused select to pass &t to
+ // selectrecv before allocating the memory for t,
+ // which caused non-deterministic crashes.
+ // This test looks for the bug by checking that the
+ // value received actually ends up in t.
+ // If the allocation happens after storing through
+ // whatever garbage &t holds, the later reference
+ // to t in the case body will use the new pointer and
+ // not see the received value.
+ v += 0x1020304
+ c <- v
+ select {
+ case t := <-c:
+ go func() {
+ f(t)
+ }()
+ escape(&t)
+ if t != v {
+ println(i, v, t)
+ panic("wrong values")
+ }
+ case dummy <- 1:
+ }
+ }
+}
+
+func escape(*int) {
+}
+
+func f(int) {
+}
+
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug321.go b/gcc/testsuite/go.test/test/fixedbugs/bug321.go
new file mode 100644
index 00000000000..d0595ff59b6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug321.go
@@ -0,0 +1,30 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug321
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Troublesome floating point constants. Issue 1463.
+
+package main
+
+import "fmt"
+
+func check(test string, got, want float64) bool {
+ if got != want {
+ fmt.Println(test, "got", got, "want", want)
+ return false
+ }
+ return true
+}
+
+func main() {
+ good := true
+ // http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/
+ good = good && check("2.2250738585072012e-308", 2.2250738585072012e-308, 2.2250738585072014e-308)
+ // http://www.exploringbinary.com/php-hangs-on-numeric-value-2-2250738585072011e-308/
+ good = good && check("2.2250738585072011e-308", 2.2250738585072011e-308, 2.225073858507201e-308)
+ if !good {
+ panic("fail")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug323.go b/gcc/testsuite/go.test/test/fixedbugs/bug323.go
new file mode 100644
index 00000000000..23e2be6603a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug323.go
@@ -0,0 +1,20 @@
+// errchk $G $D/$F.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type T struct{}
+type P *T
+
+func (t *T) Meth() {}
+func (t T) Meth2() {}
+
+func main() {
+ t := &T{}
+ p := P(t)
+ p.Meth() // ERROR "undefined"
+ p.Meth2() // ERROR "undefined"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug325.go b/gcc/testsuite/go.test/test/fixedbugs/bug325.go
new file mode 100644
index 00000000000..b86740fff93
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug325.go
@@ -0,0 +1,15 @@
+// errchk $G $D/$F.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "unsafe"
+
+func main() {
+ var x unsafe.Pointer
+ println(*x) // ERROR "invalid indirect.*unsafe.Pointer"
+ var _ = (unsafe.Pointer)(nil).foo // ERROR "foo"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug326.go b/gcc/testsuite/go.test/test/fixedbugs/bug326.go
new file mode 100644
index 00000000000..efdd0ef7131
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug326.go
@@ -0,0 +1,41 @@
+// errchk $G $D/$F.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+import "os"
+
+func f() (_ int, err os.Error) {
+ return
+}
+
+func g() (x int, _ os.Error) {
+ return
+}
+
+func h() (_ int, _ os.Error) {
+ return
+}
+
+func i() (int, os.Error) {
+ return // ERROR "not enough arguments to return"
+}
+
+func f1() (_ int, err os.Error) {
+ return 1, nil
+}
+
+func g1() (x int, _ os.Error) {
+ return 1, nil
+}
+
+func h1() (_ int, _ os.Error) {
+ return 1, nil
+}
+
+func ii() (int, os.Error) {
+ return 1, nil
+}
diff --git a/gcc/testsuite/go.test/test/float_lit.go b/gcc/testsuite/go.test/test/float_lit.go
index 3ffc5c1e4f2..7b91d88e51a 100644
--- a/gcc/testsuite/go.test/test/float_lit.go
+++ b/gcc/testsuite/go.test/test/float_lit.go
@@ -6,29 +6,19 @@
package main
-import "os"
-
-var deLim float64
var bad bool
-func
-init() {
- if os.Getenv("GOARCH") == "arm" {
- deLim = 1.0e-8
- } else {
- deLim = 10.e-14
+func pow10(pow int) float64 {
+ if pow < 0 {
+ return 1 / pow10(-pow)
+ }
+ if pow > 0 {
+ return pow10(pow-1) * 10
}
-}
-
-func
-pow10(pow int) float64 {
- if pow < 0 { return 1/pow10(-pow); }
- if pow > 0 { return pow10(pow-1)*10; }
return 1
}
-func
-close(da float64, ia, ib int64, pow int) bool {
+func close(da float64, ia, ib int64, pow int) bool {
db := float64(ia) / float64(ib)
db *= pow10(pow)
@@ -39,12 +29,12 @@ close(da float64, ia, ib int64, pow int) bool {
return false
}
- de := (da-db) /da
+ de := (da - db) / da
if de < 0 {
de = -de
}
- if de < deLim {
+ if de < 1e-14 {
return true
}
if !bad {
@@ -54,65 +44,154 @@ close(da float64, ia, ib int64, pow int) bool {
return false
}
-func
-main() {
- if !close(0., 0, 1, 0) { print("0. is ", 0., "\n"); }
- if !close(+10., 10, 1, 0) { print("+10. is ", +10., "\n"); }
- if !close(-210., -210, 1, 0) { print("-210. is ", -210., "\n"); }
+func main() {
+ if !close(0., 0, 1, 0) {
+ print("0. is ", 0., "\n")
+ }
+ if !close(+10., 10, 1, 0) {
+ print("+10. is ", +10., "\n")
+ }
+ if !close(-210., -210, 1, 0) {
+ print("-210. is ", -210., "\n")
+ }
- if !close(.0, 0, 1, 0) { print(".0 is ", .0, "\n"); }
- if !close(+.01, 1, 100, 0) { print("+.01 is ", +.01, "\n"); }
- if !close(-.012, -12, 1000, 0) { print("-.012 is ", -.012, "\n"); }
+ if !close(.0, 0, 1, 0) {
+ print(".0 is ", .0, "\n")
+ }
+ if !close(+.01, 1, 100, 0) {
+ print("+.01 is ", +.01, "\n")
+ }
+ if !close(-.012, -12, 1000, 0) {
+ print("-.012 is ", -.012, "\n")
+ }
- if !close(0.0, 0, 1, 0) { print("0.0 is ", 0.0, "\n"); }
- if !close(+10.01, 1001, 100, 0) { print("+10.01 is ", +10.01, "\n"); }
- if !close(-210.012, -210012, 1000, 0) { print("-210.012 is ", -210.012, "\n"); }
+ if !close(0.0, 0, 1, 0) {
+ print("0.0 is ", 0.0, "\n")
+ }
+ if !close(+10.01, 1001, 100, 0) {
+ print("+10.01 is ", +10.01, "\n")
+ }
+ if !close(-210.012, -210012, 1000, 0) {
+ print("-210.012 is ", -210.012, "\n")
+ }
- if !close(0E+1, 0, 1, 0) { print("0E+1 is ", 0E+1, "\n"); }
- if !close(+10e2, 10, 1, 2) { print("+10e2 is ", +10e2, "\n"); }
- if !close(-210e3, -210, 1, 3) { print("-210e3 is ", -210e3, "\n"); }
+ if !close(0E+1, 0, 1, 0) {
+ print("0E+1 is ", 0E+1, "\n")
+ }
+ if !close(+10e2, 10, 1, 2) {
+ print("+10e2 is ", +10e2, "\n")
+ }
+ if !close(-210e3, -210, 1, 3) {
+ print("-210e3 is ", -210e3, "\n")
+ }
- if !close(0E-1, 0, 1, 0) { print("0E-1 is ", 0E-1, "\n"); }
- if !close(+0e23, 0, 1, 1) { print("+0e23 is ", +0e23, "\n"); }
- if !close(-0e345, 0, 1, 1) { print("-0e345 is ", -0e345, "\n"); }
+ if !close(0E-1, 0, 1, 0) {
+ print("0E-1 is ", 0E-1, "\n")
+ }
+ if !close(+0e23, 0, 1, 1) {
+ print("+0e23 is ", +0e23, "\n")
+ }
+ if !close(-0e345, 0, 1, 1) {
+ print("-0e345 is ", -0e345, "\n")
+ }
- if !close(0E1, 0, 1, 1) { print("0E1 is ", 0E1, "\n"); }
- if !close(+10e23, 10, 1, 23) { print("+10e23 is ", +10e23, "\n"); }
- if !close(-210e34, -210, 1, 34) { print("-210e34 is ", -210e34, "\n"); }
+ if !close(0E1, 0, 1, 1) {
+ print("0E1 is ", 0E1, "\n")
+ }
+ if !close(+10e23, 10, 1, 23) {
+ print("+10e23 is ", +10e23, "\n")
+ }
+ if !close(-210e34, -210, 1, 34) {
+ print("-210e34 is ", -210e34, "\n")
+ }
- if !close(0.E1, 0, 1, 1) { print("0.E1 is ", 0.E1, "\n"); }
- if !close(+10.e+2, 10, 1, 2) { print("+10.e+2 is ", +10.e+2, "\n"); }
- if !close(-210.e-3, -210, 1, -3) { print("-210.e-3 is ", -210.e-3, "\n"); }
+ if !close(0.E1, 0, 1, 1) {
+ print("0.E1 is ", 0.E1, "\n")
+ }
+ if !close(+10.e+2, 10, 1, 2) {
+ print("+10.e+2 is ", +10.e+2, "\n")
+ }
+ if !close(-210.e-3, -210, 1, -3) {
+ print("-210.e-3 is ", -210.e-3, "\n")
+ }
- if !close(.0E1, 0, 1, 1) { print(".0E1 is ", .0E1, "\n"); }
- if !close(+.01e2, 1, 100, 2) { print("+.01e2 is ", +.01e2, "\n"); }
- if !close(-.012e3, -12, 1000, 3) { print("-.012e3 is ", -.012e3, "\n"); }
+ if !close(.0E1, 0, 1, 1) {
+ print(".0E1 is ", .0E1, "\n")
+ }
+ if !close(+.01e2, 1, 100, 2) {
+ print("+.01e2 is ", +.01e2, "\n")
+ }
+ if !close(-.012e3, -12, 1000, 3) {
+ print("-.012e3 is ", -.012e3, "\n")
+ }
- if !close(0.0E1, 0, 1, 0) { print("0.0E1 is ", 0.0E1, "\n"); }
- if !close(+10.01e2, 1001, 100, 2) { print("+10.01e2 is ", +10.01e2, "\n"); }
- if !close(-210.012e3, -210012, 1000, 3) { print("-210.012e3 is ", -210.012e3, "\n"); }
+ if !close(0.0E1, 0, 1, 0) {
+ print("0.0E1 is ", 0.0E1, "\n")
+ }
+ if !close(+10.01e2, 1001, 100, 2) {
+ print("+10.01e2 is ", +10.01e2, "\n")
+ }
+ if !close(-210.012e3, -210012, 1000, 3) {
+ print("-210.012e3 is ", -210.012e3, "\n")
+ }
- if !close(0.E+12, 0, 1, 0) { print("0.E+12 is ", 0.E+12, "\n"); }
- if !close(+10.e23, 10, 1, 23) { print("+10.e23 is ", +10.e23, "\n"); }
- if !close(-210.e33, -210, 1, 33) { print("-210.e33 is ", -210.e33, "\n"); }
+ if !close(0.E+12, 0, 1, 0) {
+ print("0.E+12 is ", 0.E+12, "\n")
+ }
+ if !close(+10.e23, 10, 1, 23) {
+ print("+10.e23 is ", +10.e23, "\n")
+ }
+ if !close(-210.e33, -210, 1, 33) {
+ print("-210.e33 is ", -210.e33, "\n")
+ }
- if !close(.0E-12, 0, 1, 0) { print(".0E-12 is ", .0E-12, "\n"); }
- if !close(+.01e23, 1, 100, 23) { print("+.01e23 is ", +.01e23, "\n"); }
- if !close(-.012e34, -12, 1000, 34) { print("-.012e34 is ", -.012e34, "\n"); }
+ if !close(.0E-12, 0, 1, 0) {
+ print(".0E-12 is ", .0E-12, "\n")
+ }
+ if !close(+.01e23, 1, 100, 23) {
+ print("+.01e23 is ", +.01e23, "\n")
+ }
+ if !close(-.012e34, -12, 1000, 34) {
+ print("-.012e34 is ", -.012e34, "\n")
+ }
- if !close(0.0E12, 0, 1, 12) { print("0.0E12 is ", 0.0E12, "\n"); }
- if !close(+10.01e23, 1001, 100, 23) { print("+10.01e23 is ", +10.01e23, "\n"); }
- if !close(-210.012e33, -210012, 1000, 33) { print("-210.012e33 is ", -210.012e33, "\n"); }
+ if !close(0.0E12, 0, 1, 12) {
+ print("0.0E12 is ", 0.0E12, "\n")
+ }
+ if !close(+10.01e23, 1001, 100, 23) {
+ print("+10.01e23 is ", +10.01e23, "\n")
+ }
+ if !close(-210.012e33, -210012, 1000, 33) {
+ print("-210.012e33 is ", -210.012e33, "\n")
+ }
- if !close(0.E123, 0, 1, 123) { print("0.E123 is ", 0.E123, "\n"); }
- if !close(+10.e+23, 10, 1, 23) { print("+10.e+234 is ", +10.e+234, "\n"); }
- if !close(-210.e-35, -210, 1, -35) { print("-210.e-35 is ", -210.e-35, "\n"); }
+ if !close(0.E123, 0, 1, 123) {
+ print("0.E123 is ", 0.E123, "\n")
+ }
+ if !close(+10.e+23, 10, 1, 23) {
+ print("+10.e+234 is ", +10.e+234, "\n")
+ }
+ if !close(-210.e-35, -210, 1, -35) {
+ print("-210.e-35 is ", -210.e-35, "\n")
+ }
- if !close(.0E123, 0, 1, 123) { print(".0E123 is ", .0E123, "\n"); }
- if !close(+.01e29, 1, 100, 29) { print("+.01e29 is ", +.01e29, "\n"); }
- if !close(-.012e29, -12, 1000, 29) { print("-.012e29 is ", -.012e29, "\n"); }
+ if !close(.0E123, 0, 1, 123) {
+ print(".0E123 is ", .0E123, "\n")
+ }
+ if !close(+.01e29, 1, 100, 29) {
+ print("+.01e29 is ", +.01e29, "\n")
+ }
+ if !close(-.012e29, -12, 1000, 29) {
+ print("-.012e29 is ", -.012e29, "\n")
+ }
- if !close(0.0E123, 0, 1, 123) { print("0.0E123 is ", 0.0E123, "\n"); }
- if !close(+10.01e31, 1001, 100, 31) { print("+10.01e31 is ", +10.01e31, "\n"); }
- if !close(-210.012e19, -210012, 1000, 19) { print("-210.012e19 is ", -210.012e19, "\n"); }
+ if !close(0.0E123, 0, 1, 123) {
+ print("0.0E123 is ", 0.0E123, "\n")
+ }
+ if !close(+10.01e31, 1001, 100, 31) {
+ print("+10.01e31 is ", +10.01e31, "\n")
+ }
+ if !close(-210.012e19, -210012, 1000, 19) {
+ print("-210.012e19 is ", -210.012e19, "\n")
+ }
}
diff --git a/gcc/testsuite/go.test/test/garbage/Makefile b/gcc/testsuite/go.test/test/garbage/Makefile
index ab29e0956c0..e8338438265 100644
--- a/gcc/testsuite/go.test/test/garbage/Makefile
+++ b/gcc/testsuite/go.test/test/garbage/Makefile
@@ -11,8 +11,8 @@ ALL=\
all: $(addsuffix .out, $(ALL))
-%.$O: %.go
- $(GC) $*.go
+%.$O: %.go stats.go
+ $(GC) $*.go stats.go
%.out: %.$O
$(LD) -o $@ $*.$O
diff --git a/gcc/testsuite/go.test/test/garbage/parser.go b/gcc/testsuite/go.test/test/garbage/parser.go
index cf68737fb2f..19a96bc63bd 100644
--- a/gcc/testsuite/go.test/test/garbage/parser.go
+++ b/gcc/testsuite/go.test/test/garbage/parser.go
@@ -11,13 +11,19 @@ import (
"fmt"
"go/ast"
"go/parser"
+ "go/token"
"os"
"path"
"runtime"
"strings"
"time"
+ "http"
+ _ "http/pprof"
+ "log"
)
+var serve = flag.String("serve", "", "serve http on this address at end")
+
func isGoFile(dir *os.FileInfo) bool {
return dir.IsRegular() &&
!strings.HasPrefix(dir.Name, ".") && // ignore .files
@@ -30,7 +36,7 @@ func isPkgFile(dir *os.FileInfo) bool {
}
func pkgName(filename string) string {
- file, err := parser.ParseFile(filename, nil, parser.PackageClauseOnly)
+ file, err := parser.ParseFile(token.NewFileSet(), filename, nil, parser.PackageClauseOnly)
if err != nil || file == nil {
return ""
}
@@ -58,7 +64,7 @@ func parseDir(dirpath string) map[string]*ast.Package {
}
// get package AST
- pkgs, err := parser.ParseDir(dirpath, filter, parser.ParseComments)
+ pkgs, err := parser.ParseDir(token.NewFileSet(), dirpath, filter, parser.ParseComments)
if err != nil {
println("parse", dirpath, err.String())
panic("fail")
@@ -67,12 +73,19 @@ func parseDir(dirpath string) map[string]*ast.Package {
}
func main() {
+ runtime.GOMAXPROCS(4)
+ go func() {}()
+ go func() {}()
+ go func() {}()
st := &runtime.MemStats
+ packages = append(packages, packages...)
+ packages = append(packages, packages...)
n := flag.Int("n", 4, "iterations")
p := flag.Int("p", len(packages), "# of packages to keep in memory")
flag.BoolVar(&st.DebugGC, "d", st.DebugGC, "print GC debugging info (pause times)")
flag.Parse()
+ var lastParsed []map[string]*ast.Package
var t0 int64
pkgroot := runtime.GOROOT() + "/src/pkg/"
for pass := 0; pass < 2; pass++ {
@@ -81,7 +94,7 @@ func main() {
// than the normal pauses and would otherwise make
// the average look much better than it actually is.
st.NumGC = 0
- st.PauseNs = 0
+ st.PauseTotalNs = 0
t0 = time.Nanoseconds()
for i := 0; i < *n; i++ {
@@ -89,25 +102,34 @@ func main() {
for j := range parsed {
parsed[j] = parseDir(pkgroot + packages[j%len(packages)])
}
+ if i+1 == *n && *serve != "" {
+ lastParsed = parsed
+ }
}
runtime.GC()
+ runtime.GC()
}
t1 := time.Nanoseconds()
fmt.Printf("Alloc=%d/%d Heap=%d Mallocs=%d PauseTime=%.3f/%d = %.3f\n",
st.Alloc, st.TotalAlloc,
st.Sys,
- st.Mallocs, float64(st.PauseNs)/1e9,
- st.NumGC, float64(st.PauseNs)/1e9/float64(st.NumGC))
-
- fmt.Printf("%10s %10s %10s\n", "size", "#alloc", "#free")
- for _, s := range st.BySize {
- fmt.Printf("%10d %10d %10d\n", s.Size, s.Mallocs, s.Frees)
- }
+ st.Mallocs, float64(st.PauseTotalNs)/1e9,
+ st.NumGC, float64(st.PauseTotalNs)/1e9/float64(st.NumGC))
+ /*
+ fmt.Printf("%10s %10s %10s\n", "size", "#alloc", "#free")
+ for _, s := range st.BySize {
+ fmt.Printf("%10d %10d %10d\n", s.Size, s.Mallocs, s.Frees)
+ }
+ */
// Standard gotest benchmark output, collected by build dashboard.
- fmt.Printf("garbage.BenchmarkParser %d %d ns/op\n", *n, (t1-t0)/int64(*n))
- fmt.Printf("garbage.BenchmarkParserPause %d %d ns/op\n", st.NumGC, int64(st.PauseNs)/int64(st.NumGC))
+ gcstats("BenchmarkParser", *n, t1-t0)
+
+ if *serve != "" {
+ log.Fatal(http.ListenAndServe(*serve, nil))
+ println(lastParsed)
+ }
}
@@ -183,7 +205,6 @@ var packages = []string{
"math",
"mime",
"net",
- "nntp",
"os",
"os/signal",
"patch",
@@ -195,6 +216,7 @@ var packages = []string{
"runtime",
"scanner",
"sort",
+ "smtp",
"strconv",
"strings",
"sync",
diff --git a/gcc/testsuite/go.test/test/garbage/peano.go b/gcc/testsuite/go.test/test/garbage/peano.go
index b026354e8c1..b4d31856126 100644
--- a/gcc/testsuite/go.test/test/garbage/peano.go
+++ b/gcc/testsuite/go.test/test/garbage/peano.go
@@ -123,7 +123,6 @@ func verify() {
func main() {
- st := &runtime.MemStats
t0 := time.Nanoseconds()
verify()
for i := 0; i <= 9; i++ {
@@ -132,6 +131,5 @@ func main() {
runtime.GC()
t1 := time.Nanoseconds()
- fmt.Printf("garbage.BenchmarkPeano 1 %d ns/op\n", t1-t0)
- fmt.Printf("garbage.BenchmarkPeanoPause %d %d ns/op\n", st.NumGC, int64(st.PauseNs)/int64(st.NumGC))
+ gcstats("BenchmarkPeano", 1, t1-t0)
}
diff --git a/gcc/testsuite/go.test/test/garbage/stats.go b/gcc/testsuite/go.test/test/garbage/stats.go
new file mode 100644
index 00000000000..474e6ad4abc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/garbage/stats.go
@@ -0,0 +1,44 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "runtime"
+ "sort"
+)
+
+func gcstats(name string, n int, t int64) {
+ st := &runtime.MemStats
+ fmt.Printf("garbage.%sMem Alloc=%d/%d Heap=%d NextGC=%d Mallocs=%d\n", name, st.Alloc, st.TotalAlloc, st.Sys, st.NextGC, st.Mallocs)
+ fmt.Printf("garbage.%s %d %d ns/op\n", name, n, t/int64(n))
+ fmt.Printf("garbage.%sLastPause 1 %d ns/op\n", name, st.PauseNs[(st.NumGC-1)%uint32(len(st.PauseNs))])
+ fmt.Printf("garbage.%sPause %d %d ns/op\n", name, st.NumGC, int64(st.PauseTotalNs)/int64(st.NumGC))
+ nn := int(st.NumGC)
+ if nn >= len(st.PauseNs) {
+ nn = len(st.PauseNs)
+ }
+ t1, t2, t3, t4, t5 := tukey5(st.PauseNs[0:nn])
+ fmt.Printf("garbage.%sPause5: %d %d %d %d %d\n", name, t1, t2, t3, t4, t5)
+
+// fmt.Printf("garbage.%sScan: %v\n", name, st.ScanDist)
+}
+
+type T []uint64
+func (t T) Len() int { return len(t) }
+func (t T) Swap(i, j int) { t[i], t[j] = t[j], t[i] }
+func (t T) Less(i, j int) bool { return t[i] < t[j] }
+
+func tukey5(raw []uint64) (lo, q1, q2, q3, hi uint64) {
+ x := make(T, len(raw))
+ copy(x, raw)
+ sort.Sort(T(x))
+ lo = x[0]
+ q1 = x[len(x)/4]
+ q2 = x[len(x)/2]
+ q3 = x[len(x)*3/4]
+ hi = x[len(x)-1]
+ return
+}
diff --git a/gcc/testsuite/go.test/test/garbage/tree.go b/gcc/testsuite/go.test/test/garbage/tree.go
index 816693fbebf..c5eae9760f2 100644
--- a/gcc/testsuite/go.test/test/garbage/tree.go
+++ b/gcc/testsuite/go.test/test/garbage/tree.go
@@ -39,7 +39,6 @@ package main
import (
"flag"
"fmt"
- "runtime"
"time"
)
@@ -95,10 +94,7 @@ func main() {
fmt.Printf("long lived tree of depth %d\t check: %d\n", maxDepth, longLivedTree.itemCheck())
t1 := time.Nanoseconds()
- st := &runtime.MemStats
// Standard gotest benchmark output, collected by build dashboard.
- fmt.Printf("garbage.BenchmarkTree %d %d ns/op\n", *n, (t1-t0)/int64(*n))
- fmt.Printf("garbage.BenchmarkTreePause %d %d ns/op\n", st.NumGC, int64(st.PauseNs)/int64(st.NumGC))
-
+ gcstats("BenchmarkTree", *n, t1-t0)
}
diff --git a/gcc/testsuite/go.test/test/golden-arm.out b/gcc/testsuite/go.test/test/golden-arm.out
deleted file mode 100644
index 41829fb0360..00000000000
--- a/gcc/testsuite/go.test/test/golden-arm.out
+++ /dev/null
@@ -1,131 +0,0 @@
-
-=========== ./cmp2.go
-panic: runtime error: comparing uncomparable type []int
-
-panic PC=xxx
-
-=========== ./cmp3.go
-panic: runtime error: comparing uncomparable type []int
-
-panic PC=xxx
-
-=========== ./cmp4.go
-panic: runtime error: hash of unhashable type []int
-
-panic PC=xxx
-
-=========== ./cmp5.go
-panic: runtime error: hash of unhashable type []int
-
-panic PC=xxx
-
-=========== ./deferprint.go
-printing: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-42 true false true +1.500000e+000 world 0x0 [0/0]0x0 0x0 0x0 255
-
-=========== ./helloworld.go
-hello, world
-
-=========== ./peano.go
-0! = 1
-1! = 1
-2! = 2
-3! = 6
-4! = 24
-5! = 120
-6! = 720
-7! = 5040
-8! = 40320
-9! = 362880
-
-=========== ./printbig.go
--9223372036854775808
-9223372036854775807
-
-=========== ./sigchld.go
-survived SIGCHLD
-
-=========== ./sinit.go
-FAIL
-
-=========== ./turing.go
-Hello World!
-
-=========== ken/intervar.go
- print 1 bio 2 file 3 -- abc
-
-=========== ken/label.go
-100
-
-=========== ken/rob1.go
-9876543210
-
-=========== ken/rob2.go
-(defn foo (add 12 34))
-
-=========== ken/simpprint.go
-hello world
-
-=========== ken/simpswitch.go
-0out01out12out2aout34out4fiveout56out6aout78out89out9
-
-=========== ken/string.go
-abcxyz-abcxyz-abcxyz-abcxyz-abcxyz-abcxyz-abcxyz
-
-=========== chan/doubleselect.go
-PASS
-
-=========== chan/nonblock.go
-PASS
-
-=========== interface/fail.go
-panic: interface conversion: *main.S is not main.I: missing method Foo
-
-panic PC=xxx
-
-=========== interface/returntype.go
-panic: interface conversion: *main.S is not main.I2: missing method Name
-
-panic PC=xxx
-
-=========== fixedbugs/bug016.go
-fixedbugs/bug016.go:11: constant -3 overflows uint
-
-=========== fixedbugs/bug027.go
-hi
-0 44444
-1 3333
-2 222
-3 11
-4 0
-0 44444
-1 3333
-2 222
-3 11
-4 0
-
-=========== fixedbugs/bug067.go
-ok
-
-=========== fixedbugs/bug070.go
-outer loop top k 0
-inner loop top i 0
-do break
-broke
-
-=========== fixedbugs/bug081.go
-fixedbugs/bug081.go:9: typechecking loop
-
-=========== fixedbugs/bug093.go
-M
-
-=========== fixedbugs/bug113.go
-panic: interface conversion: interface is int, not int32
-
-panic PC=xxx
-
-=========== fixedbugs/bug148.go
-2 3
-panic: interface conversion: interface is main.T, not main.T
-
-panic PC=xxx
diff --git a/gcc/testsuite/go.test/test/golden.out b/gcc/testsuite/go.test/test/golden.out
index 49bca4b874b..cc699d4500e 100644
--- a/gcc/testsuite/go.test/test/golden.out
+++ b/gcc/testsuite/go.test/test/golden.out
@@ -4,22 +4,18 @@
=========== ./cmp2.go
panic: runtime error: comparing uncomparable type []int
-panic PC=xxx
=========== ./cmp3.go
panic: runtime error: comparing uncomparable type []int
-panic PC=xxx
=========== ./cmp4.go
panic: runtime error: hash of unhashable type []int
-panic PC=xxx
=========== ./cmp5.go
panic: runtime error: hash of unhashable type []int
-panic PC=xxx
=========== ./deferprint.go
printing: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
@@ -64,7 +60,6 @@ Hello World!
=========== ken/cplx3.go
(+1.292308e+000-1.384615e-001i)
(+1.292308e+000-1.384615e-001i)
-64
=========== ken/cplx4.go
c = (-5.000000-6.000000i)
@@ -117,12 +112,10 @@ PASS
=========== interface/fail.go
panic: interface conversion: *main.S is not main.I: missing method Foo
-panic PC=xxx
=========== interface/returntype.go
panic: interface conversion: *main.S is not main.I2: missing method Name
-panic PC=xxx
== nilptr/
@@ -130,9 +123,6 @@ panic PC=xxx
== fixedbugs/
-=========== fixedbugs/bug016.go
-fixedbugs/bug016.go:11: constant -3 overflows uint
-
=========== fixedbugs/bug027.go
hi
0 44444
@@ -155,25 +145,25 @@ inner loop top i 0
do break
broke
-=========== fixedbugs/bug081.go
-fixedbugs/bug081.go:9: typechecking loop
-
=========== fixedbugs/bug093.go
M
=========== fixedbugs/bug113.go
panic: interface conversion: interface is int, not int32
-panic PC=xxx
=========== fixedbugs/bug148.go
2 3
panic: interface conversion: interface is main.T, not main.T
-panic PC=xxx
== bugs/
-=========== bugs/bug260.go
-FAIL
-BUG: bug260 failed
+=========== bugs/bug322.go
+bugs/bug322.dir/main.go:19: implicit assignment of unexported field 'x' of lib.T in method receiver
+bugs/bug322.dir/main.go:22: implicit assignment of unexported field 'x' of lib.T in assignment
+bugs/bug322.dir/main.go:31: implicit assignment of unexported field 'x' of lib.T in method receiver
+BUG: fails incorrectly
+
+=========== bugs/bug324.go
+BUG: errchk: command succeeded unexpectedly
diff --git a/gcc/testsuite/go.test/test/hashmap.go b/gcc/testsuite/go.test/test/hashmap.go
index 096ece0a530..0a4d7ab61ee 100755
--- a/gcc/testsuite/go.test/test/hashmap.go
+++ b/gcc/testsuite/go.test/test/hashmap.go
@@ -21,7 +21,7 @@ func ASSERT(p bool) {
type KeyType interface {
Hash() uint32
- Match(other *KeyType) bool
+ Match(other KeyType) bool
}
@@ -31,8 +31,8 @@ type ValueType interface {
type Entry struct {
- key *KeyType
- value *ValueType
+ key KeyType
+ value ValueType
}
@@ -68,7 +68,7 @@ func (m *HashMap) Initialize (initial_log2_capacity uint32) {
}
-func (m *HashMap) Probe (key *KeyType) *Entry {
+func (m *HashMap) Probe (key KeyType) *Entry {
ASSERT(key != nil)
var i uint32 = key.Hash() % m.capacity()
@@ -86,7 +86,7 @@ func (m *HashMap) Probe (key *KeyType) *Entry {
}
-func (m *HashMap) Lookup (key *KeyType, insert bool) *Entry {
+func (m *HashMap) Lookup (key KeyType, insert bool) *Entry {
// Find a matching entry.
var p *Entry = m.Probe(key)
if p.key != nil {
@@ -145,7 +145,7 @@ func (n *Number) Hash() uint32 {
}
-func (n *Number) Match(other *KeyType) bool {
+func (n *Number) Match(other KeyType) bool {
// var y *Number = other
// return n.x == y.x
return false
diff --git a/gcc/testsuite/go.test/test/if.go b/gcc/testsuite/go.test/test/if.go
index db1fe8b7907..c1bb69d277f 100644
--- a/gcc/testsuite/go.test/test/if.go
+++ b/gcc/testsuite/go.test/test/if.go
@@ -45,18 +45,6 @@ func main() {
assertequal(count, 0, "if false one")
count = 0
- if {
- count = count + 1
- }
- assertequal(count, 1, "if empty")
-
- count = 0
- if one := 1; true {
- count = count + one
- }
- assertequal(count, 1, "if empty one")
-
- count = 0
if i5 < i7 {
count = count + 1
}
diff --git a/gcc/testsuite/go.test/test/if1.go b/gcc/testsuite/go.test/test/if1.go
deleted file mode 100644
index 061c36411ed..00000000000
--- a/gcc/testsuite/go.test/test/if1.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// $G $F.go && $L $F.$A && ./$A.out
-
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import "os"
-
-func main() {
- count := 7
- if one := 1; {
- count = count + one
- }
- if count != 8 {
- print(count, " should be 8\n")
- os.Exit(1)
- }
-}
diff --git a/gcc/testsuite/go.test/test/index.go b/gcc/testsuite/go.test/test/index.go
index a91294cffbb..38aa33dd305 100644
--- a/gcc/testsuite/go.test/test/index.go
+++ b/gcc/testsuite/go.test/test/index.go
@@ -1,8 +1,8 @@
// $G $D/$F.go && $L $F.$A &&
-// ./$A.out -pass 0 >tmp.go && $G tmp.go && $L -o tmp1.$A tmp.$A && ./tmp1.$A &&
+// ./$A.out -pass 0 >tmp.go && $G tmp.go && $L -o $A.out1 tmp.$A && ./$A.out1 &&
// ./$A.out -pass 1 >tmp.go && errchk $G -e tmp.go &&
// ./$A.out -pass 2 >tmp.go && errchk $G -e tmp.go
-// rm -f tmp.go
+// rm -f tmp.go $A.out1
// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
diff --git a/gcc/testsuite/go.test/test/init.go b/gcc/testsuite/go.test/test/init.go
new file mode 100644
index 00000000000..74c2d5c2614
--- /dev/null
+++ b/gcc/testsuite/go.test/test/init.go
@@ -0,0 +1,18 @@
+// errchk $G -e $D/$F.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "runtime"
+
+func init() {
+}
+
+func main() {
+ init() // ERROR "undefined.*init"
+ runtime.init() // ERROR "unexported.*runtime\.init"
+ var _ = init // ERROR "undefined.*init"
+}
diff --git a/gcc/testsuite/go.test/test/interface/embed.go b/gcc/testsuite/go.test/test/interface/embed.go
index 4a702398c67..2fddee1905a 100644
--- a/gcc/testsuite/go.test/test/interface/embed.go
+++ b/gcc/testsuite/go.test/test/interface/embed.go
@@ -4,7 +4,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// Check methods derived from embedded interface and *interface values.
+// Check methods derived from embedded interface values.
package main
@@ -19,18 +19,12 @@ func (t T) M() int64 { return int64(t) }
var t = T(Value)
var pt = &t
var ti Inter = t
-var pti = &ti
type S struct { Inter }
var s = S{ ti }
var ps = &s
-type SP struct { *Inter }
-var sp = SP{ &ti }
-var psp = &sp
-
var i Inter
-var pi = &i
var ok = true
@@ -45,35 +39,20 @@ func main() {
check("t.M()", t.M())
check("pt.M()", pt.M())
check("ti.M()", ti.M())
- check("pti.M()", pti.M())
check("s.M()", s.M())
check("ps.M()", ps.M())
- check("sp.M()", sp.M())
- check("psp.M()", psp.M())
i = t
check("i = t; i.M()", i.M())
- check("i = t; pi.M()", pi.M())
i = pt
check("i = pt; i.M()", i.M())
- check("i = pt; pi.M()", pi.M())
i = s
check("i = s; i.M()", i.M())
- check("i = s; pi.M()", pi.M())
i = ps
check("i = ps; i.M()", i.M())
- check("i = ps; pi.M()", pi.M())
-
- i = sp
- check("i = sp; i.M()", i.M())
- check("i = sp; pi.M()", pi.M())
-
- i = psp
- check("i = psp; i.M()", i.M())
- check("i = psp; pi.M()", pi.M())
if !ok {
println("BUG: interface10")
diff --git a/gcc/testsuite/go.test/test/interface/embed2.go b/gcc/testsuite/go.test/test/interface/embed2.go
new file mode 100644
index 00000000000..c18a1fecec2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/interface/embed2.go
@@ -0,0 +1,70 @@
+// errchk $G -e $D/$F.go
+
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check methods derived from embedded interface and *interface values.
+
+package main
+
+import "os"
+
+const Value = 1e12
+
+type Inter interface { M() int64 }
+
+type T int64
+func (t T) M() int64 { return int64(t) }
+var t = T(Value)
+var pt = &t
+var ti Inter = t
+var pti = &ti
+
+type S struct { Inter }
+var s = S{ ti }
+var ps = &s
+
+type SP struct { *Inter } // ERROR "interface"
+
+var i Inter
+var pi = &i
+
+var ok = true
+
+func check(s string, v int64) {
+ if v != Value {
+ println(s, v)
+ ok = false
+ }
+}
+
+func main() {
+ check("t.M()", t.M())
+ check("pt.M()", pt.M())
+ check("ti.M()", ti.M())
+ check("pti.M()", pti.M()) // ERROR "method"
+ check("s.M()", s.M())
+ check("ps.M()", ps.M())
+
+ i = t
+ check("i = t; i.M()", i.M())
+ check("i = t; pi.M()", pi.M()) // ERROR "method"
+
+ i = pt
+ check("i = pt; i.M()", i.M())
+ check("i = pt; pi.M()", pi.M()) // ERROR "method"
+
+ i = s
+ check("i = s; i.M()", i.M())
+ check("i = s; pi.M()", pi.M()) // ERROR "method"
+
+ i = ps
+ check("i = ps; i.M()", i.M())
+ check("i = ps; pi.M()", pi.M()) // ERROR "method"
+
+ if !ok {
+ println("BUG: interface10")
+ os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/ken/convert.go b/gcc/testsuite/go.test/test/ken/convert.go
new file mode 100644
index 00000000000..3780ec886a4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/ken/convert.go
@@ -0,0 +1,431 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// near-exhaustive test of converting numbers between types.
+
+package main
+
+var i8 int8;
+var u8 uint8;
+var i16 int16;
+var u16 uint16;
+var i32 int32;
+var u32 uint32;
+var i64 int64;
+var u64 uint64;
+var f32 float32;
+var f64 float64;
+
+type big float64
+
+type t struct {
+ from, to int
+ val big
+}
+
+const (
+ ti8 = iota+1
+ tu8
+ ti16
+ tu16
+ ti32
+ tu32
+ ti64
+ tu64
+ tf32
+ tf64
+)
+
+var x = []t{
+
+ /* value good in all types (10) */
+ { ti8, ti8, 10 }, { ti8, tu8, 10 }, { ti8, ti16, 10 }, { ti8, tu16, 10 },
+ { ti8, ti32, 10 }, { ti8, tu32, 10 }, { ti8, ti64, 10 }, { ti8, tu64, 10 },
+ { ti8, tf32, 10 }, { ti8, tf64, 10 },
+
+ { tu8, ti8, 10 }, { tu8, tu8, 10 }, { tu8, ti16, 10 }, { tu8, tu16, 10 },
+ { tu8, ti32, 10 }, { tu8, tu32, 10 }, { tu8, ti64, 10 }, { tu8, tu64, 10 },
+ { tu8, tf32, 10 }, { tu8, tf64, 10 },
+
+ { ti16, ti8, 10 }, { ti16, tu8, 10 }, { ti16, ti16, 10 }, { ti16, tu16, 10 },
+ { ti16, ti32, 10 }, { ti16, tu32, 10 }, { ti16, ti64, 10 }, { ti16, tu64, 10 },
+ { ti16, tf32, 10 }, { ti16, tf64, 10 },
+
+ { tu16, ti8, 10 }, { tu16, tu8, 10 }, { tu16, ti16, 10 }, { tu16, tu16, 10 },
+ { tu16, ti32, 10 }, { tu16, tu32, 10 }, { tu16, ti64, 10 }, { tu16, tu64, 10 },
+ { tu16, tf32, 10 }, { tu16, tf64, 10 },
+
+ { ti32, ti8, 10 }, { ti32, tu8, 10 }, { ti32, ti16, 10 }, { ti32, tu16, 10 },
+ { ti32, ti32, 10 }, { ti32, tu32, 10 }, { ti32, ti64, 10 }, { ti32, tu64, 10 },
+ { ti32, tf32, 10 }, { ti32, tf64, 10 },
+
+ { tu32, ti8, 10 }, { tu32, tu8, 10 }, { tu32, ti16, 10 }, { tu32, tu16, 10 },
+ { tu32, ti32, 10 }, { tu32, tu32, 10 }, { tu32, ti64, 10 }, { tu32, tu64, 10 },
+ { tu32, tf32, 10 }, { tu32, tf64, 10 },
+
+ { ti64, ti8, 10 }, { ti64, tu8, 10 }, { ti64, ti16, 10 }, { ti64, tu16, 10 },
+ { ti64, ti32, 10 }, { ti64, tu32, 10 }, { ti64, ti64, 10 }, { ti64, tu64, 10 },
+ { ti64, tf32, 10 }, { ti64, tf64, 10 },
+
+ { tu64, ti8, 10 }, { tu64, tu8, 10 }, { tu64, ti16, 10 }, { tu64, tu16, 10 },
+ { tu64, ti32, 10 }, { tu64, tu32, 10 }, { tu64, ti64, 10 }, { tu64, tu64, 10 },
+ { tu64, tf32, 10 }, { tu64, tf64, 10 },
+
+ { tf32, ti8, 10 }, { tf32, tu8, 10 }, { tf32, ti16, 10 }, { tf32, tu16, 10 },
+ { tf32, ti32, 10 }, { tf32, tu32, 10 }, { tf32, ti64, 10 }, { tf32, tu64, 10 },
+ { tf32, tf32, 10 }, { tf32, tf64, 10 },
+
+ { tf64, ti8, 10 }, { tf64, tu8, 10 }, { tf64, ti16, 10 }, { tf64, tu16, 10 },
+ { tf64, ti32, 10 }, { tf64, tu32, 10 }, { tf64, ti64, 10 }, { tf64, tu64, 10 },
+ { tf64, tf32, 10 }, { tf64, tf64, 10 },
+
+ /* value good in all signed types (-4) */
+ { ti8, ti8, -4 }, { ti8, ti16, -4 },
+ { ti8, ti32, -4 }, { ti8, ti64, -4 },
+ { ti8, tf32, -4 }, { ti8, tf64, -4 },
+
+ { ti16, ti8, -4 }, { ti16, ti16, -4 },
+ { ti16, ti32, -4 }, { ti16, ti64, -4 },
+ { ti16, tf32, -4 },
+
+ { ti32, ti8, -4 }, { ti32, ti16, -4 },
+ { ti32, ti32, -4 }, { ti32, ti64, -4 },
+ { ti32, tf32, -4 }, { ti32, tf64, -4 },
+
+ { ti64, ti8, -4 }, { ti64, ti16, -4 },
+ { ti64, ti32, -4 }, { ti64, ti64, -4 },
+ { ti64, tf32, -4 },
+
+ { tf32, ti8, -4 }, { tf32, ti16, -4 },
+ { tf32, ti32, -4 }, { tf32, ti64, -4 },
+ { tf32, tf32, -4 },
+
+ { tf64, ti8, -4 }, { tf64, ti16, -4 },
+ { tf64, ti32, -4 }, { tf64, ti64, -4 },
+ { tf64, tf32, -4 }, { tf64, tf64, -4 },
+
+ /* value good in u8 and up (175) */
+ { tu8, tu8, 175 }, { tu8, ti16, 175 }, { tu8, tu16, 175 },
+ { tu8, ti32, 175 }, { tu8, tu32, 175 }, { tu8, ti64, 175 }, { tu8, tu64, 175 },
+ { tu8, tf32, 175 }, { tu8, tf64, 175 },
+
+ { ti16, tu8, 175 }, { ti16, ti16, 175 }, { ti16, tu16, 175 },
+ { ti16, ti32, 175 }, { ti16, tu32, 175 }, { ti16, ti64, 175 }, { ti16, tu64, 175 },
+ { ti16, tf32, 175 }, { ti16, tf64, 175 },
+
+ { tu16, tu8, 175 }, { tu16, ti16, 175 }, { tu16, tu16, 175 },
+ { tu16, ti32, 175 }, { tu16, tu32, 175 }, { tu16, ti64, 175 }, { tu16, tu64, 175 },
+ { tu16, tf32, 175 }, { tu16, tf64, 175 },
+
+ { ti32, tu8, 175 }, { ti32, ti16, 175 }, { ti32, tu16, 175 },
+ { ti32, ti32, 175 }, { ti32, tu32, 175 }, { ti32, ti64, 175 }, { ti32, tu64, 175 },
+ { ti32, tf32, 175 }, { ti32, tf64, 175 },
+
+ { tu32, tu8, 175 }, { tu32, ti16, 175 }, { tu32, tu16, 175 },
+ { tu32, ti32, 175 }, { tu32, tu32, 175 }, { tu32, ti64, 175 }, { tu32, tu64, 175 },
+ { tu32, tf32, 175 }, { tu32, tf64, 175 },
+
+ { ti64, tu8, 175 }, { ti64, ti16, 175 }, { ti64, tu16, 175 },
+ { ti64, ti32, 175 }, { ti64, tu32, 175 }, { ti64, ti64, 175 }, { ti64, tu64, 175 },
+ { ti64, tf32, 175 }, { ti64, tf64, 175 },
+
+ { tu64, tu8, 175 }, { tu64, ti16, 175 }, { tu64, tu16, 175 },
+ { tu64, ti32, 175 }, { tu64, tu32, 175 }, { tu64, ti64, 175 }, { tu64, tu64, 175 },
+ { tu64, tf32, 175 }, { tu64, tf64, 175 },
+
+ { tf32, tu8, 175 }, { tf32, ti16, 175 }, { tf32, tu16, 175 },
+ { tf32, ti32, 175 }, { tf32, tu32, 175 }, { tf32, ti64, 175 }, { tf32, tu64, 175 },
+ { tf32, tf32, 175 }, { tf32, tf64, 175 },
+
+ { tf64, tu8, 175 }, { tf64, ti16, 175 }, { tf64, tu16, 175 },
+ { tf64, ti32, 175 }, { tf64, tu32, 175 }, { tf64, ti64, 175 }, { tf64, tu64, 175 },
+ { tf64, tf32, 175 }, { tf64, tf64, 175 },
+
+ /* value good in u16 and up (41259) */
+ { tu16, tu16, 41259 },
+ { tu16, ti32, 41259 }, { tu16, ti64, 41259 }, { tu16, tu64, 41259 },
+ { tu16, tf32, 41259 }, { tu16, tf64, 41259 },
+
+ { ti32, tu16, 41259 },
+ { ti32, ti32, 41259 }, { ti32, tu32, 41259 }, { ti32, ti64, 41259 }, { ti32, tu64, 41259 },
+ { ti32, tf32, 41259 }, { ti32, tf64, 41259 },
+
+ { tu32, tu16, 41259 },
+ { tu32, ti32, 41259 }, { tu32, tu32, 41259 }, { tu32, ti64, 41259 }, { tu32, tu64, 41259 },
+ { tu32, tf32, 41259 }, { tu32, tf64, 41259 },
+
+ { ti64, tu16, 41259 },
+ { ti64, ti32, 41259 }, { ti64, tu32, 41259 }, { ti64, ti64, 41259 }, { ti64, tu64, 41259 },
+ { ti64, tf32, 41259 }, { ti64, tf64, 41259 },
+
+ { tu64, tu16, 41259 },
+ { tu64, ti32, 41259 }, { tu64, tu32, 41259 }, { tu64, ti64, 41259 }, { tu64, tu64, 41259 },
+ { tu64, tf32, 41259 }, { tu64, tf64, 41259 },
+
+ { tf32, tu16, 41259 },
+ { tf32, ti32, 41259 }, { tf32, tu32, 41259 }, { tf32, ti64, 41259 }, { tf32, tu64, 41259 },
+ { tf32, tf32, 41259 }, { tf32, tf64, 41259 },
+
+ { tf64, tu16, 41259 },
+ { tf64, ti32, 41259 }, { tf64, tu32, 41259 }, { tf64, ti64, 41259 }, { tf64, tu64, 41259 },
+ { tf64, tf32, 41259 }, { tf64, tf64, 41259 },
+
+ /* value good in u32 and up (3758096384) */
+ { tu32, tu32, 3758096384 }, { tu32, ti64, 3758096384 }, { tu32, tu64, 3758096384 },
+ { tu32, tf32, 3758096384 }, { tu32, tf64, 3758096384 },
+
+ { ti64, tu32, 3758096384 }, { ti64, ti64, 3758096384 }, { ti64, tu64, 3758096384 },
+ { ti64, tf32, 3758096384 }, { ti64, tf64, 3758096384 },
+
+ { tu64, tu32, 3758096384 }, { tu64, ti64, 3758096384 }, { tu64, tu64, 3758096384 },
+ { tu64, tf32, 3758096384 }, { tu64, tf64, 3758096384 },
+
+ { tf32, tu32, 3758096384 }, { tf32, ti64, 3758096384 }, { tf32, tu64, 3758096384 },
+ { tf32, tf32, 3758096384 }, { tf32, tf64, 3758096384 },
+
+ { tf64, tu32, 3758096384 }, { tf64, ti64, 3758096384 }, { tf64, tu64, 3758096384 },
+ { tf64, tf32, 3758096384 }, { tf64, tf64, 3758096384 },
+
+ /* value good in u64 and up (16717361816799281152) */
+ { tu64, tu64, 16717361816799281152 },
+ { tu64, tf32, 16717361816799281152 }, { tu64, tf64, 16717361816799281152 },
+
+ { tf32, tu64, 16717361816799281152 },
+ { tf32, tf32, 16717361816799281152 }, { tf32, tf64, 16717361816799281152 },
+
+ { tf64, tu64, 16717361816799281152 },
+ { tf64, tf32, 16717361816799281152 }, { tf64, tf64, 16717361816799281152 },
+}
+
+func main() {
+ for i:=0; i<len(x); i++ {
+ v := x[i].val // input value
+ w := big(0) // output value
+ f := x[i].from // input type
+ t := x[i].to // output type
+
+ i8 = 0; u8 = 0; i16 = 0; u16 = 0
+ i32 = 0; u32 = 0; i64 = 0; u64 = 0
+ f32 = 0; f64 = 0
+
+ switch f*100 + t {
+ default:
+ println("missing case", i, v, f, t)
+ w = v
+
+ case ti8*100 + ti8:
+ i8 = int8(v); i8 = int8(i8); w = big(i8)
+ case ti8*100 + tu8:
+ i8 = int8(v); u8 = uint8(i8); w = big(u8)
+ case ti8*100 + ti16:
+ i8 = int8(v); i16 = int16(i8); w = big(i16)
+ case ti8*100 + tu16:
+ i8 = int8(v); u16 = uint16(i8); w = big(u16)
+ case ti8*100 + ti32:
+ i8 = int8(v); i32 = int32(i8); w = big(i32)
+ case ti8*100 + tu32:
+ i8 = int8(v); u32 = uint32(i8); w = big(u32)
+ case ti8*100 + ti64:
+ i8 = int8(v); i64 = int64(i8); w = big(i64)
+ case ti8*100 + tu64:
+ i8 = int8(v); u64 = uint64(i8); w = big(u64)
+ case ti8*100 + tf32:
+ i8 = int8(v); f32 = float32(i8); w = big(f32)
+ case ti8*100 + tf64:
+ i8 = int8(v); f64 = float64(i8); w = big(f64)
+
+ case tu8*100 + ti8:
+ u8 = uint8(v); i8 = int8(u8); w = big(i8)
+ case tu8*100 + tu8:
+ u8 = uint8(v); u8 = uint8(u8); w = big(u8)
+ case tu8*100 + ti16:
+ u8 = uint8(v); i16 = int16(u8); w = big(i16)
+ case tu8*100 + tu16:
+ u8 = uint8(v); u16 = uint16(u8); w = big(u16)
+ case tu8*100 + ti32:
+ u8 = uint8(v); i32 = int32(u8); w = big(i32)
+ case tu8*100 + tu32:
+ u8 = uint8(v); u32 = uint32(u8); w = big(u32)
+ case tu8*100 + ti64:
+ u8 = uint8(v); i64 = int64(u8); w = big(i64)
+ case tu8*100 + tu64:
+ u8 = uint8(v); u64 = uint64(u8); w = big(u64)
+ case tu8*100 + tf32:
+ u8 = uint8(v); f32 = float32(u8); w = big(f32)
+ case tu8*100 + tf64:
+ u8 = uint8(v); f64 = float64(u8); w = big(f64)
+
+ case ti16*100 + ti8:
+ i16 = int16(v); i8 = int8(i16); w = big(i8)
+ case ti16*100 + tu8:
+ i16 = int16(v); u8 = uint8(i16); w = big(u8)
+ case ti16*100 + ti16:
+ i16 = int16(v); i16 = int16(i16); w = big(i16)
+ case ti16*100 + tu16:
+ i16 = int16(v); u16 = uint16(i16); w = big(u16)
+ case ti16*100 + ti32:
+ i16 = int16(v); i32 = int32(i16); w = big(i32)
+ case ti16*100 + tu32:
+ i16 = int16(v); u32 = uint32(i16); w = big(u32)
+ case ti16*100 + ti64:
+ i16 = int16(v); i64 = int64(i16); w = big(i64)
+ case ti16*100 + tu64:
+ i16 = int16(v); u64 = uint64(i16); w = big(u64)
+ case ti16*100 + tf32:
+ i16 = int16(v); f32 = float32(i16); w = big(f32)
+ case ti16*100 + tf64:
+ i16 = int16(v); f64 = float64(i16); w = big(f64)
+
+ case tu16*100 + ti8:
+ u16 = uint16(v); i8 = int8(u16); w = big(i8)
+ case tu16*100 + tu8:
+ u16 = uint16(v); u8 = uint8(u16); w = big(u8)
+ case tu16*100 + ti16:
+ u16 = uint16(v); i16 = int16(u16); w = big(i16)
+ case tu16*100 + tu16:
+ u16 = uint16(v); u16 = uint16(u16); w = big(u16)
+ case tu16*100 + ti32:
+ u16 = uint16(v); i32 = int32(u16); w = big(i32)
+ case tu16*100 + tu32:
+ u16 = uint16(v); u32 = uint32(u16); w = big(u32)
+ case tu16*100 + ti64:
+ u16 = uint16(v); i64 = int64(u16); w = big(i64)
+ case tu16*100 + tu64:
+ u16 = uint16(v); u64 = uint64(u16); w = big(u64)
+ case tu16*100 + tf32:
+ u16 = uint16(v); f32 = float32(u16); w = big(f32)
+ case tu16*100 + tf64:
+ u16 = uint16(v); f64 = float64(u16); w = big(f64)
+
+ case ti32*100 + ti8:
+ i32 = int32(v); i8 = int8(i32); w = big(i8)
+ case ti32*100 + tu8:
+ i32 = int32(v); u8 = uint8(i32); w = big(u8)
+ case ti32*100 + ti16:
+ i32 = int32(v); i16 = int16(i32); w = big(i16)
+ case ti32*100 + tu16:
+ i32 = int32(v); u16 = uint16(i32); w = big(u16)
+ case ti32*100 + ti32:
+ i32 = int32(v); i32 = int32(i32); w = big(i32)
+ case ti32*100 + tu32:
+ i32 = int32(v); u32 = uint32(i32); w = big(u32)
+ case ti32*100 + ti64:
+ i32 = int32(v); i64 = int64(i32); w = big(i64)
+ case ti32*100 + tu64:
+ i32 = int32(v); u64 = uint64(i32); w = big(u64)
+ case ti32*100 + tf32:
+ i32 = int32(v); f32 = float32(i32); w = big(f32)
+ case ti32*100 + tf64:
+ i32 = int32(v); f64 = float64(i32); w = big(f64)
+
+ case tu32*100 + ti8:
+ u32 = uint32(v); i8 = int8(u32); w = big(i8)
+ case tu32*100 + tu8:
+ u32 = uint32(v); u8 = uint8(u32); w = big(u8)
+ case tu32*100 + ti16:
+ u32 = uint32(v); i16 = int16(u32); w = big(i16)
+ case tu32*100 + tu16:
+ u32 = uint32(v); u16 = uint16(u32); w = big(u16)
+ case tu32*100 + ti32:
+ u32 = uint32(v); i32 = int32(u32); w = big(i32)
+ case tu32*100 + tu32:
+ u32 = uint32(v); u32 = uint32(u32); w = big(u32)
+ case tu32*100 + ti64:
+ u32 = uint32(v); i64 = int64(u32); w = big(i64)
+ case tu32*100 + tu64:
+ u32 = uint32(v); u64 = uint64(u32); w = big(u64)
+ case tu32*100 + tf32:
+ u32 = uint32(v); f32 = float32(u32); w = big(f32)
+ case tu32*100 + tf64:
+ u32 = uint32(v); f64 = float64(u32); w = big(f64)
+
+ case ti64*100 + ti8:
+ i64 = int64(v); i8 = int8(i64); w = big(i8)
+ case ti64*100 + tu8:
+ i64 = int64(v); u8 = uint8(i64); w = big(u8)
+ case ti64*100 + ti16:
+ i64 = int64(v); i16 = int16(i64); w = big(i16)
+ case ti64*100 + tu16:
+ i64 = int64(v); u16 = uint16(i64); w = big(u16)
+ case ti64*100 + ti32:
+ i64 = int64(v); i32 = int32(i64); w = big(i32)
+ case ti64*100 + tu32:
+ i64 = int64(v); u32 = uint32(i64); w = big(u32)
+ case ti64*100 + ti64:
+ i64 = int64(v); i64 = int64(i64); w = big(i64)
+ case ti64*100 + tu64:
+ i64 = int64(v); u64 = uint64(i64); w = big(u64)
+ case ti64*100 + tf32:
+ i64 = int64(v); f32 = float32(i64); w = big(f32)
+ case ti64*100 + tf64:
+ i64 = int64(v); f64 = float64(i64); w = big(f64)
+
+ case tu64*100 + ti8:
+ u64 = uint64(v); i8 = int8(u64); w = big(i8)
+ case tu64*100 + tu8:
+ u64 = uint64(v); u8 = uint8(u64); w = big(u8)
+ case tu64*100 + ti16:
+ u64 = uint64(v); i16 = int16(u64); w = big(i16)
+ case tu64*100 + tu16:
+ u64 = uint64(v); u16 = uint16(u64); w = big(u16)
+ case tu64*100 + ti32:
+ u64 = uint64(v); i32 = int32(u64); w = big(i32)
+ case tu64*100 + tu32:
+ u64 = uint64(v); u32 = uint32(u64); w = big(u32)
+ case tu64*100 + ti64:
+ u64 = uint64(v); i64 = int64(u64); w = big(i64)
+ case tu64*100 + tu64:
+ u64 = uint64(v); u64 = uint64(u64); w = big(u64)
+ case tu64*100 + tf32:
+ u64 = uint64(v); f32 = float32(u64); w = big(f32)
+ case tu64*100 + tf64:
+ u64 = uint64(v); f64 = float64(u64); w = big(f64)
+
+ case tf32*100 + ti8:
+ f32 = float32(v); i8 = int8(f32); w = big(i8)
+ case tf32*100 + tu8:
+ f32 = float32(v); u8 = uint8(f32); w = big(u8)
+ case tf32*100 + ti16:
+ f32 = float32(v); i16 = int16(f32); w = big(i16)
+ case tf32*100 + tu16:
+ f32 = float32(v); u16 = uint16(f32); w = big(u16)
+ case tf32*100 + ti32:
+ f32 = float32(v); i32 = int32(f32); w = big(i32)
+ case tf32*100 + tu32:
+ f32 = float32(v); u32 = uint32(f32); w = big(u32)
+ case tf32*100 + ti64:
+ f32 = float32(v); i64 = int64(f32); w = big(i64)
+ case tf32*100 + tu64:
+ f32 = float32(v); u64 = uint64(f32); w = big(u64)
+ case tf32*100 + tf32:
+ f32 = float32(v); f32 = float32(f32); w = big(f32)
+ case tf32*100 + tf64:
+ f32 = float32(v); f64 = float64(f32); w = big(f64)
+
+ case tf64*100 + ti8:
+ f64 = float64(v); i8 = int8(f64); w = big(i8)
+ case tf64*100 + tu8:
+ f64 = float64(v); u8 = uint8(f64); w = big(u8)
+ case tf64*100 + ti16:
+ f64 = float64(v); i16 = int16(f64); w = big(i16)
+ case tf64*100 + tu16:
+ f64 = float64(v); u16 = uint16(f64); w = big(u16)
+ case tf64*100 + ti32:
+ f64 = float64(v); i32 = int32(f64); w = big(i32)
+ case tf64*100 + tu32:
+ f64 = float64(v); u32 = uint32(f64); w = big(u32)
+ case tf64*100 + ti64:
+ f64 = float64(v); i64 = int64(f64); w = big(i64)
+ case tf64*100 + tu64:
+ f64 = float64(v); u64 = uint64(f64); w = big(u64)
+ case tf64*100 + tf32:
+ f64 = float64(v); f32 = float32(f64); w = big(f32)
+ case tf64*100 + tf64:
+ f64 = float64(v); f64 = float64(f64); w = big(f64)
+ }
+ if v != w { println(i, v, w, f, t) }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/ken/cplx2.go b/gcc/testsuite/go.test/test/ken/cplx2.go
index 5a66dc9a954..b36e93ecd66 100644
--- a/gcc/testsuite/go.test/test/ken/cplx2.go
+++ b/gcc/testsuite/go.test/test/ken/cplx2.go
@@ -28,13 +28,13 @@ const (
func main() {
- r := 5 + 0i
+ var r complex64 = 5 + 0i
if r != R {
println("opcode 1", r, R)
panic("fail")
}
- i := 6i
+ var i complex64 = 6i
if i != I {
println("opcode 2", i, I)
panic("fail")
diff --git a/gcc/testsuite/go.test/test/ken/robif.go b/gcc/testsuite/go.test/test/ken/robif.go
deleted file mode 100644
index b6fe4e4330b..00000000000
--- a/gcc/testsuite/go.test/test/ken/robif.go
+++ /dev/null
@@ -1,97 +0,0 @@
-// $G $D/$F.go && $L $F.$A && ./$A.out
-
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-func assertequal(is, shouldbe int, msg string) {
- if is != shouldbe {
- print("assertion fail" + msg + "\n");
- panic(1);
- }
-}
-
-func main() {
- i5 := 5;
- i7 := 7;
-
- var count int;
-
- count = 0;
- if true {
- count = count + 1;
- }
- assertequal(count, 1, "if true");
-
- count = 0;
- if false {
- count = count + 1;
- }
- assertequal(count, 0, "if false");
-
- count = 0;
- if one := 1; true {
- count = count + one;
- }
- assertequal(count, 1, "if true one");
-
- count = 0;
- if one := 1; false {
- _ = one;
- count = count + 1;
- }
- assertequal(count, 0, "if false one");
-
- count = 0;
- if {
- count = count + 1;
- }
- assertequal(count, 1, "if empty");
-
- count = 0;
- if one := 1; {
- count = count + one;
- }
- assertequal(count, 1, "if empty one");
-
- count = 0;
- if i5 < i7 {
- count = count + 1;
- }
- assertequal(count, 1, "if cond");
-
- count = 0;
- if true {
- count = count + 1;
- } else
- count = count - 1;
- assertequal(count, 1, "if else true");
-
- count = 0;
- if false {
- count = count + 1;
- } else
- count = count - 1;
- assertequal(count, -1, "if else false");
-
- count = 0;
- if t:=1; false {
- count = count + 1;
- t := 7;
- _ = t;
- } else
- count = count - t;
- assertequal(count, -1, "if else false var");
-
- count = 0;
- t := 1;
- if false {
- count = count + 1;
- t := 7;
- _ = t;
- } else
- count = count - t;
- assertequal(count, -1, "if else false var outside");
-}
diff --git a/gcc/testsuite/go.test/test/label.go b/gcc/testsuite/go.test/test/label.go
new file mode 100644
index 00000000000..e3d853266e1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/label.go
@@ -0,0 +1,60 @@
+// errchk $G -e $D/$F.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Pass 1 label errors.
+
+package main
+
+var x int
+
+func f() {
+L1: // ERROR "label .*L1.* defined and not used"
+ for {
+ }
+L2: // ERROR "label .*L2.* defined and not used"
+ select {
+ }
+L3: // ERROR "label .*L3.* defined and not used"
+ switch {
+ }
+L4: // ERROR "label .*L4.* defined and not used"
+ if true {
+ }
+L5: // ERROR "label .*L5.* defined and not used"
+ f()
+L6: // GCCGO_ERROR "previous"
+ f()
+L6: // ERROR "label .*L6.* already defined"
+ f()
+ if x == 20 {
+ goto L6
+ }
+
+L7:
+ for {
+ break L7
+ }
+
+L8:
+ for {
+ if x == 21 {
+ continue L8
+ }
+ }
+
+L9:
+ switch {
+ case true:
+ break L9
+ defalt: // ERROR "label .*defalt.* defined and not used"
+ }
+
+L10:
+ select {
+ default:
+ break L10
+ }
+}
diff --git a/gcc/testsuite/go.test/test/label1.go b/gcc/testsuite/go.test/test/label1.go
new file mode 100644
index 00000000000..656daaeea54
--- /dev/null
+++ b/gcc/testsuite/go.test/test/label1.go
@@ -0,0 +1,85 @@
+// errchk $G -e $D/$F.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Pass 2 label errors.
+
+package main
+
+var x int
+
+func f() {
+L1:
+ for {
+ if x == 0 {
+ break L1
+ }
+ if x == 1 {
+ continue L1
+ }
+ goto L1
+ }
+
+L2:
+ select {
+ default:
+ if x == 0 {
+ break L2
+ }
+ if x == 1 {
+ continue L2 // ERROR "invalid continue label .*L2"
+ }
+ goto L2
+ }
+
+L3:
+ switch {
+ case x > 10:
+ if x == 11 {
+ break L3
+ }
+ if x == 12 {
+ continue L3 // ERROR "invalid continue label .*L3"
+ }
+ goto L3
+ }
+
+L4:
+ if true {
+ if x == 13 {
+ break L4 // ERROR "invalid break label .*L4"
+ }
+ if x == 14 {
+ continue L4 // ERROR "invalid continue label .*L4"
+ }
+ if x == 15 {
+ goto L4
+ }
+ }
+
+L5:
+ f()
+ if x == 16 {
+ break L5 // ERROR "invalid break label .*L5"
+ }
+ if x == 17 {
+ continue L5 // ERROR "invalid continue label .*L5"
+ }
+ if x == 18 {
+ goto L5
+ }
+
+ for {
+ if x == 19 {
+ break L1 // ERROR "invalid break label .*L1"
+ }
+ if x == 20 {
+ continue L1 // ERROR "invalid continue label .*L1"
+ }
+ if x == 21 {
+ goto L1
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/method.go b/gcc/testsuite/go.test/test/method.go
index c751c1f1b52..b5a02c6873e 100644
--- a/gcc/testsuite/go.test/test/method.go
+++ b/gcc/testsuite/go.test/test/method.go
@@ -19,7 +19,7 @@ func (s S) val() int { return 1 }
func (s *S1) val() int { return 2 }
func (i I) val() int { return 3 }
func (i *I1) val() int { return 4 }
-//func (t T) val() int { return 7 }
+func (t T) val() int { return 7 }
func (t *T1) val() int { return 8 }
type Val interface {
@@ -34,6 +34,8 @@ func main() {
var i I
var pi *I1
var pt *T1
+ var t T
+ var v Val
if s.val() != 1 {
println("s.val:", s.val())
@@ -75,7 +77,10 @@ func main() {
println("(*I1).val(pi):", (*I1).val(pi))
panic("fail")
}
- // if t.val() != 7 { prinln("t.val:", t.val()); panic("fail") }
+ if t.val() != 7 {
+ println("t.val:", t.val())
+ panic("fail")
+ }
if pt.val() != 8 {
println("pt.val:", pt.val())
panic("fail")
@@ -101,11 +106,22 @@ func main() {
println("pi.val:", val(pi))
panic("fail")
}
- // if val(t) != 7 { println("t.val:", val(t)); panic("fail") }
+ if val(t) != 7 {
+ println("t.val:", val(t))
+ panic("fail")
+ }
if val(pt) != 8 {
println("pt.val:", val(pt))
panic("fail")
}
- // if Val.val(i) != 3 { println("Val.val(i):", Val.val(i)); panic("fail") }
+ if Val.val(i) != 3 {
+ println("Val.val(i):", Val.val(i))
+ panic("fail")
+ }
+ v = i
+ if Val.val(v) != 3 {
+ println("Val.val(v):", Val.val(v))
+ panic("fail")
+ }
}
diff --git a/gcc/testsuite/go.test/test/method2.go b/gcc/testsuite/go.test/test/method2.go
index 3ee0ae1364f..a72536e7b33 100644
--- a/gcc/testsuite/go.test/test/method2.go
+++ b/gcc/testsuite/go.test/test/method2.go
@@ -6,9 +6,22 @@
package main
-type T struct {a int}
+type T struct {
+ a int
+}
type P *T
type P1 *T
-func (p P) val() int { return 1 } // ERROR "receiver"
-func (p *P1) val() int { return 1 } // ERROR "receiver"
+func (p P) val() int { return 1 } // ERROR "receiver"
+func (p *P1) val() int { return 1 } // ERROR "receiver"
+
+type Val interface {
+ val() int
+}
+
+var _ = (*Val).val // ERROR "method"
+
+var v Val
+var pv = &v
+
+var _ = pv.val() // ERROR "method"
diff --git a/gcc/testsuite/go.test/test/named1.go b/gcc/testsuite/go.test/test/named1.go
index 600e502f9e8..7e7aab9c1d8 100644
--- a/gcc/testsuite/go.test/test/named1.go
+++ b/gcc/testsuite/go.test/test/named1.go
@@ -43,13 +43,6 @@ func main() {
_, b = m[2] // ERROR "cannot .* bool.*type Bool"
m[2] = 1, b // ERROR "cannot use.*type Bool.*as type bool"
- b = c <- 1 // ERROR "cannot use.*type bool.*type Bool"
- _ = b
- asBool(c <- 1) // ERROR "cannot use.*type bool.*as type Bool"
-
- _, b = <-c // ERROR "cannot .* bool.*type Bool"
- _ = b
-
var inter interface{}
_, b = inter.(Map) // ERROR "cannot .* bool.*type Bool"
_ = b
@@ -60,8 +53,9 @@ func main() {
_, b = minter.(Map) // ERROR "cannot .* bool.*type Bool"
_ = b
- asBool(closed(c)) // ERROR "cannot use.*type bool.*as type Bool"
- b = closed(c) // ERROR "cannot use.*type bool.*type Bool"
+ _, bb := <-c
+ asBool(bb) // ERROR "cannot use.*type bool.*as type Bool"
+ _, b = <-c // ERROR "cannot .* bool.*type Bool"
_ = b
asString(String(slice)) // ERROR "cannot .*type Slice.*type String"
diff --git a/gcc/testsuite/go.test/test/nilptr/arrayindex.go b/gcc/testsuite/go.test/test/nilptr/arrayindex.go
index c564bce3404..fa26532c67b 100644
--- a/gcc/testsuite/go.test/test/nilptr/arrayindex.go
+++ b/gcc/testsuite/go.test/test/nilptr/arrayindex.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # do not bother on NaCl
// $G $D/$F.go && $L $F.$A &&
// ((! sh -c ./$A.out) >/dev/null 2>&1 || echo BUG: should fail)
diff --git a/gcc/testsuite/go.test/test/nilptr/arrayindex1.go b/gcc/testsuite/go.test/test/nilptr/arrayindex1.go
index 701630ed150..64f46e14d19 100644
--- a/gcc/testsuite/go.test/test/nilptr/arrayindex1.go
+++ b/gcc/testsuite/go.test/test/nilptr/arrayindex1.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # do not bother on NaCl
// $G $D/$F.go && $L $F.$A &&
// ((! sh -c ./$A.out) >/dev/null 2>&1 || echo BUG: should fail)
diff --git a/gcc/testsuite/go.test/test/nilptr/arraytoslice.go b/gcc/testsuite/go.test/test/nilptr/arraytoslice.go
index 38206d50b8e..03879fb42f7 100644
--- a/gcc/testsuite/go.test/test/nilptr/arraytoslice.go
+++ b/gcc/testsuite/go.test/test/nilptr/arraytoslice.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # do not bother on NaCl
// $G $D/$F.go && $L $F.$A &&
// ((! sh -c ./$A.out) >/dev/null 2>&1 || echo BUG: should fail)
diff --git a/gcc/testsuite/go.test/test/nilptr/arraytoslice1.go b/gcc/testsuite/go.test/test/nilptr/arraytoslice1.go
index 8c9531e1763..c86070fa473 100644
--- a/gcc/testsuite/go.test/test/nilptr/arraytoslice1.go
+++ b/gcc/testsuite/go.test/test/nilptr/arraytoslice1.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # do not bother on NaCl
// $G $D/$F.go && $L $F.$A &&
// ((! sh -c ./$A.out) >/dev/null 2>&1 || echo BUG: should fail)
diff --git a/gcc/testsuite/go.test/test/nilptr/arraytoslice2.go b/gcc/testsuite/go.test/test/nilptr/arraytoslice2.go
index 1b2651381ef..68ea44083cb 100644
--- a/gcc/testsuite/go.test/test/nilptr/arraytoslice2.go
+++ b/gcc/testsuite/go.test/test/nilptr/arraytoslice2.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # do not bother on NaCl
// $G $D/$F.go && $L $F.$A &&
// ((! sh -c ./$A.out) >/dev/null 2>&1 || echo BUG: should fail)
diff --git a/gcc/testsuite/go.test/test/nilptr/slicearray.go b/gcc/testsuite/go.test/test/nilptr/slicearray.go
index 544536cc7ce..26ca4277328 100644
--- a/gcc/testsuite/go.test/test/nilptr/slicearray.go
+++ b/gcc/testsuite/go.test/test/nilptr/slicearray.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # do not bother on NaCl
// $G $D/$F.go && $L $F.$A &&
// ((! sh -c ./$A.out) >/dev/null 2>&1 || echo BUG: should fail)
diff --git a/gcc/testsuite/go.test/test/nilptr/structfield.go b/gcc/testsuite/go.test/test/nilptr/structfield.go
index e081f7a1718..35196bb68dd 100644
--- a/gcc/testsuite/go.test/test/nilptr/structfield.go
+++ b/gcc/testsuite/go.test/test/nilptr/structfield.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # do not bother on NaCl
// $G $D/$F.go && $L $F.$A &&
// ((! sh -c ./$A.out) >/dev/null 2>&1 || echo BUG: should fail)
diff --git a/gcc/testsuite/go.test/test/nilptr/structfield1.go b/gcc/testsuite/go.test/test/nilptr/structfield1.go
index 02d33a42c24..7c7abed1aa0 100644
--- a/gcc/testsuite/go.test/test/nilptr/structfield1.go
+++ b/gcc/testsuite/go.test/test/nilptr/structfield1.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # do not bother on NaCl
// $G $D/$F.go && $L $F.$A &&
// ((! sh -c ./$A.out) >/dev/null 2>&1 || echo BUG: should fail)
diff --git a/gcc/testsuite/go.test/test/nilptr/structfield2.go b/gcc/testsuite/go.test/test/nilptr/structfield2.go
index 4323b42b4db..02a44f17318 100644
--- a/gcc/testsuite/go.test/test/nilptr/structfield2.go
+++ b/gcc/testsuite/go.test/test/nilptr/structfield2.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # do not bother on NaCl
// $G $D/$F.go && $L $F.$A &&
// ((! sh -c ./$A.out) >/dev/null 2>&1 || echo BUG: should fail)
diff --git a/gcc/testsuite/go.test/test/nilptr/structfieldaddr.go b/gcc/testsuite/go.test/test/nilptr/structfieldaddr.go
index 81551aa3bad..f3177bafbaa 100644
--- a/gcc/testsuite/go.test/test/nilptr/structfieldaddr.go
+++ b/gcc/testsuite/go.test/test/nilptr/structfieldaddr.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # do not bother on NaCl
// $G $D/$F.go && $L $F.$A &&
// ((! sh -c ./$A.out) >/dev/null 2>&1 || echo BUG: should fail)
diff --git a/gcc/testsuite/go.test/test/nul1.go b/gcc/testsuite/go.test/test/nul1.go
index 9d6974f818b..9cf51125bcc 100644
--- a/gcc/testsuite/go.test/test/nul1.go
+++ b/gcc/testsuite/go.test/test/nul1.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # NaCl runner elides NUL in output
// [ "$GORUN" == "" ] || exit 0 # Android runner gets confused by the NUL output
// $G $D/$F.go && $L $F.$A && ./$A.out >tmp.go &&
// errchk $G -e tmp.go
diff --git a/gcc/testsuite/go.test/test/recover3.go b/gcc/testsuite/go.test/test/recover3.go
index b982ec8fa54..2aa1df616dc 100644
--- a/gcc/testsuite/go.test/test/recover3.go
+++ b/gcc/testsuite/go.test/test/recover3.go
@@ -1,4 +1,3 @@
-// [ $GOOS != nacl ] || exit 0 # NaCl cannot recover from signals
// $G $D/$F.go && $L $F.$A && ./$A.out
// Copyright 2010 The Go Authors. All rights reserved.
@@ -10,7 +9,6 @@ package main
import (
"runtime"
"strings"
- "syscall"
)
var didbug bool
@@ -44,7 +42,7 @@ func check(name string, f func(), err string) {
return
}
}()
-
+
f()
}
@@ -55,11 +53,8 @@ func main() {
var q *[10000]int
var i int
- // not catching divide by zero on the arm. is that even possible?
- if syscall.ARCH != "arm" {
- check("int-div-zero", func() { println(1/x) }, "integer divide by zero")
- check("int64-div-zero", func() { println(1/x64) }, "integer divide by zero")
- }
+ check("int-div-zero", func() { println(1 / x) }, "integer divide by zero")
+ check("int64-div-zero", func() { println(1 / x64) }, "integer divide by zero")
check("nil-deref", func() { println(p[0]) }, "nil pointer dereference")
check("nil-deref-1", func() { println(p[1]) }, "nil pointer dereference")
@@ -69,11 +64,13 @@ func main() {
var sl []int
check("array-bounds", func() { println(p[i]) }, "index out of range")
check("slice-bounds", func() { println(sl[i]) }, "index out of range")
-
+
var inter interface{}
inter = 1
check("type-concrete", func() { println(inter.(string)) }, "int, not string")
check("type-interface", func() { println(inter.(m)) }, "missing method m")
}
-type m interface{ m() }
+type m interface {
+ m()
+}
diff --git a/gcc/testsuite/go.test/test/run b/gcc/testsuite/go.test/test/run
index 4ca77541409..28d0caa0f68 100755
--- a/gcc/testsuite/go.test/test/run
+++ b/gcc/testsuite/go.test/test/run
@@ -14,7 +14,7 @@ X386)
;;
Xarm)
export A=5
- export E=${GORUN:-qemu-arm -cpu cortex-a8}
+ export E="$GORUN"
;;
*)
echo 1>&2 run: unsupported '$GOARCH'
@@ -49,15 +49,25 @@ ulimit -c 0
true >pass.out >times.out
+exclude=false # exclude nothing
+golden=golden.out
+
+filterout() {
+ grep '^'"$2"'$' $1 >/dev/null
+}
+
for dir in . ken chan interface nilptr syntax fixedbugs bugs
do
echo
echo '==' $dir'/'
for i in $(ls $dir/*.go 2>/dev/null)
- do
+ do (
+ if $exclude $i; then
+ exit 0 # continues for loop
+ fi
export F=$(basename $i .go)
export D=$dir
- sed '/^\/\//!q' $i | sed 's@//@@; $d' |sed 's|./\$A.out|$E &|' >$RUNFILE
+ sed '/^\/\//!q' $i | sed 's@//@@; $d' |sed 's|./\$A.out|$E &|g' >$RUNFILE
if ! { time -p bash -c "bash $RUNFILE >$TMP1FILE 2>&1" ; } 2>$TMP2FILE
then
echo
@@ -87,7 +97,7 @@ do
echo $i >>pass.out
fi
echo $(awk 'NR==1{print $2}' $TMP2FILE) $D/$F >>times.out
- done
+ ) done
done | # clean up some stack noise
egrep -v '^(r[0-9a-z]+|[cfg]s) +0x' |
sed '/tmp.*Bus error/s/.*Bus/Bus/; /tmp.*Trace.BPT/s/.*Trace/Trace/
@@ -99,12 +109,13 @@ done | # clean up some stack noise
/^Trace\/BPT trap/d
/RUNFILE/ s/line 1: *[0-9]*/line 1: PID/
/^\$RUNFILE: line 1: PID Trace\/breakpoint trap/d
+ /Fault in NaCl untrusted code/d
/Segmentation fault/d
/^qemu: uncaught target signal 11 (Segmentation fault) - exiting/d' > run.out
-rm -f $RUNFILE $TMP1FILE $TMP2FILE *.$A *.a $A.out
+rm -f $RUNFILE $TMP1FILE $TMP2FILE *.$A *.a $A.out
diffmsg=""
-if ! diff golden.out run.out
+if ! diff $golden run.out
then
diffmsg="; test output differs"
failed=1
diff --git a/gcc/testsuite/go.test/test/run-arm b/gcc/testsuite/go.test/test/run-arm
deleted file mode 100755
index a62df10ca4b..00000000000
--- a/gcc/testsuite/go.test/test/run-arm
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/bin/sh
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-export E=""
-case X"$GOARCH" in
-Xamd64)
- export A=6
- ;;
-X386)
- export A=8
- ;;
-Xarm)
- export A=5
- export E="${GORUN:-qemu-arm -cpu cortex-a8}"
- ;;
-*)
- echo 1>&2 run: unsupported '$GOARCH'
- exit 1
-esac
-
-export G=${A}g
-export L=${A}l
-export GOTRACEBACK=0
-
-PATH=/bin:/usr/bin:/usr/local/bin:${GOBIN:-$GOROOT/bin}:`pwd`
-
-RUNFILE=/tmp/gorun-$$-$USER
-TMP1FILE=/tmp/gotest1-$$-$USER
-TMP2FILE=/tmp/gotest2-$$-$USER
-FAILEDFILE=/tmp/gotest3-$$-$USER
-
-# don't run the machine out of memory: limit individual processes to 4GB.
-# on thresher, 3GB suffices to run the tests; with 2GB, peano fails.
-ulimit -v 4000000
-
-# no core files please
-ulimit -c 0
-
-true >times.out
-
-# TODO(kaib): figure out why the GC makes things so utterly slow.
-export GOGC=off
-export GOTRACEBACK=0
-
-for i in $(cat arm-pass.txt | sed 's/#.*//')
-do
- export F=$(basename $i .go)
- dir=$(dirname $i)
- export D=$dir
- sed '/^\/\//!q' $i | sed 's@//@@; $d' |sed 's|./\$A.out|$E &|' >$RUNFILE
- if ! { time -p bash -c "bash $RUNFILE >$TMP1FILE 2>&1" ; } 2>$TMP2FILE
- then
- echo
- echo "===========" $i
- cat $TMP1FILE
- echo >&2 fail: $i
- touch $FAILEDFILE
- elif test -s $TMP1FILE
- then
- echo
- echo "===========" $i
- cat $TMP1FILE
- elif [ $dir = "bugs" ]
- then
- echo $i succeeded with no output.
- fi
- echo $(awk 'NR==1{print $2}' $TMP2FILE) $D/$F >>times.out
-done | # clean up some stack noise
- egrep -v '^(r[0-9a-z]+|[cfg]s) +0x' |
- sed '/tmp.*Bus error/s/.*Bus/Bus/; /tmp.*Trace.BPT/s/.*Trace/Trace/
- s!'$RUNFILE'!$RUNFILE!g
- s/ PC=0x[0-9a-f]*/ PC=xxx/
- s/^pc: 0x[0-9a-f]*/pc: xxx/
- /^Trace\/breakpoint trap/d
- /^Trace\/BPT trap/d
- s!'$GOROOT'!$GOROOT!g
- /Segmentation fault/d
- /RUNFILE/ s/line 1: *[0-9]*/line 1: PID/
- /^\$RUNFILE: line 1: PID Trace\/breakpoint trap/d
- /^qemu: uncaught target signal 11 (Segmentation fault) - exiting/d' > run.out
-
-failed=0
-rm -f $RUNFILE $TMP1FILE $TMP2FILE *.$A $A.out
-diffmsg=""
-if ! diff -b golden-arm.out run.out
-then
- diffmsg="; test output differs"
- failed=1
-fi
-
-notinbugs=$(sed '/== bugs/q' run.out | grep -c '^BUG')
-inbugs=$(sed '1,/== bugs/d' run.out | grep -c '^BUG')
-
-echo 2>&1 $inbugs known bugs';' $notinbugs unexpected bugs$diffmsg
-
-if [ "$failed" != "0" ]; then
- echo FAILED
-fi
-
-exit $failed
diff --git a/gcc/testsuite/go.test/test/sigchld.go b/gcc/testsuite/go.test/test/sigchld.go
index 09188fc53ac..1fb2e21bd56 100644
--- a/gcc/testsuite/go.test/test/sigchld.go
+++ b/gcc/testsuite/go.test/test/sigchld.go
@@ -1,4 +1,3 @@
-// if [ $GOOS == nacl ]; then echo survived SIGCHLD; exit 0; fi # NaCl has no signals.
// $G $D/$F.go && $L $F.$A && ./$A.out
// Copyright 2009 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/stack.go b/gcc/testsuite/go.test/test/stack.go
index 816b555a4c8..1fd57161ff2 100644
--- a/gcc/testsuite/go.test/test/stack.go
+++ b/gcc/testsuite/go.test/test/stack.go
@@ -30,6 +30,32 @@ func d(t T) {
}
}
+func f0() {
+ // likely to make a new stack for f0,
+ // because the call to f1 puts 3000 bytes
+ // in our frame.
+ f1()
+}
+
+func f1() [3000]byte {
+ // likely to make a new stack for f1,
+ // because 3000 bytes were used by f0
+ // and we need 3000 more for the call
+ // to f2. if the call to morestack in f1
+ // does not pass the frame size, the new
+ // stack (default size 5k) will not be big
+ // enough for the frame, and the morestack
+ // check in f2 will die, if we get that far
+ // without faulting.
+ f2()
+ return [3000]byte{}
+}
+
+func f2() [3000]byte {
+ // just take up space
+ return [3000]byte{}
+}
+
var c = make(chan int)
var t T
var b = []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
@@ -40,6 +66,7 @@ func recur(n int) {
panic("bad []byte -> string")
}
go g(c, t)
+ f0()
s := <-c
if s != len(t) {
println("bad go", s)
diff --git a/gcc/testsuite/go.test/test/syntax/chan.go b/gcc/testsuite/go.test/test/syntax/chan.go
new file mode 100644
index 00000000000..ff3577502f2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/syntax/chan.go
@@ -0,0 +1,17 @@
+// errchk $G -e $D/$F.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type xyz struct {
+ ch chan
+} // ERROR "unexpected .*}.* in channel type"
+
+func Foo(y chan) { // ERROR "unexpected .*\).* in channel type"
+}
+
+func Bar(x chan, y int) { // ERROR "unexpected comma in channel type"
+}
diff --git a/gcc/testsuite/go.test/test/syntax/chan1.go b/gcc/testsuite/go.test/test/syntax/chan1.go
new file mode 100644
index 00000000000..9c12e5e6fed
--- /dev/null
+++ b/gcc/testsuite/go.test/test/syntax/chan1.go
@@ -0,0 +1,17 @@
+// errchk $G -e $D/$F.go
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var c chan int
+var v int
+
+func main() {
+ if c <- v { // ERROR "send statement.*value.*select"
+ }
+}
+
+var _ = c <- v // ERROR "send statement.*value.*select"
diff --git a/gcc/testsuite/go.test/test/syntax/if.go b/gcc/testsuite/go.test/test/syntax/if.go
new file mode 100644
index 00000000000..a3b51f0c07b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/syntax/if.go
@@ -0,0 +1,18 @@
+// errchk $G $D/$F.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func x() {
+}
+
+func main() {
+ if { // ERROR "missing condition"
+ }
+
+ if x(); { // ERROR "missing condition"
+ }
+}
diff --git a/gcc/testsuite/go.test/test/syntax/typesw.go b/gcc/testsuite/go.test/test/syntax/typesw.go
new file mode 100644
index 00000000000..47f683cdf29
--- /dev/null
+++ b/gcc/testsuite/go.test/test/syntax/typesw.go
@@ -0,0 +1,13 @@
+// errchk $G -e $D/$F.go
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ switch main() := interface{}(nil).(type) { // ERROR "invalid variable name"
+ default:
+ }
+}
diff --git a/gcc/testsuite/lib/compat.exp b/gcc/testsuite/lib/compat.exp
index 3ce3221d186..d686631c03b 100644
--- a/gcc/testsuite/lib/compat.exp
+++ b/gcc/testsuite/lib/compat.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008
+# Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2011
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
@@ -260,13 +260,6 @@ proc compat-execute { src1 sid use_alt } {
set dg-do-what [list ${dg-do-what-default} "" P]
set extra_flags_1 [compat-get-options-main $src1]
- # Check whether this test is supported for this target.
- if { [lindex ${dg-do-what} 1 ] == "N" } {
- unsupported "$src1"
- verbose "$src1 not supported on this target, skipping it" 3
- return
- }
-
# Set up the names of the other source files.
set dir [file dirname $src1]
set ext [file extension $src1]
@@ -314,10 +307,6 @@ proc compat-execute { src1 sid use_alt } {
set testcase [string range "$testcase" [string length "$tmpdir/"] end]
set testcase "tmpdir-$testcase"
}
- regsub "_main.*" $testcase "" testcase
- # Set up the base name of executable files so they'll be unique.
- regsub -all "\[./\]" $testcase "-" execbase
-
# If we couldn't rip $srcdir out of `src1' then just do the best we can.
# The point is to reduce the unnecessary noise in the logs. Don't strip
# out too much because different testcases with the same name can confuse
@@ -326,6 +315,17 @@ proc compat-execute { src1 sid use_alt } {
set testcase "[file tail [file dirname $src1]]/[file tail $src1]"
}
+ # Check whether this test is supported for this target.
+ if { [lindex ${dg-do-what} 1 ] == "N" } {
+ unsupported "$testcase"
+ verbose "$testcase not supported on this target, skipping it" 3
+ return
+ }
+
+ regsub "_main.*" $testcase "" testcase
+ # Set up the base name of executable files so they'll be unique.
+ regsub -all "\[./\]" $testcase "-" execbase
+
# Loop through all of the option lists used for this test.
set count 0
diff --git a/gcc/testsuite/lib/gcc-gdb-test.exp b/gcc/testsuite/lib/gcc-gdb-test.exp
index c8933c2b930..22e7a491873 100644
--- a/gcc/testsuite/lib/gcc-gdb-test.exp
+++ b/gcc/testsuite/lib/gcc-gdb-test.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009 Free Software Foundation, Inc.
+# Copyright (C) 2009, 2011 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -60,6 +60,12 @@ proc gdb-test { args } {
}
remote_expect target [timeout_value] {
+ # Too old GDB
+ -re "Unhandled dwarf expression|Error in sourced command file" {
+ unsupported "$testname"
+ remote_close target
+ return
+ }
-re {[\n\r]\$1 = ([^\n\r]*)[\n\r]+\$2 = ([^\n\r]*)[\n\r]} {
set first $expect_out(1,string)
set second $expect_out(2,string)
@@ -72,12 +78,6 @@ proc gdb-test { args } {
remote_close target
return
}
- # Too old GDB
- -re "Unhandled dwarf expression|Error in sourced command file" {
- unsupported "$testname"
- remote_close target
- return
- }
timeout {
unsupported "$testname"
remote_close target
diff --git a/gcc/testsuite/lib/lto.exp b/gcc/testsuite/lib/lto.exp
index f4469eefbab..762dbbf82de 100644
--- a/gcc/testsuite/lib/lto.exp
+++ b/gcc/testsuite/lib/lto.exp
@@ -418,13 +418,6 @@ proc lto-execute { src1 sid } {
set lto_option_list $LTO_OPTIONS
}
- # Check whether this test is supported for this target.
- if { [lindex ${dg-do-what} 1 ] == "N" } {
- unsupported "$src1"
- verbose "$src1 not supported on this target, skipping it" 3
- return
- }
-
# Set up the names of the other source files.
set dir [file dirname $src1]
set base [file rootname $src1]
@@ -478,11 +471,6 @@ proc lto-execute { src1 sid } {
set testcase [string range "$testcase" [string length "$tmpdir/"] end]
set testcase "tmpdir-$testcase"
}
- regsub "_0.*" $testcase "" testcase
-
- # Set up the base name of executable files so they'll be unique.
- regsub -all "\[./\]" $testcase "-" execbase
-
# If we couldn't rip $srcdir out of `src1' then just do the best we can.
# The point is to reduce the unnecessary noise in the logs. Don't strip
# out too much because different testcases with the same name can confuse
@@ -491,6 +479,18 @@ proc lto-execute { src1 sid } {
set testcase "[file tail [file dirname $src1]]/[file tail $src1]"
}
+ # Check whether this test is supported for this target.
+ if { [lindex ${dg-do-what} 1 ] == "N" } {
+ unsupported "$testcase"
+ verbose "$testcase not supported on this target, skipping it" 3
+ return
+ }
+
+ regsub "_0.*" $testcase "" testcase
+
+ # Set up the base name of executable files so they'll be unique.
+ regsub -all "\[./\]" $testcase "-" execbase
+
# Loop through all of the option lists used for this test.
set count 0
foreach option $lto_option_list {
diff --git a/gcc/testsuite/lib/prune.exp b/gcc/testsuite/lib/prune.exp
index 4e08bf3d1cc..7e4f9ce1621 100644
--- a/gcc/testsuite/lib/prune.exp
+++ b/gcc/testsuite/lib/prune.exp
@@ -56,7 +56,10 @@ proc prune_gcc_output { text } {
regsub -all "(^|\n)\[^\n\]*ld: warning: can't add line info to anonymous symbol\[^\n\]*" $text "" text
regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*_bound\[^\n\]*FORM_ref4\[^\n\]*" $text "" text
regsub -all "(^|\n)\[^\n\]*warning:\[^\n\]*TAG_variable: AT_location\[^\n\]*didn't have valid function low pc\[^\n\]*" $text "" text
-
+
+ # Ignore harmless warnings from Xcode 4.0.
+ regsub -all "(^|\n)\[^\n\]*ld: warning: could not create compact unwind for\[^\n\]*" $text "" text
+
#send_user "After:$text\n"
return $text
diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp
index a49085410da..fe66264d974 100644
--- a/gcc/testsuite/lib/scanasm.exp
+++ b/gcc/testsuite/lib/scanasm.exp
@@ -315,6 +315,92 @@ proc scan-assembler-dem-not { args } {
}
}
+# Call pass if object size is ok, otherwise fail.
+# example: /* { dg-final { object-size text <= 54 } } */
+proc object-size { args } {
+ global size
+ global base_dir
+
+ if { [llength $args] < 3 } {
+ error "object-size: too few arguments"
+ return
+ }
+ if { [llength $args] > 4 } {
+ error "object-size: too many arguments"
+ return
+ }
+ if { [llength $args] >= 4 } {
+ switch [dg-process-target [lindex $args 1]] {
+ "S" { }
+ "N" { return }
+ "F" { setup_xfail "*-*-*" }
+ "P" { }
+ }
+ }
+
+ # Find size like we find g++ in g++.exp.
+ if ![info exists size] {
+ set size [findfile $base_dir/../../../binutils/size \
+ $base_dir/../../../binutils/size \
+ [findfile $base_dir/../../size $base_dir/../../size \
+ [findfile $base_dir/size $base_dir/size \
+ [transform size]]]]
+ verbose -log "size is $size"
+ }
+
+ upvar 2 name testcase
+ set testcase [lindex $testcase 0]
+ set output_file "[file rootname [file tail $testcase]].o"
+ set output [remote_exec host "$size" "$output_file"]
+ set status [lindex $output 0]
+ if { $status != 0 } {
+ error "object-size: $size failed"
+ return
+ }
+
+ set text [lindex $output 1]
+ set lines [split $text "\n"]
+
+ set line0 [lindex $lines 0]
+ if ![regexp {^\s*text\s+data\s+bss\s+dec\s+hex\s+filename\s*$} $line0] {
+ error "object-size: $size did not produce expected first line: $line0"
+ return
+ }
+
+ set line1 [lindex $lines 1]
+ if ![regexp {^\s*\d+\s+\d+\s+\d+\s+\d+\s+[\da-fA-F]+\s+} $line1] {
+ error "object-size: $size did not produce expected second line: $line1"
+ return
+ }
+
+ set what [lindex $args 0]
+ set where [lsearch { text data bss total } $what]
+ if { $where == -1 } {
+ error "object-size: illegal argument: $what"
+ return
+ }
+ set actual [lindex $line1 $where]
+ verbose -log "$what size is $actual"
+
+ set cmp [lindex $args 1]
+ if { [lsearch { < > <= >= == != } $cmp] == -1 } {
+ error "object-size: illegal argument: $cmp"
+ return
+ }
+
+ set with [lindex $args 2]
+ if ![string is integer $with ] {
+ error "object-size: illegal argument: $with"
+ return
+ }
+
+ if [expr $actual $cmp $with] {
+ pass "$testcase object-size $what $cmp $with"
+ } else {
+ fail "$testcase object-size $what $cmp $with"
+ }
+}
+
# Utility for testing that a function is defined on the current line.
# Call pass if so, otherwise fail. Invoked directly; the file must
# have been compiled with -g -dA.
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 36cab543bdc..d3d7f75a554 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -541,30 +541,32 @@ proc check_profiling_available { test_what } {
if {![info exists profiling_available_saved]} {
# Some targets don't have any implementation of __bb_init_func or are
# missing other needed machinery.
- if { [istarget mmix-*-*]
+ if { [istarget am3*-*-linux*]
|| [istarget arm*-*-eabi*]
- || [istarget picochip-*-*]
- || [istarget *-*-netware*]
|| [istarget arm*-*-elf]
|| [istarget arm*-*-symbianelf*]
|| [istarget avr-*-*]
|| [istarget bfin-*-*]
- || [istarget powerpc-*-eabi*]
- || [istarget powerpc-*-elf]
|| [istarget cris-*-*]
|| [istarget crisv32-*-*]
|| [istarget fido-*-elf]
|| [istarget h8300-*-*]
- || [istarget lm32-*-*]
- || [istarget m32c-*-elf]
+ || [istarget lm32-*-*]
+ || [istarget m32c-*-elf]
|| [istarget m68k-*-elf]
|| [istarget m68k-*-uclinux*]
|| [istarget mep-*-elf]
|| [istarget mips*-*-elf*]
+ || [istarget mmix-*-*]
+ || [istarget mn10300-*-elf*]
|| [istarget moxie-*-elf*]
+ || [istarget picochip-*-*]
+ || [istarget powerpc-*-eabi*]
+ || [istarget powerpc-*-elf]
|| [istarget rx-*-*]
|| [istarget xstormy16-*]
|| [istarget xtensa*-*-elf]
+ || [istarget *-*-netware*]
|| [istarget *-*-rtems*]
|| [istarget *-*-vxworks*] } {
set profiling_available_saved 0
@@ -2308,6 +2310,26 @@ proc check_effective_target_vect_shift_scalar { } {
}
+# Return 1 if the target supports hardware vector shift operation for char.
+
+proc check_effective_target_vect_shift_char { } {
+ global et_vect_shift_char_saved
+
+ if [info exists et_vect_shift_char_saved] {
+ verbose "check_effective_target_vect_shift_char: using cached result" 2
+ } else {
+ set et_vect_shift_char_saved 0
+ if { ([istarget powerpc*-*-*]
+ && ![istarget powerpc-*-linux*paired*])
+ || [check_effective_target_arm32] } {
+ set et_vect_shift_char_saved 1
+ }
+ }
+
+ verbose "check_effective_target_vect_shift_char: returning $et_vect_shift_char_saved" 2
+ return $et_vect_shift_char_saved
+}
+
# Return 1 if the target supports hardware vectors of long, 0 otherwise.
#
# This can change for different subtargets so do not cache the result.
@@ -3119,29 +3141,6 @@ proc check_effective_target_vect_extract_even_odd { } {
return $et_vect_extract_even_odd_saved
}
-# Return 1 if the target supports vector even/odd elements extraction of
-# vectors with SImode elements or larger, 0 otherwise.
-
-proc check_effective_target_vect_extract_even_odd_wide { } {
- global et_vect_extract_even_odd_wide_saved
-
- if [info exists et_vect_extract_even_odd_wide_saved] {
- verbose "check_effective_target_vect_extract_even_odd_wide: using cached result" 2
- } else {
- set et_vect_extract_even_odd_wide_saved 0
- if { [istarget powerpc*-*-*]
- || [istarget i?86-*-*]
- || [istarget x86_64-*-*]
- || [istarget ia64-*-*]
- || [istarget spu-*-*] } {
- set et_vect_extract_even_odd_wide_saved 1
- }
- }
-
- verbose "check_effective_target_vect_extract_even_wide_odd: returning $et_vect_extract_even_odd_wide_saved" 2
- return $et_vect_extract_even_odd_wide_saved
-}
-
# Return 1 if the target supports vector interleaving, 0 otherwise.
proc check_effective_target_vect_interleave { } {
@@ -3164,41 +3163,30 @@ proc check_effective_target_vect_interleave { } {
return $et_vect_interleave_saved
}
-# Return 1 if the target supports vector interleaving and extract even/odd, 0 otherwise.
-proc check_effective_target_vect_strided { } {
- global et_vect_strided_saved
-
- if [info exists et_vect_strided_saved] {
- verbose "check_effective_target_vect_strided: using cached result" 2
- } else {
- set et_vect_strided_saved 0
- if { [check_effective_target_vect_interleave]
- && [check_effective_target_vect_extract_even_odd] } {
- set et_vect_strided_saved 1
- }
- }
-
- verbose "check_effective_target_vect_strided: returning $et_vect_strided_saved" 2
- return $et_vect_strided_saved
-}
-
-# Return 1 if the target supports vector interleaving and extract even/odd
-# for wide element types, 0 otherwise.
-proc check_effective_target_vect_strided_wide { } {
- global et_vect_strided_wide_saved
+foreach N {2 3 4 8} {
+ eval [string map [list N $N] {
+ # Return 1 if the target supports 2-vector interleaving
+ proc check_effective_target_vect_stridedN { } {
+ global et_vect_stridedN_saved
- if [info exists et_vect_strided_wide_saved] {
- verbose "check_effective_target_vect_strided_wide: using cached result" 2
- } else {
- set et_vect_strided_wide_saved 0
- if { [check_effective_target_vect_interleave]
- && [check_effective_target_vect_extract_even_odd_wide] } {
- set et_vect_strided_wide_saved 1
- }
- }
+ if [info exists et_vect_stridedN_saved] {
+ verbose "check_effective_target_vect_stridedN: using cached result" 2
+ } else {
+ set et_vect_stridedN_saved 0
+ if { (N & -N) == N
+ && [check_effective_target_vect_interleave]
+ && [check_effective_target_vect_extract_even_odd] } {
+ set et_vect_stridedN_saved 1
+ }
+ if { [istarget arm*-*-*] && N >= 2 && N <= 4 } {
+ set et_vect_stridedN_saved 1
+ }
+ }
- verbose "check_effective_target_vect_strided_wide: returning $et_vect_strided_wide_saved" 2
- return $et_vect_strided_wide_saved
+ verbose "check_effective_target_vect_stridedN: returning $et_vect_stridedN_saved" 2
+ return $et_vect_stridedN_saved
+ }
+ }]
}
# Return 1 if the target supports section-anchors
@@ -3556,6 +3544,9 @@ proc add_options_for_ieee { flags } {
|| [istarget "sh*-*-*"] } {
return "$flags -mieee"
}
+ if { [istarget "rx-*-*"] } {
+ return "$flags -mnofpu"
+ }
return $flags
}
diff --git a/gcc/testsuite/obj-c++.dg/dwarf-2.mm b/gcc/testsuite/obj-c++.dg/dwarf-2.mm
index e938249d7e0..f936b6baef4 100644
--- a/gcc/testsuite/obj-c++.dg/dwarf-2.mm
+++ b/gcc/testsuite/obj-c++.dg/dwarf-2.mm
@@ -1,4 +1,4 @@
/* { dg-options "-gdwarf-2 -dA" } */
-/* { dg-skip-if "" { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
+/* { dg-skip-if "No Dwarf" { { alpha*-dec-osf* hppa*-*-hpux* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
/* { dg-final { scan-assembler "0x11\[^0-9a-f\].*DW_AT_language" } } */
int x;
diff --git a/gcc/testsuite/obj-c++.dg/naming-1.mm b/gcc/testsuite/obj-c++.dg/naming-1.mm
index aed2fd517af..164c8225bb3 100644
--- a/gcc/testsuite/obj-c++.dg/naming-1.mm
+++ b/gcc/testsuite/obj-c++.dg/naming-1.mm
@@ -5,13 +5,17 @@ typedef struct S { int i; } NSDictionary;
@interface A
{
- NSDictionary * _userInfo;
+ NSDictionary * _userInfo1; /* { dg-message "previous declaration" } */
+ NSDictionary * _userInfo2; /* { dg-message "previous declaration" } */
+ NSDictionary * _userInfo3; /* { dg-message "previous declaration" } */
+ NSDictionary * _userInfo4; /* { dg-message "previous declaration" } */
}
@end
@interface B : A
{
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
+ NSDictionary * _userInfo1; /* { dg-error "duplicate instance variable" } */
+ NSDictionary * _userInfo2; /* { dg-error "duplicate instance variable" } */
}
@end
@@ -20,7 +24,8 @@ typedef struct S { int i; } NSDictionary;
@interface D : C
{
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
+ NSDictionary * _userInfo3; /* { dg-error "duplicate instance variable" } */
+ NSDictionary * _userInfo4; /* { dg-error "duplicate instance variable" } */
}
@end
diff --git a/gcc/testsuite/obj-c++.dg/naming-2.mm b/gcc/testsuite/obj-c++.dg/naming-2.mm
index 4b7860e10dd..49a83892f24 100644
--- a/gcc/testsuite/obj-c++.dg/naming-2.mm
+++ b/gcc/testsuite/obj-c++.dg/naming-2.mm
@@ -5,7 +5,7 @@ typedef struct S { int i; } NSDictionary;
@interface A
{
- NSDictionary * _userInfo;
+ NSDictionary * _userInfo; /* { dg-message "previous declaration" } */
int i1;
int i2;
int i3;
@@ -13,12 +13,13 @@ typedef struct S { int i; } NSDictionary;
int i5;
int i6;
int i7;
+ NSDictionary * _userInfo1; /* { dg-message "previous declaration" } */
}
@end
@interface B : A
{
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
+ NSDictionary * _userInfo1; /* { dg-error "duplicate instance variable" } */
int ii1;
int ii2;
int ii3;
@@ -34,7 +35,7 @@ typedef struct S { int i; } NSDictionary;
@interface D : C
{
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
+ NSDictionary * _userInfo; /* { dg-error "duplicate instance variable" } */
}
@end
diff --git a/gcc/testsuite/obj-c++.dg/naming-3.mm b/gcc/testsuite/obj-c++.dg/naming-3.mm
new file mode 100644
index 00000000000..ac812678e74
--- /dev/null
+++ b/gcc/testsuite/obj-c++.dg/naming-3.mm
@@ -0,0 +1,15 @@
+/* Testing for detecting duplicate ivars. */
+/* { dg-do compile } */
+
+@interface A
+{
+ char x; /* { dg-error "conflicts" } */
+ char x;
+} /* { dg-error "declaration" } */
+@end
+
+@interface B : A
+{
+ char y;
+}
+@end
diff --git a/gcc/testsuite/obj-c++.dg/naming-4.mm b/gcc/testsuite/obj-c++.dg/naming-4.mm
new file mode 100644
index 00000000000..4bb731206e5
--- /dev/null
+++ b/gcc/testsuite/obj-c++.dg/naming-4.mm
@@ -0,0 +1,145 @@
+/* Testing for detecting duplicate ivars. */
+/* { dg-do compile } */
+
+/* This check wants to force the compiler to use a hashtable. To do
+ so, we need lots of instance variable. */
+
+@interface A
+{
+ /* That's 200 instance variables, which is enough to trigger the
+ hashtable check in the compiler. */
+ char a0; char a1; char a2; char a3; char a4; char a5; char a6; char a7; char a8; char a9;
+ char b0; char b1; char b2; char b3; char b4; char b5; char b6; char b7; char b8; char b9;
+ char c0; char c1; char c2; char c3; char c4; char c5; char c6; char c7; char c8; char c9;
+ char d0; char d1; char d2; char d3; char d4; char d5; char d6; char d7; char d8; char d9;
+ char e0; char e1; char e2; char e3; char e4; char e5; char e6; char e7; char e8; char e9;
+ char f0; char f1; char f2; char f3; char f4; char f5; char f6; char f7; char f8; char f9;
+ char g0; char g1; char g2; char g3; char g4; char g5; char g6; char g7; char g8; char g9;
+ char h0; char h1; char h2; char h3; char h4; char h5; char h6; char h7; char h8; char h9;
+ char i0; char i1; char i2; char i3; char i4; char i5; char i6; char i7; char i8; char i9;
+ char j0; char j1; char j2; char j3; char j4; char j5; char j6; char j7; char j8; char j9;
+ char k0; char k1; char k2; char k3; char k4; char k5; char k6; char k7; char k8; char k9;
+ char l0; char l1; char l2; char l3; char l4; char l5; char l6; char l7; char l8; char l9;
+ char m0; char m1; char m2; char m3; char m4; char m5; char m6; char m7; char m8; char m9;
+ char n0; char n1; char n2; char n3; char n4; char n5; char n6; char n7; char n8; char n9;
+ char o0; char o1; char o2; char o3; char o4; char o5; char o6; char o7; char o8; char o9;
+ char p0; char p1; char p2; char p3; char p4; char p5; char p6; char p7; char p8; char p9;
+ char q0; char q1; char q2; char q3; char q4; char q5; char q6; char q7; char q8; char q9;
+ char r0; char r1; char r2; char r3; char r4; char r5; char r6; char r7; char r8; char r9;
+ char s0; char s1; char s2; char s3; char s4; char s5; char s6; char s7; char s8; char s9;
+
+ char x; /* { dg-error "conflicts" } */
+ char x;
+
+ char z; /* { dg-message "previous declaration" } */
+ char k; /* { dg-message "previous declaration" } */
+} /* { dg-error "declaration" } */
+@end
+
+@interface B : A
+{
+ /* That's another 200 instance variables, which should be enough to
+ trigger the hashtable check in the compiler. */
+ char Ba0; char Ba1; char Ba2; char Ba3; char Ba4; char Ba5; char Ba6; char Ba7; char Ba8; char Ba9;
+ char Bb0; char Bb1; char Bb2; char Bb3; char Bb4; char Bb5; char Bb6; char Bb7; char Bb8; char Bb9;
+ char Bc0; char Bc1; char Bc2; char Bc3; char Bc4; char Bc5; char Bc6; char Bc7; char Bc8; char Bc9;
+ char Bd0; char Bd1; char Bd2; char Bd3; char Bd4; char Bd5; char Bd6; char Bd7; char Bd8; char Bd9;
+ char Be0; char Be1; char Be2; char Be3; char Be4; char Be5; char Be6; char Be7; char Be8; char Be9;
+ char Bf0; char Bf1; char Bf2; char Bf3; char Bf4; char Bf5; char Bf6; char Bf7; char Bf8; char Bf9;
+ char Bg0; char Bg1; char Bg2; char Bg3; char Bg4; char Bg5; char Bg6; char Bg7; char Bg8; char Bg9;
+ char Bh0; char Bh1; char Bh2; char Bh3; char Bh4; char Bh5; char Bh6; char Bh7; char Bh8; char Bh9;
+ char Bi0; char Bi1; char Bi2; char Bi3; char Bi4; char Bi5; char Bi6; char Bi7; char Bi8; char Bi9;
+ char Bj0; char Bj1; char Bj2; char Bj3; char Bj4; char Bj5; char Bj6; char Bj7; char Bj8; char Bj9;
+ char Bk0; char Bk1; char Bk2; char Bk3; char Bk4; char Bk5; char Bk6; char Bk7; char Bk8; char Bk9;
+ char Bl0; char Bl1; char Bl2; char Bl3; char Bl4; char Bl5; char Bl6; char Bl7; char Bl8; char Bl9;
+ char Bm0; char Bm1; char Bm2; char Bm3; char Bm4; char Bm5; char Bm6; char Bm7; char Bm8; char Bm9;
+ char Bn0; char Bn1; char Bn2; char Bn3; char Bn4; char Bn5; char Bn6; char Bn7; char Bn8; char Bn9;
+ char Bo0; char Bo1; char Bo2; char Bo3; char Bo4; char Bo5; char Bo6; char Bo7; char Bo8; char Bo9;
+ char Bp0; char Bp1; char Bp2; char Bp3; char Bp4; char Bp5; char Bp6; char Bp7; char Bp8; char Bp9;
+ char Bq0; char Bq1; char Bq2; char Bq3; char Bq4; char Bq5; char Bq6; char Bq7; char Bq8; char Bq9;
+ char Br0; char Br1; char Br2; char Br3; char Br4; char Br5; char Br6; char Br7; char Br8; char Br9;
+ char Bs0; char Bs1; char Bs2; char Bs3; char Bs4; char Bs5; char Bs6; char Bs7; char Bs8; char Bs9;
+
+ char y; /* { dg-message "conflicts" } */
+ char y;
+
+ char z; /* { dg-error "duplicate instance variable" } */
+} /* { dg-error "declaration" } */
+@end
+
+@interface C : A
+{
+ char w; /* { dg-message "previous declaration" } */
+}
+@end
+
+@interface D : C
+{
+ /* That's another 200 instance variables, which should be enough to
+ trigger the hashtable check in the compiler. */
+ char Da0; char Da1; char Da2; char Da3; char Da4; char Da5; char Da6; char Da7; char Da8; char Da9;
+ char Db0; char Db1; char Db2; char Db3; char Db4; char Db5; char Db6; char Db7; char Db8; char Db9;
+ char Dc0; char Dc1; char Dc2; char Dc3; char Dc4; char Dc5; char Dc6; char Dc7; char Dc8; char Dc9;
+ char Dd0; char Dd1; char Dd2; char Dd3; char Dd4; char Dd5; char Dd6; char Dd7; char Dd8; char Dd9;
+ char De0; char De1; char De2; char De3; char De4; char De5; char De6; char De7; char De8; char De9;
+ char Df0; char Df1; char Df2; char Df3; char Df4; char Df5; char Df6; char Df7; char Df8; char Df9;
+ char Dg0; char Dg1; char Dg2; char Dg3; char Dg4; char Dg5; char Dg6; char Dg7; char Dg8; char Dg9;
+ char Dh0; char Dh1; char Dh2; char Dh3; char Dh4; char Dh5; char Dh6; char Dh7; char Dh8; char Dh9;
+ char Di0; char Di1; char Di2; char Di3; char Di4; char Di5; char Di6; char Di7; char Di8; char Di9;
+ char Dj0; char Dj1; char Dj2; char Dj3; char Dj4; char Dj5; char Dj6; char Dj7; char Dj8; char Dj9;
+ char Dk0; char Dk1; char Dk2; char Dk3; char Dk4; char Dk5; char Dk6; char Dk7; char Dk8; char Dk9;
+ char Dl0; char Dl1; char Dl2; char Dl3; char Dl4; char Dl5; char Dl6; char Dl7; char Dl8; char Dl9;
+ char Dm0; char Dm1; char Dm2; char Dm3; char Dm4; char Dm5; char Dm6; char Dm7; char Dm8; char Dm9;
+ char Dn0; char Dn1; char Dn2; char Dn3; char Dn4; char Dn5; char Dn6; char Dn7; char Dn8; char Dn9;
+ char Do0; char Do1; char Do2; char Do3; char Do4; char Do5; char Do6; char Do7; char Do8; char Do9;
+ char Dp0; char Dp1; char Dp2; char Dp3; char Dp4; char Dp5; char Dp6; char Dp7; char Dp8; char Dp9;
+ char Dq0; char Dq1; char Dq2; char Dq3; char Dq4; char Dq5; char Dq6; char Dq7; char Dq8; char Dq9;
+ char Dr0; char Dr1; char Dr2; char Dr3; char Dr4; char Dr5; char Dr6; char Dr7; char Dr8; char Dr9;
+ char Ds0; char Ds1; char Ds2; char Ds3; char Ds4; char Ds5; char Ds6; char Ds7; char Ds8; char Ds9;
+
+ char y; /* { dg-message "conflicts" } */
+ char y;
+
+ char w; /* { dg-error "duplicate instance variable" } */
+ char k; /* { dg-error "duplicate instance variable" } */
+} /* { dg-error "declaration" } */
+@end
+
+/* Finally, make sure that anonymous instance variables don't trigger
+ warnings. This is the same as the anon-1.m testcase, but forcing
+ the hashtable check. */
+@interface E : D
+{
+ char : 1;
+ char : 2;
+}
+@end
+
+@interface F : E
+{
+ /* That's another 200 instance variables, which should be enough to
+ trigger the hashtable check in the compiler. */
+ char Fa0; char Fa1; char Fa2; char Fa3; char Fa4; char Fa5; char Fa6; char Fa7; char Fa8; char Fa9;
+ char Fb0; char Fb1; char Fb2; char Fb3; char Fb4; char Fb5; char Fb6; char Fb7; char Fb8; char Fb9;
+ char Fc0; char Fc1; char Fc2; char Fc3; char Fc4; char Fc5; char Fc6; char Fc7; char Fc8; char Fc9;
+ char Fd0; char Fd1; char Fd2; char Fd3; char Fd4; char Fd5; char Fd6; char Fd7; char Fd8; char Fd9;
+ char Fe0; char Fe1; char Fe2; char Fe3; char Fe4; char Fe5; char Fe6; char Fe7; char Fe8; char Fe9;
+ char Ff0; char Ff1; char Ff2; char Ff3; char Ff4; char Ff5; char Ff6; char Ff7; char Ff8; char Ff9;
+ char Fg0; char Fg1; char Fg2; char Fg3; char Fg4; char Fg5; char Fg6; char Fg7; char Fg8; char Fg9;
+ char Fh0; char Fh1; char Fh2; char Fh3; char Fh4; char Fh5; char Fh6; char Fh7; char Fh8; char Fh9;
+ char Fi0; char Fi1; char Fi2; char Fi3; char Fi4; char Fi5; char Fi6; char Fi7; char Fi8; char Fi9;
+ char Fj0; char Fj1; char Fj2; char Fj3; char Fj4; char Fj5; char Fj6; char Fj7; char Fj8; char Fj9;
+ char Fk0; char Fk1; char Fk2; char Fk3; char Fk4; char Fk5; char Fk6; char Fk7; char Fk8; char Fk9;
+ char Fl0; char Fl1; char Fl2; char Fl3; char Fl4; char Fl5; char Fl6; char Fl7; char Fl8; char Fl9;
+ char Fm0; char Fm1; char Fm2; char Fm3; char Fm4; char Fm5; char Fm6; char Fm7; char Fm8; char Fm9;
+ char Fn0; char Fn1; char Fn2; char Fn3; char Fn4; char Fn5; char Fn6; char Fn7; char Fn8; char Fn9;
+ char Fo0; char Fo1; char Fo2; char Fo3; char Fo4; char Fo5; char Fo6; char Fo7; char Fo8; char Fo9;
+ char Fp0; char Fp1; char Fp2; char Fp3; char Fp4; char Fp5; char Fp6; char Fp7; char Fp8; char Fp9;
+ char Fq0; char Fq1; char Fq2; char Fq3; char Fq4; char Fq5; char Fq6; char Fq7; char Fq8; char Fq9;
+ char Fr0; char Fr1; char Fr2; char Fr3; char Fr4; char Fr5; char Fr6; char Fr7; char Fr8; char Fr9;
+ char Fs0; char Fs1; char Fs2; char Fs3; char Fs4; char Fs5; char Fs6; char Fs7; char Fs8; char Fs9;
+
+ char : 1;
+ char : 2;
+}
+@end
diff --git a/gcc/testsuite/objc-obj-c++-shared/objc-test-suite-next-encode-assist-impl.h b/gcc/testsuite/objc-obj-c++-shared/objc-test-suite-next-encode-assist-impl.h
index b9818803322..6a4b4ceed42 100644
--- a/gcc/testsuite/objc-obj-c++-shared/objc-test-suite-next-encode-assist-impl.h
+++ b/gcc/testsuite/objc-obj-c++-shared/objc-test-suite-next-encode-assist-impl.h
@@ -676,7 +676,7 @@ objc_layout_structure (const char *type,
&& *ntype++ != '=')
/* do nothing */;
- /* If there's a "<name>=", ntype - 1 points to '='; skip the the name */
+ /* If there's a "<name>=", ntype - 1 points to '='; skip the name */
if (*(ntype - 1) == '=')
type = ntype;
diff --git a/gcc/testsuite/objc.dg/naming-4.m b/gcc/testsuite/objc.dg/naming-4.m
index 9a85229f6a7..6114f6ae6eb 100644
--- a/gcc/testsuite/objc.dg/naming-4.m
+++ b/gcc/testsuite/objc.dg/naming-4.m
@@ -5,14 +5,17 @@ typedef struct S { int i; } NSDictionary;
@interface A
{
- NSDictionary * _userInfo;
+ NSDictionary * _userInfo1; /* { dg-message "previous declaration" } */
+ NSDictionary * _userInfo2; /* { dg-message "previous declaration" } */
+ NSDictionary * _userInfo3; /* { dg-message "previous declaration" } */
+ NSDictionary * _userInfo4; /* { dg-message "previous declaration" } */
}
@end
@interface B : A
{
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
+ NSDictionary * _userInfo1; /* { dg-error "duplicate instance variable" } */
+ NSDictionary * _userInfo2; /* { dg-error "duplicate instance variable" } */
}
@end
@@ -21,7 +24,7 @@ typedef struct S { int i; } NSDictionary;
@interface D : C
{
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
+ NSDictionary * _userInfo3; /* { dg-error "duplicate instance variable" } */
+ NSDictionary * _userInfo4; /* { dg-error "duplicate instance variable" } */
}
@end
diff --git a/gcc/testsuite/objc.dg/naming-5.m b/gcc/testsuite/objc.dg/naming-5.m
index 2e2786c41de..7d6805f9329 100644
--- a/gcc/testsuite/objc.dg/naming-5.m
+++ b/gcc/testsuite/objc.dg/naming-5.m
@@ -5,7 +5,7 @@ typedef struct S { int i; } NSDictionary;
@interface A
{
- NSDictionary * _userInfo;
+ NSDictionary * _userInfo; /* { dg-message "previous declaration" } */
int i1;
int i2;
int i3;
@@ -18,7 +18,7 @@ typedef struct S { int i; } NSDictionary;
@interface B : A
{
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
+ NSDictionary * _userInfo1; /* { dg-message "previous declaration" } */
int ii1;
int ii2;
int ii3;
@@ -26,7 +26,7 @@ typedef struct S { int i; } NSDictionary;
int ii5;
int ii6;
int ii7;
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
+ NSDictionary * _userInfo1; /* { dg-error "duplicate instance variable" } */
}
@end
@@ -35,8 +35,7 @@ typedef struct S { int i; } NSDictionary;
@interface D : C
{
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
- NSDictionary * _userInfo; /* { dg-error "duplicate member" } */
+ NSDictionary * _userInfo; /* { dg-error "duplicate instance variable" } */
}
@end
diff --git a/gcc/testsuite/objc.dg/naming-6.m b/gcc/testsuite/objc.dg/naming-6.m
new file mode 100644
index 00000000000..86e58e087b4
--- /dev/null
+++ b/gcc/testsuite/objc.dg/naming-6.m
@@ -0,0 +1,20 @@
+/* Testing for detecting duplicate ivars. */
+/* { dg-do compile } */
+
+@interface A
+{
+ /* TODO: Have the testsuite check that these messages occur only once! */
+ char x; /* { dg-message "previous declaration" } */
+ char x; /* { dg-error "duplicate instance variable" } */
+}
+@end
+
+/* In some versions of the compiler (eg, 4.6.x), having a subclass
+ would generate additional, duplicate errors for the duplicate
+ instance variable in the superclass, so adding the following would
+ cause the error messages above to be duplicated. */
+@interface B : A
+{
+ char y;
+}
+@end
diff --git a/gcc/testsuite/objc.dg/naming-7.m b/gcc/testsuite/objc.dg/naming-7.m
new file mode 100644
index 00000000000..aa703176db0
--- /dev/null
+++ b/gcc/testsuite/objc.dg/naming-7.m
@@ -0,0 +1,145 @@
+/* Testing for detecting duplicate ivars. */
+/* { dg-do compile } */
+
+/* This check wants to force the compiler to use a hashtable. To do
+ so, we need lots of instance variable. */
+
+@interface A
+{
+ /* That's 200 instance variables, which is enough to trigger the
+ hashtable check in the compiler. */
+ char a0; char a1; char a2; char a3; char a4; char a5; char a6; char a7; char a8; char a9;
+ char b0; char b1; char b2; char b3; char b4; char b5; char b6; char b7; char b8; char b9;
+ char c0; char c1; char c2; char c3; char c4; char c5; char c6; char c7; char c8; char c9;
+ char d0; char d1; char d2; char d3; char d4; char d5; char d6; char d7; char d8; char d9;
+ char e0; char e1; char e2; char e3; char e4; char e5; char e6; char e7; char e8; char e9;
+ char f0; char f1; char f2; char f3; char f4; char f5; char f6; char f7; char f8; char f9;
+ char g0; char g1; char g2; char g3; char g4; char g5; char g6; char g7; char g8; char g9;
+ char h0; char h1; char h2; char h3; char h4; char h5; char h6; char h7; char h8; char h9;
+ char i0; char i1; char i2; char i3; char i4; char i5; char i6; char i7; char i8; char i9;
+ char j0; char j1; char j2; char j3; char j4; char j5; char j6; char j7; char j8; char j9;
+ char k0; char k1; char k2; char k3; char k4; char k5; char k6; char k7; char k8; char k9;
+ char l0; char l1; char l2; char l3; char l4; char l5; char l6; char l7; char l8; char l9;
+ char m0; char m1; char m2; char m3; char m4; char m5; char m6; char m7; char m8; char m9;
+ char n0; char n1; char n2; char n3; char n4; char n5; char n6; char n7; char n8; char n9;
+ char o0; char o1; char o2; char o3; char o4; char o5; char o6; char o7; char o8; char o9;
+ char p0; char p1; char p2; char p3; char p4; char p5; char p6; char p7; char p8; char p9;
+ char q0; char q1; char q2; char q3; char q4; char q5; char q6; char q7; char q8; char q9;
+ char r0; char r1; char r2; char r3; char r4; char r5; char r6; char r7; char r8; char r9;
+ char s0; char s1; char s2; char s3; char s4; char s5; char s6; char s7; char s8; char s9;
+
+ char x; /* { dg-message "previous declaration" } */
+ char x; /* { dg-error "duplicate instance variable" } */
+
+ char z; /* { dg-message "previous declaration" } */
+ char k; /* { dg-message "previous declaration" } */
+}
+@end
+
+@interface B : A
+{
+ /* That's another 200 instance variables, which should be enough to
+ trigger the hashtable check in the compiler. */
+ char Ba0; char Ba1; char Ba2; char Ba3; char Ba4; char Ba5; char Ba6; char Ba7; char Ba8; char Ba9;
+ char Bb0; char Bb1; char Bb2; char Bb3; char Bb4; char Bb5; char Bb6; char Bb7; char Bb8; char Bb9;
+ char Bc0; char Bc1; char Bc2; char Bc3; char Bc4; char Bc5; char Bc6; char Bc7; char Bc8; char Bc9;
+ char Bd0; char Bd1; char Bd2; char Bd3; char Bd4; char Bd5; char Bd6; char Bd7; char Bd8; char Bd9;
+ char Be0; char Be1; char Be2; char Be3; char Be4; char Be5; char Be6; char Be7; char Be8; char Be9;
+ char Bf0; char Bf1; char Bf2; char Bf3; char Bf4; char Bf5; char Bf6; char Bf7; char Bf8; char Bf9;
+ char Bg0; char Bg1; char Bg2; char Bg3; char Bg4; char Bg5; char Bg6; char Bg7; char Bg8; char Bg9;
+ char Bh0; char Bh1; char Bh2; char Bh3; char Bh4; char Bh5; char Bh6; char Bh7; char Bh8; char Bh9;
+ char Bi0; char Bi1; char Bi2; char Bi3; char Bi4; char Bi5; char Bi6; char Bi7; char Bi8; char Bi9;
+ char Bj0; char Bj1; char Bj2; char Bj3; char Bj4; char Bj5; char Bj6; char Bj7; char Bj8; char Bj9;
+ char Bk0; char Bk1; char Bk2; char Bk3; char Bk4; char Bk5; char Bk6; char Bk7; char Bk8; char Bk9;
+ char Bl0; char Bl1; char Bl2; char Bl3; char Bl4; char Bl5; char Bl6; char Bl7; char Bl8; char Bl9;
+ char Bm0; char Bm1; char Bm2; char Bm3; char Bm4; char Bm5; char Bm6; char Bm7; char Bm8; char Bm9;
+ char Bn0; char Bn1; char Bn2; char Bn3; char Bn4; char Bn5; char Bn6; char Bn7; char Bn8; char Bn9;
+ char Bo0; char Bo1; char Bo2; char Bo3; char Bo4; char Bo5; char Bo6; char Bo7; char Bo8; char Bo9;
+ char Bp0; char Bp1; char Bp2; char Bp3; char Bp4; char Bp5; char Bp6; char Bp7; char Bp8; char Bp9;
+ char Bq0; char Bq1; char Bq2; char Bq3; char Bq4; char Bq5; char Bq6; char Bq7; char Bq8; char Bq9;
+ char Br0; char Br1; char Br2; char Br3; char Br4; char Br5; char Br6; char Br7; char Br8; char Br9;
+ char Bs0; char Bs1; char Bs2; char Bs3; char Bs4; char Bs5; char Bs6; char Bs7; char Bs8; char Bs9;
+
+ char y; /* { dg-message "previous declaration" } */
+ char y; /* { dg-error "duplicate instance variable" } */
+
+ char z; /* { dg-error "duplicate instance variable" } */
+}
+@end
+
+@interface C : A
+{
+ char w; /* { dg-message "previous declaration" } */
+}
+@end
+
+@interface D : C
+{
+ /* That's another 200 instance variables, which should be enough to
+ trigger the hashtable check in the compiler. */
+ char Da0; char Da1; char Da2; char Da3; char Da4; char Da5; char Da6; char Da7; char Da8; char Da9;
+ char Db0; char Db1; char Db2; char Db3; char Db4; char Db5; char Db6; char Db7; char Db8; char Db9;
+ char Dc0; char Dc1; char Dc2; char Dc3; char Dc4; char Dc5; char Dc6; char Dc7; char Dc8; char Dc9;
+ char Dd0; char Dd1; char Dd2; char Dd3; char Dd4; char Dd5; char Dd6; char Dd7; char Dd8; char Dd9;
+ char De0; char De1; char De2; char De3; char De4; char De5; char De6; char De7; char De8; char De9;
+ char Df0; char Df1; char Df2; char Df3; char Df4; char Df5; char Df6; char Df7; char Df8; char Df9;
+ char Dg0; char Dg1; char Dg2; char Dg3; char Dg4; char Dg5; char Dg6; char Dg7; char Dg8; char Dg9;
+ char Dh0; char Dh1; char Dh2; char Dh3; char Dh4; char Dh5; char Dh6; char Dh7; char Dh8; char Dh9;
+ char Di0; char Di1; char Di2; char Di3; char Di4; char Di5; char Di6; char Di7; char Di8; char Di9;
+ char Dj0; char Dj1; char Dj2; char Dj3; char Dj4; char Dj5; char Dj6; char Dj7; char Dj8; char Dj9;
+ char Dk0; char Dk1; char Dk2; char Dk3; char Dk4; char Dk5; char Dk6; char Dk7; char Dk8; char Dk9;
+ char Dl0; char Dl1; char Dl2; char Dl3; char Dl4; char Dl5; char Dl6; char Dl7; char Dl8; char Dl9;
+ char Dm0; char Dm1; char Dm2; char Dm3; char Dm4; char Dm5; char Dm6; char Dm7; char Dm8; char Dm9;
+ char Dn0; char Dn1; char Dn2; char Dn3; char Dn4; char Dn5; char Dn6; char Dn7; char Dn8; char Dn9;
+ char Do0; char Do1; char Do2; char Do3; char Do4; char Do5; char Do6; char Do7; char Do8; char Do9;
+ char Dp0; char Dp1; char Dp2; char Dp3; char Dp4; char Dp5; char Dp6; char Dp7; char Dp8; char Dp9;
+ char Dq0; char Dq1; char Dq2; char Dq3; char Dq4; char Dq5; char Dq6; char Dq7; char Dq8; char Dq9;
+ char Dr0; char Dr1; char Dr2; char Dr3; char Dr4; char Dr5; char Dr6; char Dr7; char Dr8; char Dr9;
+ char Ds0; char Ds1; char Ds2; char Ds3; char Ds4; char Ds5; char Ds6; char Ds7; char Ds8; char Ds9;
+
+ char y; /* { dg-message "previous declaration" } */
+ char y; /* { dg-error "duplicate instance variable" } */
+
+ char w; /* { dg-error "duplicate instance variable" } */
+ char k; /* { dg-error "duplicate instance variable" } */
+}
+@end
+
+/* Finally, make sure that anonymous instance variables don't trigger
+ warnings. This is the same as the anon-1.m testcase, but forcing
+ the hashtable check. */
+@interface E : D
+{
+ char : 1;
+ char : 2;
+}
+@end
+
+@interface F : E
+{
+ /* That's another 200 instance variables, which should be enough to
+ trigger the hashtable check in the compiler. */
+ char Fa0; char Fa1; char Fa2; char Fa3; char Fa4; char Fa5; char Fa6; char Fa7; char Fa8; char Fa9;
+ char Fb0; char Fb1; char Fb2; char Fb3; char Fb4; char Fb5; char Fb6; char Fb7; char Fb8; char Fb9;
+ char Fc0; char Fc1; char Fc2; char Fc3; char Fc4; char Fc5; char Fc6; char Fc7; char Fc8; char Fc9;
+ char Fd0; char Fd1; char Fd2; char Fd3; char Fd4; char Fd5; char Fd6; char Fd7; char Fd8; char Fd9;
+ char Fe0; char Fe1; char Fe2; char Fe3; char Fe4; char Fe5; char Fe6; char Fe7; char Fe8; char Fe9;
+ char Ff0; char Ff1; char Ff2; char Ff3; char Ff4; char Ff5; char Ff6; char Ff7; char Ff8; char Ff9;
+ char Fg0; char Fg1; char Fg2; char Fg3; char Fg4; char Fg5; char Fg6; char Fg7; char Fg8; char Fg9;
+ char Fh0; char Fh1; char Fh2; char Fh3; char Fh4; char Fh5; char Fh6; char Fh7; char Fh8; char Fh9;
+ char Fi0; char Fi1; char Fi2; char Fi3; char Fi4; char Fi5; char Fi6; char Fi7; char Fi8; char Fi9;
+ char Fj0; char Fj1; char Fj2; char Fj3; char Fj4; char Fj5; char Fj6; char Fj7; char Fj8; char Fj9;
+ char Fk0; char Fk1; char Fk2; char Fk3; char Fk4; char Fk5; char Fk6; char Fk7; char Fk8; char Fk9;
+ char Fl0; char Fl1; char Fl2; char Fl3; char Fl4; char Fl5; char Fl6; char Fl7; char Fl8; char Fl9;
+ char Fm0; char Fm1; char Fm2; char Fm3; char Fm4; char Fm5; char Fm6; char Fm7; char Fm8; char Fm9;
+ char Fn0; char Fn1; char Fn2; char Fn3; char Fn4; char Fn5; char Fn6; char Fn7; char Fn8; char Fn9;
+ char Fo0; char Fo1; char Fo2; char Fo3; char Fo4; char Fo5; char Fo6; char Fo7; char Fo8; char Fo9;
+ char Fp0; char Fp1; char Fp2; char Fp3; char Fp4; char Fp5; char Fp6; char Fp7; char Fp8; char Fp9;
+ char Fq0; char Fq1; char Fq2; char Fq3; char Fq4; char Fq5; char Fq6; char Fq7; char Fq8; char Fq9;
+ char Fr0; char Fr1; char Fr2; char Fr3; char Fr4; char Fr5; char Fr6; char Fr7; char Fr8; char Fr9;
+ char Fs0; char Fs1; char Fs2; char Fs3; char Fs4; char Fs5; char Fs6; char Fs7; char Fs8; char Fs9;
+
+ char : 1;
+ char : 2;
+}
+@end
diff --git a/gcc/testsuite/objc/execute/next_mapping.h b/gcc/testsuite/objc/execute/next_mapping.h
index 41d40fdf0dc..c28f173ce1a 100644
--- a/gcc/testsuite/objc/execute/next_mapping.h
+++ b/gcc/testsuite/objc/execute/next_mapping.h
@@ -749,7 +749,7 @@ objc_layout_structure (const char *type,
&& *ntype++ != '=')
/* do nothing */;
- /* If there's a "<name>=", ntype - 1 points to '='; skip the the name */
+ /* If there's a "<name>=", ntype - 1 points to '='; skip the name */
if (*(ntype - 1) == '=')
type = ntype;