From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- gcc/testsuite/g++.dg/ext/alias-canon.C | 41 ++ gcc/testsuite/g++.dg/ext/alias-canon2.C | 36 ++ gcc/testsuite/g++.dg/ext/alias-mangle.C | 11 + gcc/testsuite/g++.dg/ext/align1.C | 21 + gcc/testsuite/g++.dg/ext/align2.C | 14 + gcc/testsuite/g++.dg/ext/alignof1.C | 19 + gcc/testsuite/g++.dg/ext/alignof2.C | 25 ++ gcc/testsuite/g++.dg/ext/altivec-1.C | 16 + gcc/testsuite/g++.dg/ext/altivec-10.C | 22 ++ gcc/testsuite/g++.dg/ext/altivec-11.C | 12 + gcc/testsuite/g++.dg/ext/altivec-12.C | 19 + gcc/testsuite/g++.dg/ext/altivec-13.C | 59 +++ gcc/testsuite/g++.dg/ext/altivec-14.C | 13 + gcc/testsuite/g++.dg/ext/altivec-15.C | 16 + gcc/testsuite/g++.dg/ext/altivec-16.C | 19 + gcc/testsuite/g++.dg/ext/altivec-17.C | 16 + gcc/testsuite/g++.dg/ext/altivec-2.C | 25 ++ gcc/testsuite/g++.dg/ext/altivec-3.C | 137 +++++++ gcc/testsuite/g++.dg/ext/altivec-4.C | 12 + gcc/testsuite/g++.dg/ext/altivec-5.C | 16 + gcc/testsuite/g++.dg/ext/altivec-6.C | 28 ++ gcc/testsuite/g++.dg/ext/altivec-7.C | 36 ++ gcc/testsuite/g++.dg/ext/altivec-8.C | 21 + gcc/testsuite/g++.dg/ext/altivec-9.C | 14 + gcc/testsuite/g++.dg/ext/altivec-cell-1.C | 94 +++++ gcc/testsuite/g++.dg/ext/altivec-cell-2.C | 141 +++++++ gcc/testsuite/g++.dg/ext/altivec-cell-3.C | 37 ++ gcc/testsuite/g++.dg/ext/altivec-cell-4.C | 42 ++ gcc/testsuite/g++.dg/ext/altivec-cell-5.C | 25 ++ gcc/testsuite/g++.dg/ext/altivec-types-1.C | 88 +++++ gcc/testsuite/g++.dg/ext/altivec-types-2.C | 14 + gcc/testsuite/g++.dg/ext/altivec-types-3.C | 14 + gcc/testsuite/g++.dg/ext/altivec-types-4.C | 15 + gcc/testsuite/g++.dg/ext/always_inline-1.C | 26 ++ gcc/testsuite/g++.dg/ext/always_inline-2.C | 26 ++ gcc/testsuite/g++.dg/ext/always_inline-3.C | 26 ++ gcc/testsuite/g++.dg/ext/always_inline-4.C | 20 + gcc/testsuite/g++.dg/ext/always_inline-5.C | 28 ++ gcc/testsuite/g++.dg/ext/anon-struct1.C | 50 +++ gcc/testsuite/g++.dg/ext/anon-struct2.C | 46 +++ gcc/testsuite/g++.dg/ext/anon-struct3.C | 34 ++ gcc/testsuite/g++.dg/ext/anon-struct4.C | 5 + gcc/testsuite/g++.dg/ext/anon-struct5.C | 13 + gcc/testsuite/g++.dg/ext/anon-struct6.C | 10 + gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C | 5 + gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C | 5 + gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C | 5 + gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C | 5 + gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C | 15 + gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C | 15 + gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C | 13 + gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C | 13 + gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h | 135 +++++++ gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C | 14 + .../g++.dg/ext/arm-fp16/fp16-overload-1.C | 16 + gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C | 10 + gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C | 10 + gcc/testsuite/g++.dg/ext/array1.C | 14 + gcc/testsuite/g++.dg/ext/array2.C | 18 + gcc/testsuite/g++.dg/ext/asm1.C | 56 +++ gcc/testsuite/g++.dg/ext/asm10.C | 14 + gcc/testsuite/g++.dg/ext/asm11.C | 20 + gcc/testsuite/g++.dg/ext/asm2.C | 12 + gcc/testsuite/g++.dg/ext/asm3.C | 15 + gcc/testsuite/g++.dg/ext/asm4.C | 4 + gcc/testsuite/g++.dg/ext/asm5.C | 35 ++ gcc/testsuite/g++.dg/ext/asm6.C | 11 + gcc/testsuite/g++.dg/ext/asm7.C | 14 + gcc/testsuite/g++.dg/ext/asm8.C | 16 + gcc/testsuite/g++.dg/ext/asm9.C | 7 + gcc/testsuite/g++.dg/ext/asmgoto1.C | 32 ++ gcc/testsuite/g++.dg/ext/asmspec1.C | 8 + gcc/testsuite/g++.dg/ext/asmspecInvalid.C | 18 + gcc/testsuite/g++.dg/ext/asmspecValid.C | 43 ++ gcc/testsuite/g++.dg/ext/attr-alias-1.C | 37 ++ gcc/testsuite/g++.dg/ext/attr-alias-2.C | 37 ++ gcc/testsuite/g++.dg/ext/attr-ifunc-1.C | 34 ++ gcc/testsuite/g++.dg/ext/attr-ifunc-2.C | 38 ++ gcc/testsuite/g++.dg/ext/attr-ifunc-3.C | 39 ++ gcc/testsuite/g++.dg/ext/attr-ifunc-4.C | 44 +++ gcc/testsuite/g++.dg/ext/attrib1.C | 10 + gcc/testsuite/g++.dg/ext/attrib10.C | 8 + gcc/testsuite/g++.dg/ext/attrib11.C | 17 + gcc/testsuite/g++.dg/ext/attrib12.C | 16 + gcc/testsuite/g++.dg/ext/attrib13.C | 4 + gcc/testsuite/g++.dg/ext/attrib14.C | 13 + gcc/testsuite/g++.dg/ext/attrib15.C | 9 + gcc/testsuite/g++.dg/ext/attrib16.C | 8 + gcc/testsuite/g++.dg/ext/attrib17.C | 19 + gcc/testsuite/g++.dg/ext/attrib18.C | 10 + gcc/testsuite/g++.dg/ext/attrib19.C | 10 + gcc/testsuite/g++.dg/ext/attrib2.C | 12 + gcc/testsuite/g++.dg/ext/attrib20.C | 23 ++ gcc/testsuite/g++.dg/ext/attrib21.C | 17 + gcc/testsuite/g++.dg/ext/attrib22.C | 6 + gcc/testsuite/g++.dg/ext/attrib23.C | 11 + gcc/testsuite/g++.dg/ext/attrib24.C | 4 + gcc/testsuite/g++.dg/ext/attrib25.C | 11 + gcc/testsuite/g++.dg/ext/attrib26.C | 14 + gcc/testsuite/g++.dg/ext/attrib27.C | 5 + gcc/testsuite/g++.dg/ext/attrib28.C | 12 + gcc/testsuite/g++.dg/ext/attrib29.C | 10 + gcc/testsuite/g++.dg/ext/attrib3.C | 21 + gcc/testsuite/g++.dg/ext/attrib30.C | 8 + gcc/testsuite/g++.dg/ext/attrib31.C | 15 + gcc/testsuite/g++.dg/ext/attrib32.C | 36 ++ gcc/testsuite/g++.dg/ext/attrib33.C | 19 + gcc/testsuite/g++.dg/ext/attrib34.C | 19 + gcc/testsuite/g++.dg/ext/attrib35.C | 20 + gcc/testsuite/g++.dg/ext/attrib36.C | 20 + gcc/testsuite/g++.dg/ext/attrib37.C | 14 + gcc/testsuite/g++.dg/ext/attrib38.C | 11 + gcc/testsuite/g++.dg/ext/attrib39.C | 9 + gcc/testsuite/g++.dg/ext/attrib4.C | 31 ++ gcc/testsuite/g++.dg/ext/attrib40.C | 4 + gcc/testsuite/g++.dg/ext/attrib5.C | 21 + gcc/testsuite/g++.dg/ext/attrib6.C | 21 + gcc/testsuite/g++.dg/ext/attrib7.C | 3 + gcc/testsuite/g++.dg/ext/attrib8.C | 11 + gcc/testsuite/g++.dg/ext/attrib9.C | 10 + gcc/testsuite/g++.dg/ext/attribute-test-1.C | 38 ++ gcc/testsuite/g++.dg/ext/attribute-test-2.C | 52 +++ gcc/testsuite/g++.dg/ext/attribute-test-3.C | 54 +++ gcc/testsuite/g++.dg/ext/attribute-test-4.C | 51 +++ gcc/testsuite/g++.dg/ext/bitfield1.C | 22 ++ gcc/testsuite/g++.dg/ext/bitfield2.C | 13 + gcc/testsuite/g++.dg/ext/bitfield3.C | 12 + gcc/testsuite/g++.dg/ext/bitfield4.C | 12 + gcc/testsuite/g++.dg/ext/bitfield5.C | 12 + gcc/testsuite/g++.dg/ext/boolcomplex-1.c | 3 + gcc/testsuite/g++.dg/ext/builtin-object-size1.C | 435 ++++++++++++++++++++ gcc/testsuite/g++.dg/ext/builtin-object-size2.C | 438 +++++++++++++++++++++ gcc/testsuite/g++.dg/ext/builtin1.C | 10 + gcc/testsuite/g++.dg/ext/builtin10.C | 56 +++ gcc/testsuite/g++.dg/ext/builtin11.C | 9 + gcc/testsuite/g++.dg/ext/builtin2.C | 13 + gcc/testsuite/g++.dg/ext/builtin3.C | 14 + gcc/testsuite/g++.dg/ext/builtin4.C | 10 + gcc/testsuite/g++.dg/ext/builtin5.C | 12 + gcc/testsuite/g++.dg/ext/builtin6.C | 11 + gcc/testsuite/g++.dg/ext/builtin7.C | 14 + gcc/testsuite/g++.dg/ext/builtin8.C | 16 + gcc/testsuite/g++.dg/ext/builtin9.C | 3 + gcc/testsuite/g++.dg/ext/c99struct1.C | 12 + gcc/testsuite/g++.dg/ext/case-range1.C | 23 ++ gcc/testsuite/g++.dg/ext/case-range2.C | 27 ++ gcc/testsuite/g++.dg/ext/case-range3.C | 23 ++ gcc/testsuite/g++.dg/ext/cleanup-1.C | 36 ++ gcc/testsuite/g++.dg/ext/cleanup-10.C | 117 ++++++ gcc/testsuite/g++.dg/ext/cleanup-11.C | 117 ++++++ gcc/testsuite/g++.dg/ext/cleanup-2.C | 22 ++ gcc/testsuite/g++.dg/ext/cleanup-3.C | 45 +++ gcc/testsuite/g++.dg/ext/cleanup-4.C | 39 ++ gcc/testsuite/g++.dg/ext/cleanup-5.C | 54 +++ gcc/testsuite/g++.dg/ext/cleanup-6.C | 14 + gcc/testsuite/g++.dg/ext/cleanup-8.C | 100 +++++ gcc/testsuite/g++.dg/ext/cleanup-9.C | 104 +++++ gcc/testsuite/g++.dg/ext/cleanup-dtor.C | 28 ++ gcc/testsuite/g++.dg/ext/complex1.C | 6 + gcc/testsuite/g++.dg/ext/complex2.C | 5 + gcc/testsuite/g++.dg/ext/complex3.C | 28 ++ gcc/testsuite/g++.dg/ext/complex4.C | 5 + gcc/testsuite/g++.dg/ext/complex5.C | 6 + gcc/testsuite/g++.dg/ext/complex6.C | 10 + gcc/testsuite/g++.dg/ext/complex7.C | 6 + gcc/testsuite/g++.dg/ext/complit1.C | 16 + gcc/testsuite/g++.dg/ext/complit10.C | 20 + gcc/testsuite/g++.dg/ext/complit11.C | 16 + gcc/testsuite/g++.dg/ext/complit12.C | 65 +++ gcc/testsuite/g++.dg/ext/complit2.C | 22 ++ gcc/testsuite/g++.dg/ext/complit3.C | 8 + gcc/testsuite/g++.dg/ext/complit4.C | 10 + gcc/testsuite/g++.dg/ext/complit5.C | 12 + gcc/testsuite/g++.dg/ext/complit6.C | 19 + gcc/testsuite/g++.dg/ext/complit7.C | 4 + gcc/testsuite/g++.dg/ext/complit8.C | 12 + gcc/testsuite/g++.dg/ext/complit9.C | 15 + gcc/testsuite/g++.dg/ext/cond1.C | 4 + gcc/testsuite/g++.dg/ext/construct1.C | 12 + gcc/testsuite/g++.dg/ext/conv1.C | 19 + gcc/testsuite/g++.dg/ext/desig1.C | 24 ++ gcc/testsuite/g++.dg/ext/dll-MI1.h | 39 ++ gcc/testsuite/g++.dg/ext/dllexport-MI1.C | 51 +++ gcc/testsuite/g++.dg/ext/dllexport1.C | 23 ++ gcc/testsuite/g++.dg/ext/dllexport2.C | 52 +++ gcc/testsuite/g++.dg/ext/dllexport2a.cc | 21 + gcc/testsuite/g++.dg/ext/dllexport3.C | 19 + gcc/testsuite/g++.dg/ext/dllexport4.C | 54 +++ gcc/testsuite/g++.dg/ext/dllexport4a.cc | 21 + gcc/testsuite/g++.dg/ext/dllexport5.C | 52 +++ gcc/testsuite/g++.dg/ext/dllexport5a.cc | 21 + gcc/testsuite/g++.dg/ext/dllimport-MI1.C | 53 +++ gcc/testsuite/g++.dg/ext/dllimport1.C | 31 ++ gcc/testsuite/g++.dg/ext/dllimport10.C | 16 + gcc/testsuite/g++.dg/ext/dllimport11.C | 15 + gcc/testsuite/g++.dg/ext/dllimport12.C | 23 ++ gcc/testsuite/g++.dg/ext/dllimport13.C | 14 + gcc/testsuite/g++.dg/ext/dllimport2.C | 28 ++ gcc/testsuite/g++.dg/ext/dllimport3.C | 24 ++ gcc/testsuite/g++.dg/ext/dllimport4.C | 38 ++ gcc/testsuite/g++.dg/ext/dllimport5.C | 28 ++ gcc/testsuite/g++.dg/ext/dllimport6.C | 30 ++ gcc/testsuite/g++.dg/ext/dllimport7.C | 34 ++ gcc/testsuite/g++.dg/ext/dllimport8.C | 29 ++ gcc/testsuite/g++.dg/ext/dllimport9.C | 23 ++ gcc/testsuite/g++.dg/ext/fixed1.C | 8 + gcc/testsuite/g++.dg/ext/fixed2.C | 7 + gcc/testsuite/g++.dg/ext/flexary1.C | 33 ++ gcc/testsuite/g++.dg/ext/flexary2.C | 11 + gcc/testsuite/g++.dg/ext/fnname1.C | 26 ++ gcc/testsuite/g++.dg/ext/fnname2.C | 31 ++ gcc/testsuite/g++.dg/ext/fnname3.C | 65 +++ gcc/testsuite/g++.dg/ext/forscope1.C | 27 ++ gcc/testsuite/g++.dg/ext/forscope2.C | 27 ++ gcc/testsuite/g++.dg/ext/fpreg1.C | 82 ++++ .../g++.dg/ext/gnu-inline-anon-namespace.C | 11 + gcc/testsuite/g++.dg/ext/gnu-inline-class-static.C | 20 + gcc/testsuite/g++.dg/ext/gnu-inline-class.C | 19 + gcc/testsuite/g++.dg/ext/gnu-inline-common.h | 24 ++ .../g++.dg/ext/gnu-inline-global-redecl.C | 19 + .../g++.dg/ext/gnu-inline-global-reject.C | 56 +++ gcc/testsuite/g++.dg/ext/gnu-inline-global.C | 50 +++ gcc/testsuite/g++.dg/ext/gnu-inline-namespace.C | 11 + .../g++.dg/ext/gnu-inline-template-class.C | 22 ++ .../g++.dg/ext/gnu-inline-template-func.C | 17 + gcc/testsuite/g++.dg/ext/has_nothrow_assign.C | 152 +++++++ gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C | 16 + gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C | 106 +++++ .../g++.dg/ext/has_nothrow_constructor_odr.C | 16 + gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C | 140 +++++++ gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C | 12 + gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C | 13 + gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C | 13 + gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C | 13 + gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C | 12 + gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C | 13 + gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C | 16 + gcc/testsuite/g++.dg/ext/has_trivial_assign.C | 106 +++++ gcc/testsuite/g++.dg/ext/has_trivial_constructor.C | 98 +++++ gcc/testsuite/g++.dg/ext/has_trivial_copy.C | 105 +++++ .../g++.dg/ext/has_trivial_destructor-1.C | 86 ++++ .../g++.dg/ext/has_trivial_destructor-2.C | 3 + gcc/testsuite/g++.dg/ext/has_virtual_destructor.C | 89 +++++ gcc/testsuite/g++.dg/ext/init1.C | 6 + gcc/testsuite/g++.dg/ext/injected-ttp.C | 15 + gcc/testsuite/g++.dg/ext/inline1.C | 34 ++ gcc/testsuite/g++.dg/ext/instantiate1.C | 24 ++ gcc/testsuite/g++.dg/ext/instantiate2.C | 16 + gcc/testsuite/g++.dg/ext/instantiate3.C | 14 + gcc/testsuite/g++.dg/ext/interface1.C | 7 + gcc/testsuite/g++.dg/ext/interface1.h | 10 + gcc/testsuite/g++.dg/ext/interface1a.cc | 4 + gcc/testsuite/g++.dg/ext/interface2.C | 7 + gcc/testsuite/g++.dg/ext/interface2a.h | 5 + gcc/testsuite/g++.dg/ext/interface2b.cc | 9 + .../g++.dg/ext/interface3/dir1/interface3.h | 6 + .../g++.dg/ext/interface3/dir2/interface3.h | 5 + gcc/testsuite/g++.dg/ext/interface3/interface3a.C | 7 + .../g++.dg/ext/interface3/interface3a2.cc | 9 + gcc/testsuite/g++.dg/ext/interface3/interface3b.C | 7 + .../g++.dg/ext/interface3/interface3b2.cc | 9 + gcc/testsuite/g++.dg/ext/interface4.C | 13 + gcc/testsuite/g++.dg/ext/interface4.h | 8 + gcc/testsuite/g++.dg/ext/is_abstract.C | 89 +++++ gcc/testsuite/g++.dg/ext/is_base_of.C | 94 +++++ gcc/testsuite/g++.dg/ext/is_base_of_diagnostic.C | 15 + gcc/testsuite/g++.dg/ext/is_class.C | 76 ++++ gcc/testsuite/g++.dg/ext/is_class_error1.C | 6 + gcc/testsuite/g++.dg/ext/is_class_error2.C | 22 ++ gcc/testsuite/g++.dg/ext/is_empty.C | 78 ++++ gcc/testsuite/g++.dg/ext/is_enum.C | 73 ++++ gcc/testsuite/g++.dg/ext/is_pod.C | 76 ++++ gcc/testsuite/g++.dg/ext/is_pod_98.C | 16 + gcc/testsuite/g++.dg/ext/is_pod_incomplete.C | 8 + gcc/testsuite/g++.dg/ext/is_polymorphic.C | 83 ++++ gcc/testsuite/g++.dg/ext/is_union.C | 76 ++++ gcc/testsuite/g++.dg/ext/java-1.C | 26 ++ gcc/testsuite/g++.dg/ext/java-2.C | 79 ++++ gcc/testsuite/g++.dg/ext/label1.C | 10 + gcc/testsuite/g++.dg/ext/label10.C | 17 + gcc/testsuite/g++.dg/ext/label11.C | 46 +++ gcc/testsuite/g++.dg/ext/label12.C | 39 ++ gcc/testsuite/g++.dg/ext/label13.C | 22 ++ gcc/testsuite/g++.dg/ext/label2.C | 11 + gcc/testsuite/g++.dg/ext/label3.C | 39 ++ gcc/testsuite/g++.dg/ext/label4.C | 6 + gcc/testsuite/g++.dg/ext/label5.C | 6 + gcc/testsuite/g++.dg/ext/label6.C | 3 + gcc/testsuite/g++.dg/ext/label7.C | 12 + gcc/testsuite/g++.dg/ext/label8.C | 22 ++ gcc/testsuite/g++.dg/ext/label9.C | 10 + gcc/testsuite/g++.dg/ext/lvaddr.C | 10 + gcc/testsuite/g++.dg/ext/lvalue1.C | 10 + gcc/testsuite/g++.dg/ext/max.C | 6 + gcc/testsuite/g++.dg/ext/member-attr.C | 14 + gcc/testsuite/g++.dg/ext/ms-1.C | 17 + gcc/testsuite/g++.dg/ext/no-asm-1.C | 10 + gcc/testsuite/g++.dg/ext/no-asm-2.C | 10 + gcc/testsuite/g++.dg/ext/no-gnu-keywords-1.C | 9 + gcc/testsuite/g++.dg/ext/offsetof1.C | 21 + gcc/testsuite/g++.dg/ext/oper1.C | 19 + gcc/testsuite/g++.dg/ext/packed10.C | 14 + gcc/testsuite/g++.dg/ext/packed11.C | 13 + gcc/testsuite/g++.dg/ext/packed2.C | 35 ++ gcc/testsuite/g++.dg/ext/packed3.C | 25 ++ gcc/testsuite/g++.dg/ext/packed4.C | 77 ++++ gcc/testsuite/g++.dg/ext/packed5.C | 16 + gcc/testsuite/g++.dg/ext/packed6.C | 78 ++++ gcc/testsuite/g++.dg/ext/packed7.C | 15 + gcc/testsuite/g++.dg/ext/packed8.C | 24 ++ gcc/testsuite/g++.dg/ext/packed9.C | 20 + gcc/testsuite/g++.dg/ext/pr17577.C | 6 + gcc/testsuite/g++.dg/ext/pr17577.h | 2 + gcc/testsuite/g++.dg/ext/pr27019.C | 11 + gcc/testsuite/g++.dg/ext/pr28291.C | 13 + gcc/testsuite/g++.dg/ext/pr34829.C | 22 ++ gcc/testsuite/g++.dg/ext/pr47213.C | 16 + gcc/testsuite/g++.dg/ext/pragmaweak1.C | 9 + gcc/testsuite/g++.dg/ext/pretty1.C | 67 ++++ gcc/testsuite/g++.dg/ext/pretty2.C | 61 +++ gcc/testsuite/g++.dg/ext/pretty3.C | 19 + gcc/testsuite/g++.dg/ext/restrict1.C | 7 + gcc/testsuite/g++.dg/ext/selectany1.C | 20 + gcc/testsuite/g++.dg/ext/selectany2.C | 30 ++ gcc/testsuite/g++.dg/ext/spe1.C | 10 + gcc/testsuite/g++.dg/ext/static1.C | 18 + gcc/testsuite/g++.dg/ext/stmtexpr1.C | 53 +++ gcc/testsuite/g++.dg/ext/stmtexpr10.C | 16 + gcc/testsuite/g++.dg/ext/stmtexpr11.C | 15 + gcc/testsuite/g++.dg/ext/stmtexpr12.C | 7 + gcc/testsuite/g++.dg/ext/stmtexpr13.C | 9 + gcc/testsuite/g++.dg/ext/stmtexpr2.C | 51 +++ gcc/testsuite/g++.dg/ext/stmtexpr3.C | 9 + gcc/testsuite/g++.dg/ext/stmtexpr4.C | 8 + gcc/testsuite/g++.dg/ext/stmtexpr5.C | 15 + gcc/testsuite/g++.dg/ext/stmtexpr6.C | 11 + gcc/testsuite/g++.dg/ext/stmtexpr7.C | 14 + gcc/testsuite/g++.dg/ext/stmtexpr8.C | 28 ++ gcc/testsuite/g++.dg/ext/stmtexpr9.C | 8 + gcc/testsuite/g++.dg/ext/strncpy-chk1.C | 31 ++ gcc/testsuite/g++.dg/ext/sync-1.C | 40 ++ gcc/testsuite/g++.dg/ext/sync-2.C | 58 +++ gcc/testsuite/g++.dg/ext/sync-3.C | 21 + gcc/testsuite/g++.dg/ext/tmplattr1.C | 24 ++ gcc/testsuite/g++.dg/ext/tmplattr2.C | 18 + gcc/testsuite/g++.dg/ext/tmplattr3.C | 42 ++ gcc/testsuite/g++.dg/ext/tmplattr4.C | 19 + gcc/testsuite/g++.dg/ext/tmplattr5.C | 33 ++ gcc/testsuite/g++.dg/ext/tmplattr6.C | 12 + gcc/testsuite/g++.dg/ext/tmplattr7.C | 11 + gcc/testsuite/g++.dg/ext/tmplattr8.C | 8 + gcc/testsuite/g++.dg/ext/tmplattr9.C | 26 ++ gcc/testsuite/g++.dg/ext/typedef-init.C | 36 ++ gcc/testsuite/g++.dg/ext/typename1.C | 7 + gcc/testsuite/g++.dg/ext/typeof1.C | 21 + gcc/testsuite/g++.dg/ext/typeof10.C | 11 + gcc/testsuite/g++.dg/ext/typeof11.C | 18 + gcc/testsuite/g++.dg/ext/typeof2.C | 29 ++ gcc/testsuite/g++.dg/ext/typeof3.C | 4 + gcc/testsuite/g++.dg/ext/typeof4.C | 13 + gcc/testsuite/g++.dg/ext/typeof5.C | 8 + gcc/testsuite/g++.dg/ext/typeof6.C | 17 + gcc/testsuite/g++.dg/ext/typeof7.C | 6 + gcc/testsuite/g++.dg/ext/typeof8.C | 12 + gcc/testsuite/g++.dg/ext/typeof9.C | 17 + gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C | 76 ++++ gcc/testsuite/g++.dg/ext/uow-1.C | 12 + gcc/testsuite/g++.dg/ext/uow-2.C | 8 + gcc/testsuite/g++.dg/ext/uow-3.C | 8 + gcc/testsuite/g++.dg/ext/uow-4.C | 12 + gcc/testsuite/g++.dg/ext/utf-array-short-wchar.C | 36 ++ gcc/testsuite/g++.dg/ext/utf-array.C | 36 ++ gcc/testsuite/g++.dg/ext/utf-badconcat.C | 22 ++ gcc/testsuite/g++.dg/ext/utf-badconcat2.C | 15 + gcc/testsuite/g++.dg/ext/utf-cvt.C | 55 +++ gcc/testsuite/g++.dg/ext/utf-cxx0x.C | 14 + gcc/testsuite/g++.dg/ext/utf-cxx98.C | 29 ++ gcc/testsuite/g++.dg/ext/utf-dflt.C | 29 ++ gcc/testsuite/g++.dg/ext/utf-dflt2.C | 12 + gcc/testsuite/g++.dg/ext/utf-gnuxx0x.C | 14 + gcc/testsuite/g++.dg/ext/utf-gnuxx98.C | 29 ++ gcc/testsuite/g++.dg/ext/utf-mangle.C | 14 + gcc/testsuite/g++.dg/ext/utf-rtti.C | 12 + gcc/testsuite/g++.dg/ext/utf-type.C | 15 + gcc/testsuite/g++.dg/ext/utf-typedef-cxx0x.C | 7 + gcc/testsuite/g++.dg/ext/utf-typedef-cxx98.C | 7 + gcc/testsuite/g++.dg/ext/utf-typespec.C | 25 ++ gcc/testsuite/g++.dg/ext/utf16-1.C | 65 +++ gcc/testsuite/g++.dg/ext/utf16-2.C | 30 ++ gcc/testsuite/g++.dg/ext/utf16-3.C | 47 +++ gcc/testsuite/g++.dg/ext/utf16-4.C | 18 + gcc/testsuite/g++.dg/ext/utf32-1.C | 42 ++ gcc/testsuite/g++.dg/ext/utf32-2.C | 29 ++ gcc/testsuite/g++.dg/ext/utf32-3.C | 46 +++ gcc/testsuite/g++.dg/ext/utf32-4.C | 18 + gcc/testsuite/g++.dg/ext/utf8-1.C | 45 +++ gcc/testsuite/g++.dg/ext/utf8-2.C | 21 + gcc/testsuite/g++.dg/ext/va-arg-pack-1.C | 145 +++++++ gcc/testsuite/g++.dg/ext/va-arg-pack-2.C | 46 +++ gcc/testsuite/g++.dg/ext/va-arg-pack-len-1.C | 122 ++++++ gcc/testsuite/g++.dg/ext/va-arg-pack-len-2.C | 42 ++ gcc/testsuite/g++.dg/ext/va-arg1.C | 8 + gcc/testsuite/g++.dg/ext/vector1.C | 5 + gcc/testsuite/g++.dg/ext/vector10.C | 11 + gcc/testsuite/g++.dg/ext/vector11.C | 6 + gcc/testsuite/g++.dg/ext/vector12.C | 4 + gcc/testsuite/g++.dg/ext/vector13.C | 6 + gcc/testsuite/g++.dg/ext/vector14.C | 22 ++ gcc/testsuite/g++.dg/ext/vector15.C | 5 + gcc/testsuite/g++.dg/ext/vector16.C | 11 + gcc/testsuite/g++.dg/ext/vector2.C | 12 + gcc/testsuite/g++.dg/ext/vector3.C | 12 + gcc/testsuite/g++.dg/ext/vector4.C | 6 + gcc/testsuite/g++.dg/ext/vector5.C | 8 + gcc/testsuite/g++.dg/ext/vector6.C | 12 + gcc/testsuite/g++.dg/ext/vector7.C | 8 + gcc/testsuite/g++.dg/ext/vector8.C | 21 + gcc/testsuite/g++.dg/ext/vector9.C | 10 + gcc/testsuite/g++.dg/ext/visibility/anon1.C | 10 + gcc/testsuite/g++.dg/ext/visibility/anon10.C | 44 +++ gcc/testsuite/g++.dg/ext/visibility/anon11.C | 13 + gcc/testsuite/g++.dg/ext/visibility/anon2.C | 11 + gcc/testsuite/g++.dg/ext/visibility/anon3.C | 16 + gcc/testsuite/g++.dg/ext/visibility/anon4.C | 16 + gcc/testsuite/g++.dg/ext/visibility/anon5.C | 8 + gcc/testsuite/g++.dg/ext/visibility/anon6.C | 28 ++ gcc/testsuite/g++.dg/ext/visibility/anon7.C | 23 ++ gcc/testsuite/g++.dg/ext/visibility/anon8.C | 35 ++ gcc/testsuite/g++.dg/ext/visibility/anon9.C | 11 + gcc/testsuite/g++.dg/ext/visibility/arm1.C | 30 ++ gcc/testsuite/g++.dg/ext/visibility/arm2.C | 11 + gcc/testsuite/g++.dg/ext/visibility/arm3.C | 36 ++ gcc/testsuite/g++.dg/ext/visibility/assign1.C | 18 + gcc/testsuite/g++.dg/ext/visibility/class1.C | 22 ++ .../ext/visibility/fvisibility-inlines-hidden-2.C | 19 + .../ext/visibility/fvisibility-inlines-hidden-3.C | 30 ++ .../ext/visibility/fvisibility-inlines-hidden.C | 18 + .../g++.dg/ext/visibility/fvisibility-override1.C | 12 + .../g++.dg/ext/visibility/fvisibility-override2.C | 12 + gcc/testsuite/g++.dg/ext/visibility/fvisibility.C | 12 + gcc/testsuite/g++.dg/ext/visibility/guard1.C | 29 ++ gcc/testsuite/g++.dg/ext/visibility/local1.C | 25 ++ gcc/testsuite/g++.dg/ext/visibility/memfuncts.C | 11 + gcc/testsuite/g++.dg/ext/visibility/ms-compat-1.C | 28 ++ gcc/testsuite/g++.dg/ext/visibility/namespace1.C | 30 ++ gcc/testsuite/g++.dg/ext/visibility/namespace2.C | 20 + gcc/testsuite/g++.dg/ext/visibility/namespace3.C | 6 + gcc/testsuite/g++.dg/ext/visibility/new1.C | 13 + gcc/testsuite/g++.dg/ext/visibility/noPLT.C | 20 + gcc/testsuite/g++.dg/ext/visibility/overload-1.C | 9 + .../g++.dg/ext/visibility/pragma-override1.C | 14 + .../g++.dg/ext/visibility/pragma-override2.C | 14 + gcc/testsuite/g++.dg/ext/visibility/pragma.C | 13 + gcc/testsuite/g++.dg/ext/visibility/prop1.C | 23 ++ gcc/testsuite/g++.dg/ext/visibility/redecl1.C | 7 + .../g++.dg/ext/visibility/staticdatamem.C | 20 + .../g++.dg/ext/visibility/staticmemfuncts.C | 11 + gcc/testsuite/g++.dg/ext/visibility/symbian1.C | 22 ++ gcc/testsuite/g++.dg/ext/visibility/symbian2.C | 11 + gcc/testsuite/g++.dg/ext/visibility/template1.C | 35 ++ gcc/testsuite/g++.dg/ext/visibility/template2.C | 35 ++ gcc/testsuite/g++.dg/ext/visibility/template3.C | 22 ++ gcc/testsuite/g++.dg/ext/visibility/template4.C | 39 ++ gcc/testsuite/g++.dg/ext/visibility/template6.C | 17 + gcc/testsuite/g++.dg/ext/visibility/typeinfo1.C | 19 + gcc/testsuite/g++.dg/ext/visibility/typeinfo2.C | 23 ++ gcc/testsuite/g++.dg/ext/visibility/typeinfo3.C | 24 ++ gcc/testsuite/g++.dg/ext/visibility/virtual.C | 17 + gcc/testsuite/g++.dg/ext/visibility/visibility-1.C | 8 + .../g++.dg/ext/visibility/visibility-10.C | 19 + .../g++.dg/ext/visibility/visibility-11.C | 18 + gcc/testsuite/g++.dg/ext/visibility/visibility-2.C | 7 + gcc/testsuite/g++.dg/ext/visibility/visibility-3.C | 7 + gcc/testsuite/g++.dg/ext/visibility/visibility-4.C | 8 + gcc/testsuite/g++.dg/ext/visibility/visibility-5.C | 11 + gcc/testsuite/g++.dg/ext/visibility/visibility-6.C | 10 + gcc/testsuite/g++.dg/ext/visibility/visibility-7.C | 11 + gcc/testsuite/g++.dg/ext/visibility/visibility-8.C | 56 +++ gcc/testsuite/g++.dg/ext/visibility/visibility-9.C | 29 ++ gcc/testsuite/g++.dg/ext/visibility/warn2.C | 16 + gcc/testsuite/g++.dg/ext/visibility/warn3.C | 26 ++ gcc/testsuite/g++.dg/ext/visibility/warn4.C | 10 + gcc/testsuite/g++.dg/ext/vla1.C | 26 ++ gcc/testsuite/g++.dg/ext/vla10.C | 32 ++ gcc/testsuite/g++.dg/ext/vla2.C | 19 + gcc/testsuite/g++.dg/ext/vla3.C | 24 ++ gcc/testsuite/g++.dg/ext/vla4.C | 21 + gcc/testsuite/g++.dg/ext/vla5.C | 10 + gcc/testsuite/g++.dg/ext/vla6.C | 18 + gcc/testsuite/g++.dg/ext/vla7.C | 30 ++ gcc/testsuite/g++.dg/ext/vla8.C | 15 + gcc/testsuite/g++.dg/ext/vla9.C | 38 ++ gcc/testsuite/g++.dg/ext/vlm1.C | 13 + gcc/testsuite/g++.dg/ext/vlm2.C | 13 + gcc/testsuite/g++.dg/ext/weak1.C | 13 + gcc/testsuite/g++.dg/ext/weak2.C | 17 + gcc/testsuite/g++.dg/ext/weak3.C | 17 + 497 files changed, 13219 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/alias-canon.C create mode 100644 gcc/testsuite/g++.dg/ext/alias-canon2.C create mode 100644 gcc/testsuite/g++.dg/ext/alias-mangle.C create mode 100644 gcc/testsuite/g++.dg/ext/align1.C create mode 100644 gcc/testsuite/g++.dg/ext/align2.C create mode 100644 gcc/testsuite/g++.dg/ext/alignof1.C create mode 100644 gcc/testsuite/g++.dg/ext/alignof2.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-1.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-10.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-11.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-12.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-13.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-14.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-15.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-16.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-17.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-2.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-3.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-4.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-5.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-6.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-7.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-8.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-9.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-cell-1.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-cell-2.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-cell-3.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-cell-4.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-cell-5.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-types-1.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-types-2.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-types-3.C create mode 100644 gcc/testsuite/g++.dg/ext/altivec-types-4.C create mode 100644 gcc/testsuite/g++.dg/ext/always_inline-1.C create mode 100644 gcc/testsuite/g++.dg/ext/always_inline-2.C create mode 100644 gcc/testsuite/g++.dg/ext/always_inline-3.C create mode 100644 gcc/testsuite/g++.dg/ext/always_inline-4.C create mode 100644 gcc/testsuite/g++.dg/ext/always_inline-5.C create mode 100644 gcc/testsuite/g++.dg/ext/anon-struct1.C create mode 100644 gcc/testsuite/g++.dg/ext/anon-struct2.C create mode 100644 gcc/testsuite/g++.dg/ext/anon-struct3.C create mode 100644 gcc/testsuite/g++.dg/ext/anon-struct4.C create mode 100644 gcc/testsuite/g++.dg/ext/anon-struct5.C create mode 100644 gcc/testsuite/g++.dg/ext/anon-struct6.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C create mode 100644 gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C create mode 100644 gcc/testsuite/g++.dg/ext/array1.C create mode 100644 gcc/testsuite/g++.dg/ext/array2.C create mode 100644 gcc/testsuite/g++.dg/ext/asm1.C create mode 100644 gcc/testsuite/g++.dg/ext/asm10.C create mode 100644 gcc/testsuite/g++.dg/ext/asm11.C create mode 100644 gcc/testsuite/g++.dg/ext/asm2.C create mode 100644 gcc/testsuite/g++.dg/ext/asm3.C create mode 100644 gcc/testsuite/g++.dg/ext/asm4.C create mode 100644 gcc/testsuite/g++.dg/ext/asm5.C create mode 100644 gcc/testsuite/g++.dg/ext/asm6.C create mode 100644 gcc/testsuite/g++.dg/ext/asm7.C create mode 100644 gcc/testsuite/g++.dg/ext/asm8.C create mode 100644 gcc/testsuite/g++.dg/ext/asm9.C create mode 100644 gcc/testsuite/g++.dg/ext/asmgoto1.C create mode 100644 gcc/testsuite/g++.dg/ext/asmspec1.C create mode 100644 gcc/testsuite/g++.dg/ext/asmspecInvalid.C create mode 100644 gcc/testsuite/g++.dg/ext/asmspecValid.C create mode 100644 gcc/testsuite/g++.dg/ext/attr-alias-1.C create mode 100644 gcc/testsuite/g++.dg/ext/attr-alias-2.C create mode 100644 gcc/testsuite/g++.dg/ext/attr-ifunc-1.C create mode 100644 gcc/testsuite/g++.dg/ext/attr-ifunc-2.C create mode 100644 gcc/testsuite/g++.dg/ext/attr-ifunc-3.C create mode 100644 gcc/testsuite/g++.dg/ext/attr-ifunc-4.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib1.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib10.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib11.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib12.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib13.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib14.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib15.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib16.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib17.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib18.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib19.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib2.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib20.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib21.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib22.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib23.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib24.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib25.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib26.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib27.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib28.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib29.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib3.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib30.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib31.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib32.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib33.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib34.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib35.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib36.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib37.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib38.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib39.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib4.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib40.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib5.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib6.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib7.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib8.C create mode 100644 gcc/testsuite/g++.dg/ext/attrib9.C create mode 100644 gcc/testsuite/g++.dg/ext/attribute-test-1.C create mode 100644 gcc/testsuite/g++.dg/ext/attribute-test-2.C create mode 100644 gcc/testsuite/g++.dg/ext/attribute-test-3.C create mode 100644 gcc/testsuite/g++.dg/ext/attribute-test-4.C create mode 100644 gcc/testsuite/g++.dg/ext/bitfield1.C create mode 100644 gcc/testsuite/g++.dg/ext/bitfield2.C create mode 100644 gcc/testsuite/g++.dg/ext/bitfield3.C create mode 100644 gcc/testsuite/g++.dg/ext/bitfield4.C create mode 100644 gcc/testsuite/g++.dg/ext/bitfield5.C create mode 100644 gcc/testsuite/g++.dg/ext/boolcomplex-1.c create mode 100644 gcc/testsuite/g++.dg/ext/builtin-object-size1.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin-object-size2.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin1.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin10.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin11.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin2.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin3.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin4.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin5.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin6.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin7.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin8.C create mode 100644 gcc/testsuite/g++.dg/ext/builtin9.C create mode 100644 gcc/testsuite/g++.dg/ext/c99struct1.C create mode 100644 gcc/testsuite/g++.dg/ext/case-range1.C create mode 100644 gcc/testsuite/g++.dg/ext/case-range2.C create mode 100644 gcc/testsuite/g++.dg/ext/case-range3.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-1.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-10.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-11.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-2.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-3.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-4.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-5.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-6.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-8.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-9.C create mode 100644 gcc/testsuite/g++.dg/ext/cleanup-dtor.C create mode 100644 gcc/testsuite/g++.dg/ext/complex1.C create mode 100644 gcc/testsuite/g++.dg/ext/complex2.C create mode 100644 gcc/testsuite/g++.dg/ext/complex3.C create mode 100644 gcc/testsuite/g++.dg/ext/complex4.C create mode 100644 gcc/testsuite/g++.dg/ext/complex5.C create mode 100644 gcc/testsuite/g++.dg/ext/complex6.C create mode 100644 gcc/testsuite/g++.dg/ext/complex7.C create mode 100644 gcc/testsuite/g++.dg/ext/complit1.C create mode 100644 gcc/testsuite/g++.dg/ext/complit10.C create mode 100644 gcc/testsuite/g++.dg/ext/complit11.C create mode 100644 gcc/testsuite/g++.dg/ext/complit12.C create mode 100644 gcc/testsuite/g++.dg/ext/complit2.C create mode 100644 gcc/testsuite/g++.dg/ext/complit3.C create mode 100644 gcc/testsuite/g++.dg/ext/complit4.C create mode 100644 gcc/testsuite/g++.dg/ext/complit5.C create mode 100644 gcc/testsuite/g++.dg/ext/complit6.C create mode 100644 gcc/testsuite/g++.dg/ext/complit7.C create mode 100644 gcc/testsuite/g++.dg/ext/complit8.C create mode 100644 gcc/testsuite/g++.dg/ext/complit9.C create mode 100644 gcc/testsuite/g++.dg/ext/cond1.C create mode 100644 gcc/testsuite/g++.dg/ext/construct1.C create mode 100644 gcc/testsuite/g++.dg/ext/conv1.C create mode 100644 gcc/testsuite/g++.dg/ext/desig1.C create mode 100644 gcc/testsuite/g++.dg/ext/dll-MI1.h create mode 100644 gcc/testsuite/g++.dg/ext/dllexport-MI1.C create mode 100644 gcc/testsuite/g++.dg/ext/dllexport1.C create mode 100644 gcc/testsuite/g++.dg/ext/dllexport2.C create mode 100644 gcc/testsuite/g++.dg/ext/dllexport2a.cc create mode 100644 gcc/testsuite/g++.dg/ext/dllexport3.C create mode 100644 gcc/testsuite/g++.dg/ext/dllexport4.C create mode 100644 gcc/testsuite/g++.dg/ext/dllexport4a.cc create mode 100755 gcc/testsuite/g++.dg/ext/dllexport5.C create mode 100644 gcc/testsuite/g++.dg/ext/dllexport5a.cc create mode 100644 gcc/testsuite/g++.dg/ext/dllimport-MI1.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport1.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport10.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport11.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport12.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport13.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport2.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport3.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport4.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport5.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport6.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport7.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport8.C create mode 100644 gcc/testsuite/g++.dg/ext/dllimport9.C create mode 100644 gcc/testsuite/g++.dg/ext/fixed1.C create mode 100644 gcc/testsuite/g++.dg/ext/fixed2.C create mode 100644 gcc/testsuite/g++.dg/ext/flexary1.C create mode 100644 gcc/testsuite/g++.dg/ext/flexary2.C create mode 100644 gcc/testsuite/g++.dg/ext/fnname1.C create mode 100644 gcc/testsuite/g++.dg/ext/fnname2.C create mode 100644 gcc/testsuite/g++.dg/ext/fnname3.C create mode 100644 gcc/testsuite/g++.dg/ext/forscope1.C create mode 100644 gcc/testsuite/g++.dg/ext/forscope2.C create mode 100644 gcc/testsuite/g++.dg/ext/fpreg1.C create mode 100644 gcc/testsuite/g++.dg/ext/gnu-inline-anon-namespace.C create mode 100644 gcc/testsuite/g++.dg/ext/gnu-inline-class-static.C create mode 100644 gcc/testsuite/g++.dg/ext/gnu-inline-class.C create mode 100644 gcc/testsuite/g++.dg/ext/gnu-inline-common.h create mode 100644 gcc/testsuite/g++.dg/ext/gnu-inline-global-redecl.C create mode 100644 gcc/testsuite/g++.dg/ext/gnu-inline-global-reject.C create mode 100644 gcc/testsuite/g++.dg/ext/gnu-inline-global.C create mode 100644 gcc/testsuite/g++.dg/ext/gnu-inline-namespace.C create mode 100644 gcc/testsuite/g++.dg/ext/gnu-inline-template-class.C create mode 100644 gcc/testsuite/g++.dg/ext/gnu-inline-template-func.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C create mode 100644 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C create mode 100644 gcc/testsuite/g++.dg/ext/has_trivial_assign.C create mode 100644 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C create mode 100644 gcc/testsuite/g++.dg/ext/has_trivial_copy.C create mode 100644 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C create mode 100644 gcc/testsuite/g++.dg/ext/has_trivial_destructor-2.C create mode 100644 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C create mode 100644 gcc/testsuite/g++.dg/ext/init1.C create mode 100644 gcc/testsuite/g++.dg/ext/injected-ttp.C create mode 100644 gcc/testsuite/g++.dg/ext/inline1.C create mode 100644 gcc/testsuite/g++.dg/ext/instantiate1.C create mode 100644 gcc/testsuite/g++.dg/ext/instantiate2.C create mode 100644 gcc/testsuite/g++.dg/ext/instantiate3.C create mode 100644 gcc/testsuite/g++.dg/ext/interface1.C create mode 100644 gcc/testsuite/g++.dg/ext/interface1.h create mode 100644 gcc/testsuite/g++.dg/ext/interface1a.cc create mode 100644 gcc/testsuite/g++.dg/ext/interface2.C create mode 100644 gcc/testsuite/g++.dg/ext/interface2a.h create mode 100644 gcc/testsuite/g++.dg/ext/interface2b.cc create mode 100644 gcc/testsuite/g++.dg/ext/interface3/dir1/interface3.h create mode 100644 gcc/testsuite/g++.dg/ext/interface3/dir2/interface3.h create mode 100644 gcc/testsuite/g++.dg/ext/interface3/interface3a.C create mode 100644 gcc/testsuite/g++.dg/ext/interface3/interface3a2.cc create mode 100644 gcc/testsuite/g++.dg/ext/interface3/interface3b.C create mode 100644 gcc/testsuite/g++.dg/ext/interface3/interface3b2.cc create mode 100644 gcc/testsuite/g++.dg/ext/interface4.C create mode 100644 gcc/testsuite/g++.dg/ext/interface4.h create mode 100644 gcc/testsuite/g++.dg/ext/is_abstract.C create mode 100644 gcc/testsuite/g++.dg/ext/is_base_of.C create mode 100644 gcc/testsuite/g++.dg/ext/is_base_of_diagnostic.C create mode 100644 gcc/testsuite/g++.dg/ext/is_class.C create mode 100644 gcc/testsuite/g++.dg/ext/is_class_error1.C create mode 100644 gcc/testsuite/g++.dg/ext/is_class_error2.C create mode 100644 gcc/testsuite/g++.dg/ext/is_empty.C create mode 100644 gcc/testsuite/g++.dg/ext/is_enum.C create mode 100644 gcc/testsuite/g++.dg/ext/is_pod.C create mode 100644 gcc/testsuite/g++.dg/ext/is_pod_98.C create mode 100644 gcc/testsuite/g++.dg/ext/is_pod_incomplete.C create mode 100644 gcc/testsuite/g++.dg/ext/is_polymorphic.C create mode 100644 gcc/testsuite/g++.dg/ext/is_union.C create mode 100644 gcc/testsuite/g++.dg/ext/java-1.C create mode 100644 gcc/testsuite/g++.dg/ext/java-2.C create mode 100644 gcc/testsuite/g++.dg/ext/label1.C create mode 100644 gcc/testsuite/g++.dg/ext/label10.C create mode 100644 gcc/testsuite/g++.dg/ext/label11.C create mode 100644 gcc/testsuite/g++.dg/ext/label12.C create mode 100644 gcc/testsuite/g++.dg/ext/label13.C create mode 100644 gcc/testsuite/g++.dg/ext/label2.C create mode 100644 gcc/testsuite/g++.dg/ext/label3.C create mode 100644 gcc/testsuite/g++.dg/ext/label4.C create mode 100644 gcc/testsuite/g++.dg/ext/label5.C create mode 100644 gcc/testsuite/g++.dg/ext/label6.C create mode 100644 gcc/testsuite/g++.dg/ext/label7.C create mode 100644 gcc/testsuite/g++.dg/ext/label8.C create mode 100644 gcc/testsuite/g++.dg/ext/label9.C create mode 100644 gcc/testsuite/g++.dg/ext/lvaddr.C create mode 100644 gcc/testsuite/g++.dg/ext/lvalue1.C create mode 100644 gcc/testsuite/g++.dg/ext/max.C create mode 100644 gcc/testsuite/g++.dg/ext/member-attr.C create mode 100644 gcc/testsuite/g++.dg/ext/ms-1.C create mode 100644 gcc/testsuite/g++.dg/ext/no-asm-1.C create mode 100644 gcc/testsuite/g++.dg/ext/no-asm-2.C create mode 100644 gcc/testsuite/g++.dg/ext/no-gnu-keywords-1.C create mode 100644 gcc/testsuite/g++.dg/ext/offsetof1.C create mode 100644 gcc/testsuite/g++.dg/ext/oper1.C create mode 100644 gcc/testsuite/g++.dg/ext/packed10.C create mode 100644 gcc/testsuite/g++.dg/ext/packed11.C create mode 100644 gcc/testsuite/g++.dg/ext/packed2.C create mode 100644 gcc/testsuite/g++.dg/ext/packed3.C create mode 100644 gcc/testsuite/g++.dg/ext/packed4.C create mode 100644 gcc/testsuite/g++.dg/ext/packed5.C create mode 100644 gcc/testsuite/g++.dg/ext/packed6.C create mode 100644 gcc/testsuite/g++.dg/ext/packed7.C create mode 100644 gcc/testsuite/g++.dg/ext/packed8.C create mode 100644 gcc/testsuite/g++.dg/ext/packed9.C create mode 100644 gcc/testsuite/g++.dg/ext/pr17577.C create mode 100644 gcc/testsuite/g++.dg/ext/pr17577.h create mode 100644 gcc/testsuite/g++.dg/ext/pr27019.C create mode 100644 gcc/testsuite/g++.dg/ext/pr28291.C create mode 100644 gcc/testsuite/g++.dg/ext/pr34829.C create mode 100644 gcc/testsuite/g++.dg/ext/pr47213.C create mode 100644 gcc/testsuite/g++.dg/ext/pragmaweak1.C create mode 100644 gcc/testsuite/g++.dg/ext/pretty1.C create mode 100644 gcc/testsuite/g++.dg/ext/pretty2.C create mode 100644 gcc/testsuite/g++.dg/ext/pretty3.C create mode 100644 gcc/testsuite/g++.dg/ext/restrict1.C create mode 100644 gcc/testsuite/g++.dg/ext/selectany1.C create mode 100644 gcc/testsuite/g++.dg/ext/selectany2.C create mode 100644 gcc/testsuite/g++.dg/ext/spe1.C create mode 100644 gcc/testsuite/g++.dg/ext/static1.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr1.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr10.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr11.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr12.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr13.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr2.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr3.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr4.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr5.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr6.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr7.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr8.C create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr9.C create mode 100644 gcc/testsuite/g++.dg/ext/strncpy-chk1.C create mode 100644 gcc/testsuite/g++.dg/ext/sync-1.C create mode 100644 gcc/testsuite/g++.dg/ext/sync-2.C create mode 100644 gcc/testsuite/g++.dg/ext/sync-3.C create mode 100644 gcc/testsuite/g++.dg/ext/tmplattr1.C create mode 100644 gcc/testsuite/g++.dg/ext/tmplattr2.C create mode 100644 gcc/testsuite/g++.dg/ext/tmplattr3.C create mode 100644 gcc/testsuite/g++.dg/ext/tmplattr4.C create mode 100644 gcc/testsuite/g++.dg/ext/tmplattr5.C create mode 100644 gcc/testsuite/g++.dg/ext/tmplattr6.C create mode 100644 gcc/testsuite/g++.dg/ext/tmplattr7.C create mode 100644 gcc/testsuite/g++.dg/ext/tmplattr8.C create mode 100644 gcc/testsuite/g++.dg/ext/tmplattr9.C create mode 100644 gcc/testsuite/g++.dg/ext/typedef-init.C create mode 100644 gcc/testsuite/g++.dg/ext/typename1.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof1.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof10.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof11.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof2.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof3.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof4.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof5.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof6.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof7.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof8.C create mode 100644 gcc/testsuite/g++.dg/ext/typeof9.C create mode 100644 gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C create mode 100644 gcc/testsuite/g++.dg/ext/uow-1.C create mode 100644 gcc/testsuite/g++.dg/ext/uow-2.C create mode 100644 gcc/testsuite/g++.dg/ext/uow-3.C create mode 100644 gcc/testsuite/g++.dg/ext/uow-4.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-array-short-wchar.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-array.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-badconcat.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-badconcat2.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-cvt.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-cxx0x.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-cxx98.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-dflt.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-dflt2.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-gnuxx0x.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-gnuxx98.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-mangle.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-rtti.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-type.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-typedef-cxx0x.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-typedef-cxx98.C create mode 100644 gcc/testsuite/g++.dg/ext/utf-typespec.C create mode 100644 gcc/testsuite/g++.dg/ext/utf16-1.C create mode 100644 gcc/testsuite/g++.dg/ext/utf16-2.C create mode 100644 gcc/testsuite/g++.dg/ext/utf16-3.C create mode 100644 gcc/testsuite/g++.dg/ext/utf16-4.C create mode 100644 gcc/testsuite/g++.dg/ext/utf32-1.C create mode 100644 gcc/testsuite/g++.dg/ext/utf32-2.C create mode 100644 gcc/testsuite/g++.dg/ext/utf32-3.C create mode 100644 gcc/testsuite/g++.dg/ext/utf32-4.C create mode 100644 gcc/testsuite/g++.dg/ext/utf8-1.C create mode 100644 gcc/testsuite/g++.dg/ext/utf8-2.C create mode 100644 gcc/testsuite/g++.dg/ext/va-arg-pack-1.C create mode 100644 gcc/testsuite/g++.dg/ext/va-arg-pack-2.C create mode 100644 gcc/testsuite/g++.dg/ext/va-arg-pack-len-1.C create mode 100644 gcc/testsuite/g++.dg/ext/va-arg-pack-len-2.C create mode 100644 gcc/testsuite/g++.dg/ext/va-arg1.C create mode 100644 gcc/testsuite/g++.dg/ext/vector1.C create mode 100644 gcc/testsuite/g++.dg/ext/vector10.C create mode 100644 gcc/testsuite/g++.dg/ext/vector11.C create mode 100644 gcc/testsuite/g++.dg/ext/vector12.C create mode 100644 gcc/testsuite/g++.dg/ext/vector13.C create mode 100644 gcc/testsuite/g++.dg/ext/vector14.C create mode 100644 gcc/testsuite/g++.dg/ext/vector15.C create mode 100644 gcc/testsuite/g++.dg/ext/vector16.C create mode 100644 gcc/testsuite/g++.dg/ext/vector2.C create mode 100644 gcc/testsuite/g++.dg/ext/vector3.C create mode 100644 gcc/testsuite/g++.dg/ext/vector4.C create mode 100644 gcc/testsuite/g++.dg/ext/vector5.C create mode 100644 gcc/testsuite/g++.dg/ext/vector6.C create mode 100644 gcc/testsuite/g++.dg/ext/vector7.C create mode 100644 gcc/testsuite/g++.dg/ext/vector8.C create mode 100644 gcc/testsuite/g++.dg/ext/vector9.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon10.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon11.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon3.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon4.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon5.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon6.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon7.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon8.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/anon9.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/arm1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/arm2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/arm3.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/assign1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/class1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden-2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden-3.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/fvisibility-override1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/fvisibility-override2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/fvisibility.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/guard1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/local1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/memfuncts.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/ms-compat-1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/namespace1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/namespace2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/namespace3.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/new1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/noPLT.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/overload-1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/pragma.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/prop1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/redecl1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/staticdatamem.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/symbian1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/symbian2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/template1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/template2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/template3.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/template4.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/template6.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/typeinfo1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/typeinfo2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/typeinfo3.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/virtual.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-1.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-10.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-11.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-3.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-4.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-5.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-6.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-7.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-8.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/visibility-9.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/warn2.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/warn3.C create mode 100644 gcc/testsuite/g++.dg/ext/visibility/warn4.C create mode 100644 gcc/testsuite/g++.dg/ext/vla1.C create mode 100644 gcc/testsuite/g++.dg/ext/vla10.C create mode 100644 gcc/testsuite/g++.dg/ext/vla2.C create mode 100644 gcc/testsuite/g++.dg/ext/vla3.C create mode 100644 gcc/testsuite/g++.dg/ext/vla4.C create mode 100644 gcc/testsuite/g++.dg/ext/vla5.C create mode 100644 gcc/testsuite/g++.dg/ext/vla6.C create mode 100644 gcc/testsuite/g++.dg/ext/vla7.C create mode 100644 gcc/testsuite/g++.dg/ext/vla8.C create mode 100644 gcc/testsuite/g++.dg/ext/vla9.C create mode 100644 gcc/testsuite/g++.dg/ext/vlm1.C create mode 100644 gcc/testsuite/g++.dg/ext/vlm2.C create mode 100644 gcc/testsuite/g++.dg/ext/weak1.C create mode 100644 gcc/testsuite/g++.dg/ext/weak2.C create mode 100644 gcc/testsuite/g++.dg/ext/weak3.C (limited to 'gcc/testsuite/g++.dg/ext') diff --git a/gcc/testsuite/g++.dg/ext/alias-canon.C b/gcc/testsuite/g++.dg/ext/alias-canon.C new file mode 100644 index 000000000..843dec00c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/alias-canon.C @@ -0,0 +1,41 @@ +// PR c++/34935 +/* { dg-do compile } */ +/* { dg-final { scan-assembler "_Z1fi" } } */ +/* { dg-final { scan-assembler "_Z1fb" } } */ +/* { dg-final { scan-assembler "_Z1fd" } } */ +/* { dg-final { scan-assembler "_Z1ff" } } */ +/* { dg-final { scan-assembler "_Z1fw" } } */ + +typedef int INT __attribute((may_alias)); + +void f(int); +void f(INT) { } + +typedef bool BOOL __attribute((may_alias)); + +void f(bool); +void f(BOOL) { } + +typedef float FLOAT __attribute((may_alias)); + +void f(float); +void f(FLOAT) { } + +typedef double DOUBLE __attribute((may_alias)); + +void f(double); +void f(DOUBLE) {} + +typedef wchar_t WCHAR_T __attribute((may_alias)); + +void f(wchar_t); +void f(WCHAR_T) {} + +void test() +{ + f(0); + f(true); + f(1.0f); + f(1.0); + f(L'f'); +} diff --git a/gcc/testsuite/g++.dg/ext/alias-canon2.C b/gcc/testsuite/g++.dg/ext/alias-canon2.C new file mode 100644 index 000000000..4833db852 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/alias-canon2.C @@ -0,0 +1,36 @@ +// { dg-do compile } +// PR c++/37553 +typedef unsigned int ui32; +__extension__ typedef unsigned long long int ui64; + +typedef ui32 __attribute__ ((__may_alias__)) ui32a; +typedef ui64 __attribute__ ((__may_alias__)) ui64a; + +union u_u32 +{ + ui32a v; +} __attribute__ ((__may_alias__)); + +union u_u64 +{ + ui64a v; + struct + { + union u_u32 lo32, hi32; + } u; +} __attribute__ ((__may_alias__)); + +void +out_long (ui64 longVal) +{ + if ((*(union u_u64 *) &longVal).u.lo32.v < 0x10000000ul) + { + if ((ui32) ((*(union u_u64 *) &longVal).u.lo32.v) < 0x4000u) + { + /* do something useful */ + } + } +} + +void f(ui32 *) { } +void f(ui32a *) { } diff --git a/gcc/testsuite/g++.dg/ext/alias-mangle.C b/gcc/testsuite/g++.dg/ext/alias-mangle.C new file mode 100644 index 000000000..a7706e996 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/alias-mangle.C @@ -0,0 +1,11 @@ +// PR c++/34936 +// { dg-do compile } +/* { dg-final { scan-assembler "_ZN1AIdEC1Ev" } } */ +typedef double X __attribute((may_alias)) ; + +template struct A +{ + A(); +}; + +A a; diff --git a/gcc/testsuite/g++.dg/ext/align1.C b/gcc/testsuite/g++.dg/ext/align1.C new file mode 100644 index 000000000..6c960c396 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/align1.C @@ -0,0 +1,21 @@ +// Test that __attribute__ ((aligned)) is preserved. +// The alignment used to be 64 but Cygwin does not +// support an alignment greater than 16 and COFF +// not support an alignment greater than 4. + +extern "C" int printf (const char *, ...); + +typedef float at[4][4] __attribute__ ((aligned)); + +float dummy[4][4][15]; + +static volatile at a1[15]; + +float f1 __attribute__ ((aligned)); + +int +main (void) +{ + printf ("%d %d\n", __alignof (a1), __alignof (f1)); + return (__alignof (a1) < __alignof (f1)); +} diff --git a/gcc/testsuite/g++.dg/ext/align2.C b/gcc/testsuite/g++.dg/ext/align2.C new file mode 100644 index 000000000..da54bd938 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/align2.C @@ -0,0 +1,14 @@ +// PR c++/10179 + +struct __attribute((aligned(__alignof(double)))) A +{ /* empty */ }; + +struct T : public A +{ + char c; +}; + +template struct StaticAssert; +template<> struct StaticAssert {}; + +StaticAssert<__alignof(T) == __alignof(double)> d; diff --git a/gcc/testsuite/g++.dg/ext/alignof1.C b/gcc/testsuite/g++.dg/ext/alignof1.C new file mode 100644 index 000000000..36661c1f1 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/alignof1.C @@ -0,0 +1,19 @@ +// { dg-do run } + +// Copyright (C) 2002 Free Software Foundation, Inc. +// Contributed by Gabriel Dos Reis , 2002-07-20 +// Bug PR/7363. + +template +int my_alignof() +{ + return __alignof__ (T); +} + +template + struct X { }; + +int main() +{ + return !my_alignof >(); +} diff --git a/gcc/testsuite/g++.dg/ext/alignof2.C b/gcc/testsuite/g++.dg/ext/alignof2.C new file mode 100644 index 000000000..8bc8a9c01 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/alignof2.C @@ -0,0 +1,25 @@ +// PRs 16387 and 16389 +// We were treating alignof (sa.a) as alignof (typeof (sa.a)), which is +// wrong for some fields. + +// { dg-do run } + +extern "C" void abort(); + +struct A +{ + double a; +} sa; + +struct B +{ + char c; + double b; +} sb; + +int main() +{ + if (__alignof (sa) != __alignof (sa.a) + || __alignof (sb) != __alignof (sb.b)) + abort(); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-1.C b/gcc/testsuite/g++.dg/ext/altivec-1.C new file mode 100644 index 000000000..cd7c3aad2 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-1.C @@ -0,0 +1,16 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#include + +int main() +{ + return 0; +} + +class F32vec4 { +public: + vector float val; + vector float operator++(void) { return val;} +}; diff --git a/gcc/testsuite/g++.dg/ext/altivec-10.C b/gcc/testsuite/g++.dg/ext/altivec-10.C new file mode 100644 index 000000000..7f7d2b013 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-10.C @@ -0,0 +1,22 @@ +/* This is a compile-only test for interaction of "-maltivec" and "-save-temps". */ +/* Author: Ziemowit Laski . */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-save-temps -maltivec" } */ + +#include + +#define vector_float vector float +#define vector_float_foo vector float foo +#define vector_float_bar_eq vector float bar = + +/* NB: Keep the following split across three lines. */ +vector +int +a1 = { 100, 200, 300, 400 }; + +vector_float f1 = { 1.0, 2.0, 3.0, 4.0 }; +vector_float_foo = { 3.0, 4.0, 5.0, 6.0 }; +vector_float_bar_eq { 8.0, 7.0, 6.0, 5.0 }; + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/g++.dg/ext/altivec-11.C b/gcc/testsuite/g++.dg/ext/altivec-11.C new file mode 100644 index 000000000..ff3016953 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-11.C @@ -0,0 +1,12 @@ +/* Test handling of literal constant for dss operation. */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#include + +void +foo () +{ + vec_dss (1); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-12.C b/gcc/testsuite/g++.dg/ext/altivec-12.C new file mode 100644 index 000000000..6f21da961 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-12.C @@ -0,0 +1,19 @@ +/* Test vec_dst* functions with float pointer as first argument. */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#include + +extern int i; +extern float *fp; +extern vector float vf; + +void +foo () +{ + vec_dst (fp, i, 1); + vec_dstst (fp, i, 1); + vec_dststt (fp, i, 1); + vec_dstt (fp, i, 1); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-13.C b/gcc/testsuite/g++.dg/ext/altivec-13.C new file mode 100644 index 000000000..abc05af62 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-13.C @@ -0,0 +1,59 @@ +/* Check that vec_step can be used with const vector types. This + test is derived from parts of gcc.dg/vmx/8-02.c from Motorola's + AltiVec testsuite. */ + +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#include + +extern vector unsigned char vuc; +extern vector signed char vsc; +extern vector bool char vbc; +extern vector unsigned short vus; +extern vector signed short vss; +extern vector bool short vbs; +extern vector unsigned int vui; +extern vector signed int vsi; +extern vector bool int vbi; +extern vector pixel vp; +extern vector float vf; +extern const vector unsigned char cvuc; +extern const vector signed char cvsc; +extern const vector bool char cvbc; +extern const vector unsigned short cvus; +extern const vector signed short cvss; +extern const vector bool short cvbs; +extern const vector unsigned int cvui; +extern const vector signed int cvsi; +extern const vector bool int cvbi; +extern const vector pixel cvp; +extern const vector float cvf; + +void +foo (void) +{ + int i_vuc = vec_step (vuc); + int i_vsc = vec_step (vsc); + int i_vbc = vec_step (vbc); + int i_vus = vec_step (vus); + int i_vss = vec_step (vss); + int i_vbs = vec_step (vbs); + int i_vui = vec_step (vui); + int i_vsi = vec_step (vsi); + int i_vbi = vec_step (vbi); + int i_vp = vec_step (vp); + int i_vf = vec_step (vf); + int i_cvuc = vec_step (cvuc); + int i_cvsc = vec_step (cvsc); + int i_cvbc = vec_step (cvbc); + int i_cvus = vec_step (cvus); + int i_cvss = vec_step (cvss); + int i_cvbs = vec_step (cvbs); + int i_cvui = vec_step (cvui); + int i_cvsi = vec_step (cvsi); + int i_cvbi = vec_step (cvbi); + int i_cvp = vec_step (cvp); + int i_cvf = vec_step (cvf); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-14.C b/gcc/testsuite/g++.dg/ext/altivec-14.C new file mode 100644 index 000000000..e5dd81c75 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-14.C @@ -0,0 +1,13 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +void f (__attribute__((altivec (vector__))) signed int * a, + __attribute__((altivec (vector__))) signed int * const b); + +int +foo (void) +{ + __attribute__((altivec (vector__))) signed int a[1], b[1]; + f (a, b); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-15.C b/gcc/testsuite/g++.dg/ext/altivec-15.C new file mode 100644 index 000000000..d8e982db4 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-15.C @@ -0,0 +1,16 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec -mno-vsx" } */ + +/* This test was added for an internal compiler error. The number and + content of error messages is irrelevant. */ + +struct SubData +{ + inline const Float Clamp(Float f, Float f0, Float f1) // { dg-error "" } + } + inline const void SinCos(Float angle, Float& sine, Float& cosine) // { dg-error "" } + { + C0 = __builtin_vec_splat(_simdCosEstCoefficients, 0); + C1 = __builtin_vec_splat(_simdCosEstCoefficients, 1); + diff --git a/gcc/testsuite/g++.dg/ext/altivec-16.C b/gcc/testsuite/g++.dg/ext/altivec-16.C new file mode 100644 index 000000000..91230d261 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-16.C @@ -0,0 +1,19 @@ +// PR c++/36662 +// { dg-do compile { target powerpc*-*-* } } +// { dg-require-effective-target powerpc_altivec_ok } +// { dg-options "-maltivec" } + +#define vector __attribute__((altivec (vector__))) + +template struct S {}; + +template <> struct S +{ + static vector float zero; +}; + +template +void g (void) +{ + vector float t = S::zero; +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-17.C b/gcc/testsuite/g++.dg/ext/altivec-17.C new file mode 100644 index 000000000..099f8742e --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-17.C @@ -0,0 +1,16 @@ +// { dg-do compile { target powerpc*-*-* } } +// { dg-require-effective-target powerpc_altivec_ok } +// { dg-options "-maltivec" } + +// Make sure that bool vectors have distinct names to int vectors + +#define vector__ __attribute__((altivec (vector__))) +#define bool__ __attribute__((altivec(bool__))) + +typedef vector__ unsigned int simd_type; +typedef vector__ bool__ int bool_simd_type; + +void Foo (bool_simd_type const &a) +{ + simd_type const &v = a; // { dg-error "invalid initialization of reference of type" } +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-2.C b/gcc/testsuite/g++.dg/ext/altivec-2.C new file mode 100644 index 000000000..eb8a92942 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-2.C @@ -0,0 +1,25 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec -Wall -Wno-unused-but-set-variable" } */ + +/* This test checks if AltiVec builtins accept const-qualified + arguments. */ + +#include + +vector unsigned char use_lvsl; + +int main (int argc, const char * argv[]) +{ + int i = 0; + const float cf = 1.0; + vector float v; + const vector float cv = (vector float){1.0, 2.0, 3.0, 4.0}; + + vec_dst(&cv, i, 0); + v = vec_ld(0, &cv); + v = vec_lde(0, &cf); + use_lvsl = vec_lvsl(0, &cf); + + return 0; +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-3.C b/gcc/testsuite/g++.dg/ext/altivec-3.C new file mode 100644 index 000000000..151132059 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-3.C @@ -0,0 +1,137 @@ +/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */ +/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +/* Test for correct handling of AltiVec constants passed + through '...' (va_arg). */ + +#include +#include +#include + +#include + +#define CHECK_INVARIANT(expr) \ + if (!(expr)) { \ + printf ("ASSERT FAILED: %d: %s\n", __LINE__, #expr); \ + abort (); \ + } + +struct foo { int x; int y; }; +struct vfoo { int x; __vector signed int v; int y; }; +union u { __vector signed int v; signed int i[4]; }; + +struct foo x_g = { 3, 4}; +struct vfoo vx_g = { 10, {11, 12, 13, 14}, 15 }; +__vector signed int v_g = {22, 23, 24, 25}; +struct vfoo vx2_g = { 30, {31, 32, 33, 34}, 35 }; +__vector signed int v2_g = {40, 41, 42, 43}; +int i_1 = 99, i_2 = 33; +double d_2 = 1.5, d_3 = 1.75; +double ld_1 = 1.25; + +void bar (int i, ... ) +{ + struct foo xi; + double d; + double ld; + float f; + char c; + short s; + va_list ap; + va_start(ap, i); + xi = va_arg(ap, struct foo); + s = (short)va_arg(ap, int); + f = (float)va_arg(ap, double); + ld = va_arg(ap, double); + c = (char)va_arg(ap, int); + d = va_arg(ap, double); + va_end(ap); + + CHECK_INVARIANT (xi.x == x_g.x && xi.y == x_g.y); + CHECK_INVARIANT (s == (short)i_2); + CHECK_INVARIANT (f == (float)d_2); + CHECK_INVARIANT (ld == ld_1); + CHECK_INVARIANT (c == (char)i_1); + CHECK_INVARIANT (d == d_3); +} + +void baz (int i, ... ) +{ + struct vfoo vx, vx2; + __vector signed int v_i, v2_i; + int j, k, l; + va_list ap; + va_start(ap, i); + v_i = va_arg(ap, __vector signed int); + j = va_arg(ap, int); + vx = va_arg(ap, struct vfoo); + k = va_arg(ap, int); + v2_i = va_arg(ap, __vector signed int); + l = va_arg(ap, int); + vx2 = va_arg(ap, struct vfoo); + va_end(ap); + + CHECK_INVARIANT (vec_all_eq (v_i, v_g)); + CHECK_INVARIANT (j == i_1); + CHECK_INVARIANT (vx.x == vx_g.x); + CHECK_INVARIANT (vec_all_eq (vx.v, vx_g.v)); + CHECK_INVARIANT (vx.y == vx_g.y); + CHECK_INVARIANT (k == i_1); + CHECK_INVARIANT (vec_all_eq (v2_i, v2_g)); + CHECK_INVARIANT (l == i_1); + CHECK_INVARIANT (vx2.x == vx2_g.x); + CHECK_INVARIANT (vec_all_eq (vx2.v, vx2_g.v)); + CHECK_INVARIANT (vx2.y == vx2_g.y); +} + +void quux (int i, ... ) +{ + __vector signed int v_i, v2_i; + union u vi, v2i; + va_list ap; + va_start(ap, i); + v_i = va_arg(ap, __vector signed int); + v2_i = va_arg(ap, __vector signed int); + va_end(ap); + vi.v = v_i; + v2i.v = v2_i; + + CHECK_INVARIANT (vec_all_eq (v_i, v_g)); + CHECK_INVARIANT (vec_all_eq (v2_i, v_g)); + CHECK_INVARIANT (vec_all_eq (vi.v, v_g)); + CHECK_INVARIANT (vec_all_eq (v2i.v, v_g)); +} + +void baz2 (int i, ... ) +{ + struct vfoo vx; + union u vxi; + va_list ap; + va_start(ap, i); + vx = va_arg(ap, struct vfoo); + va_end(ap); + vxi.v = vx.v; + + CHECK_INVARIANT (vx.x == vx_g.x); + CHECK_INVARIANT (vec_all_eq (vx.v, vx_g.v)); + CHECK_INVARIANT (vx.y == vx_g.y); + CHECK_INVARIANT (vec_all_eq (vxi.v, vx_g.v)); +} + +void main1(void) +{ + CHECK_INVARIANT (sizeof(struct foo) == 8 && sizeof(struct vfoo) == 48); + + bar(i_1, x_g, (short)i_2, (float)d_2, ld_1, (char)i_1, d_3); + baz(i_1, v_g, i_1, vx_g, i_1, v2_g, i_1, vx2_g); + quux(i_1, v_g, v_g); + baz2(i_1, vx_g); +} + +int main(void) +{ + main1(); + return 0; +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-4.C b/gcc/testsuite/g++.dg/ext/altivec-4.C new file mode 100644 index 000000000..86a2615dc --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-4.C @@ -0,0 +1,12 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +/* PR c++/14425 */ + +#include + +vector unsigned int splat0(vector unsigned int x) +{ + return vec_splat(x, 0); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-5.C b/gcc/testsuite/g++.dg/ext/altivec-5.C new file mode 100644 index 000000000..04c26e80f --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-5.C @@ -0,0 +1,16 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +/* PR c++/14426 */ + +#include + +vector unsigned int splat0u() +{ + return vec_splat_u32(0); +} +vector int splat0s() +{ + return vec_splat_s32(0); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-6.C b/gcc/testsuite/g++.dg/ext/altivec-6.C new file mode 100644 index 000000000..63ae0b0b9 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-6.C @@ -0,0 +1,28 @@ +/* Test for correct handling of literal arguments. */ +/* Author: Ziemowit Laski */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#include + +void foo(void) { + const unsigned char *buf; + vector pixel vp = { 3, 4, 5, 6 }; + vector bool int vbi = { 1, 0, 1, 0 }; + vector bool short vbs = { 1, 0, 1, 0, 1, 0, 1, 0 }; + vector bool char vbc = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 }; + vector signed char vsc; + int a = 3; + + vec_dst(buf, a, 1); + vec_dstst(buf, a, 2); + vec_dststt(buf, a, 3); + vec_dststt(buf, a, 2); + + vp = vec_sld(vp, vp, 5); + vbc = vec_splat(vbc, 7); + vbs = vec_splat(vbs, 12); + vp = vec_splat(vp, 17); + vbi = vec_splat(vbi, 31); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-7.C b/gcc/testsuite/g++.dg/ext/altivec-7.C new file mode 100644 index 000000000..7c458fb00 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-7.C @@ -0,0 +1,36 @@ +/* Test for AltiVec type overloading and name mangling. */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#include + +void foo(vector unsigned char) { } +void foo(vector signed char) { } +void foo(vector bool char) { } +void foo(vector unsigned short) { } +void foo(vector signed short) { } +void foo(vector bool short) { } +void foo(vector unsigned int) { } +void foo(vector signed int) { } +void foo(vector bool int) { } +void foo(vector float) { } +void foo(vector pixel) { } +void foo(int) { } +void foo(unsigned int) { } +void foo(float) { } + +/* { dg-final { scan-assembler "_Z3fooU8__vectorh" } } */ +/* { dg-final { scan-assembler "_Z3fooU8__vectora" } } */ +/* { dg-final { scan-assembler "_Z3fooU8__vectorU6__boolc" } } */ +/* { dg-final { scan-assembler "_Z3fooU8__vectort" } } */ +/* { dg-final { scan-assembler "_Z3fooU8__vectors" } } */ +/* { dg-final { scan-assembler "_Z3fooU8__vectorU6__bools" } } */ +/* { dg-final { scan-assembler "_Z3fooU8__vectorj" } } */ +/* { dg-final { scan-assembler "_Z3fooU8__vectori" } } */ +/* { dg-final { scan-assembler "_Z3fooU8__vectorU6__booli" } } */ +/* { dg-final { scan-assembler "_Z3fooU8__vectorf" } } */ +/* { dg-final { scan-assembler "_Z3fooU8__vectoru7__pixel" } } */ +/* { dg-final { scan-assembler "_Z3fooi" } } */ +/* { dg-final { scan-assembler "_Z3fooj" } } */ +/* { dg-final { scan-assembler "_Z3foof" } } */ diff --git a/gcc/testsuite/g++.dg/ext/altivec-8.C b/gcc/testsuite/g++.dg/ext/altivec-8.C new file mode 100644 index 000000000..3c5a76e06 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-8.C @@ -0,0 +1,21 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ +/* Author: Ziemowit Laski */ + +/* This test case exercises intrinsic/argument combinations that, + while not in the Motorola AltiVec PIM, have nevertheless crept + into the AltiVec vernacular over the years. */ + +#include + +void foo (void) +{ + vector bool int boolVec1 = (vector bool int) vec_splat_u32(3); + vector bool short boolVec2 = (vector bool short) vec_splat_u16(3); + vector bool char boolVec3 = (vector bool char) vec_splat_u8(3); + + boolVec1 = vec_sld( boolVec1, boolVec1, 4 ); + boolVec2 = vec_sld( boolVec2, boolVec2, 2 ); + boolVec3 = vec_sld( boolVec3, boolVec3, 1 ); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-9.C b/gcc/testsuite/g++.dg/ext/altivec-9.C new file mode 100644 index 000000000..174ae63ed --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-9.C @@ -0,0 +1,14 @@ +/* Test for AltiVec function vec_ld, passing a pointer to const vector */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +#include + +typedef vector unsigned char vuc_t; +const vuc_t* p; +vector unsigned char test_vec_ld() +{ + return vec_ld(0,p); +} + diff --git a/gcc/testsuite/g++.dg/ext/altivec-cell-1.C b/gcc/testsuite/g++.dg/ext/altivec-cell-1.C new file mode 100644 index 000000000..16d311c3b --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-cell-1.C @@ -0,0 +1,94 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +/* Basic test for the new VMX intrinsics. */ +#include + +int f(vector int a, int b) +{ + return vec_extract (a, b); +} +short f1(vector short a, int b) +{ + return vec_extract (a, b); +} +vector short f2(vector short a, int b) +{ + return vec_insert (b, a, b); +} +vector float f3(vector float a, int b) +{ + return vec_insert (b, a, b); +} + +float g(void); + +vector float f4(float b, int t) +{ + return vec_promote (g(), t); +} +vector float f5(float b) +{ + return vec_splats (g()); +} + + + + +template +int tf(vector int a, int b) +{ + return vec_extract (a, b); +} +template +short tf1(vector short a, int b) +{ + return vec_extract (a, b); +} +template +vector short tf2(vector short a, int b) +{ + return vec_insert (b, a, b); +} +template +vector float tf3(vector float a, int b) +{ + return vec_insert (b, a, b); +} + +template +vector float tf4(float b, int t) +{ + return vec_promote (g(), t); +} +template +vector float tf5(float b) +{ + return vec_splats (g()); +} + +int t(vector int a, int b) +{ + return tf<1>(a, b); +} +short t1(vector short a, int b) +{ + return tf1<1>(a, b); +} +vector short t2(vector short a, int b) +{ + return tf2<1>(a, b); +} +vector float t3(vector float a, int b) +{ + return tf3<1>(a, b); +} +vector float t4(float b, int t) +{ + return tf4<1>(b, t); +} +vector float t5(float b) +{ + return tf5<1>(b); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-cell-2.C b/gcc/testsuite/g++.dg/ext/altivec-cell-2.C new file mode 100644 index 000000000..f0d3433cd --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-cell-2.C @@ -0,0 +1,141 @@ +/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */ +/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ +/* Test the vec_extract VMX intrinsics. */ +#include + +extern "C" void abort (void); + +vector int a = {0, 1, 2, 3}; +vector short b = {0, 1, 2, 3, 4, 5, 6, 7}; + +int f(vector int a, int b) +{ + return vec_extract (a, b); +} + +int f0 (vector int a) +{ + return vec_extract (a, 0); +} +int f1 (vector int a) +{ + return vec_extract (a, 1); +} +int f2 (vector int a) +{ + return vec_extract (a, 2); +} +int f3 (vector int a) +{ + return vec_extract (a, 3); +} +int f4 (vector int a) +{ + return vec_extract (a, 4); +} + +int g(vector short a, int b) +{ + return vec_extract (a, b); +} + +int g0 (vector short a) +{ + return vec_extract (a, 0); +} +int g1 (vector short a) +{ + return vec_extract (a, 1); +} +int g2 (vector short a) +{ + return vec_extract (a, 2); +} +int g3 (vector short a) +{ + return vec_extract (a, 3); +} + +int g4 (vector short a) +{ + return vec_extract (a, 4); +} +int g5 (vector short a) +{ + return vec_extract (a, 5); +} +int g6 (vector short a) +{ + return vec_extract (a, 6); +} +int g7 (vector short a) +{ + return vec_extract (a, 7); +} +int g8 (vector short a) +{ + return vec_extract (a, 8); +} +int main1(void) __attribute__((noinline)); +int main1(void) +{ + int i; + /* Check vec_extract with a non constant element numbering */ + for(i=0;i<10;i++) + { + if (f(a, i) != (i&0x3)) + abort (); + } + + /* Check vec_extract with a constant element numbering */ + if (f0(a) != 0) + abort (); + if (f1(a) != 1) + abort (); + if (f2(a) != 2) + abort (); + if (f3(a) != 3) + abort (); + /* Check that vec_extract works with a constant element higher than + the number of elements. */ + if (f4(a) != 0) + abort (); + + /* Check vec_extract with a non constant element numbering */ + for(i=0;i<10;i++) + { + if (g(b, i) != (i&0x7)) + abort (); + } + + /* Check vec_extract with a constant element numbering */ + if (g0(b) != 0) + abort (); + if (g1(b) != 1) + abort (); + if (g2(b) != 2) + abort (); + if (g3(b) != 3) + abort (); + if (g4(b) != 4) + abort (); + if (g5(b) != 5) + abort (); + if (g6(b) != 6) + abort (); + if (g7(b) != 7) + abort (); + /* Check that vec_extract works with a constant element higher than + the number of elements. */ + if (g8(b) != 0) + abort (); + + return 0; +} + +int main(void) +{ + return main1 (); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-cell-3.C b/gcc/testsuite/g++.dg/ext/altivec-cell-3.C new file mode 100644 index 000000000..bd7e774e3 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-cell-3.C @@ -0,0 +1,37 @@ +/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */ +/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ +/* Test the vec_splats and vec_promote VMX intrinsics. */ +#include + +extern "C" void abort (void); + +vector int a = {0, 0, 0, 0}; +int main1(int t) __attribute__((noinline)); +int main1(int t) +{ + int i; + vector int b = vec_splats(0); + if (__builtin_memcmp (&a, &b, sizeof(vector int))) + abort (); + + b = vec_splats(t); + if (__builtin_memcmp (&a, &b, sizeof(vector int))) + abort (); + + b = vec_promote(0, 1); + if (vec_extract (b, 1) != 0) + abort (); + + b = vec_promote(t, t); + if (vec_extract (b, t) != 0) + abort (); + + return 0; +} + +int main(void) +{ + return main1 (0); +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-cell-4.C b/gcc/testsuite/g++.dg/ext/altivec-cell-4.C new file mode 100644 index 000000000..7d91adbb3 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-cell-4.C @@ -0,0 +1,42 @@ +/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */ +/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +/* Test the vec_splats and vec_promote VMX intrinsics. */ +#include + +extern "C" void abort (void); + +vector int a[] = {{0, 0, 0, 0}, {1,0,0,0}, {1,2,0,0},{1,2,3,0},{1,2,3,4},{5,2,3,4},{5,6,3,4}}; +vector int c = {0,6,3,4}; +vector int d = {0,0,3,4}; +int main1(int t) __attribute__((noinline)); +int main1(int t) +{ + int i; + vector int b = vec_splats(0); + for(i = 0;i + +int main(int argc, char **argv) +{ +vector float t; + vec_promote(); /* { dg-error "vec_promote only accepts 2" } */ + vec_promote(1.0f); /* { dg-error "vec_promote only accepts 2" } */ + vec_promote(1.0f, 2, 3); /* { dg-error "vec_promote only accepts 2" } */ + vec_extract (); /* { dg-error "vec_extract only accepts 2" } */ + vec_extract (t); /* { dg-error "vec_extract only accepts 2" } */ + vec_extract (t, 2); + vec_extract (t, 2, 5, 6); /* { dg-error "vec_extract only accepts 2" } */ + vec_splats (); /* { dg-error "vec_splats only accepts 1" } */ + vec_splats (t, 3); /* { dg-error "vec_splats only accepts 1" } */ + vec_insert (); /* { dg-error "vec_insert only accepts 3" } */ + vec_insert (t); /* { dg-error "vec_insert only accepts 3" } */ + vec_insert (t, 3); /* { dg-error "vec_insert only accepts 3" } */ + vec_insert (t, 3, 2, 4, 6, 6); /* { dg-error "vec_insert only accepts 3" } */ + return 0; +} diff --git a/gcc/testsuite/g++.dg/ext/altivec-types-1.C b/gcc/testsuite/g++.dg/ext/altivec-types-1.C new file mode 100644 index 000000000..f54aeec46 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-types-1.C @@ -0,0 +1,88 @@ +/* { dg-do compile { target powerpc*-*-linux* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec -mno-vsx -std=c++98" } */ + +/* Valid AltiVec vector types should be accepted with no warnings. */ + +__vector char vc; +__vector unsigned char vuc; +__vector signed char vsc; +__vector __bool char vbc; +__vector short vh; +__vector signed short vsh; +__vector unsigned short vuh; +__vector short int vhi; +__vector signed short int vshi; +__vector unsigned short int vuhi; +__vector __bool short vbh; +__vector __bool short int vbhi; +__vector int vi; +__vector unsigned int vui; +__vector signed int vsi; +__vector __bool int vbi; +__vector unsigned vuj; +__vector signed vsj; +__vector __bool vbj; +__vector float vf; + +/* These should be rejected as invalid AltiVec types. */ + +__vector bool vb; /* { dg-error "AltiVec types" "" } */ +__vector long long vll; /* { dg-error "AltiVec types" "" } */ +__vector unsigned long long vull; /* { dg-error "AltiVec types" "" } */ +__vector signed long long vsll; /* { dg-error "AltiVec types" "" } */ +__vector __bool long long vbll; /* { dg-error "AltiVec types" "" } */ +__vector long long int vlli; /* { dg-error "AltiVec types" "" } */ +__vector unsigned long long int vulli; /* { dg-error "AltiVec types" "" } */ +__vector signed long long int vslli; /* { dg-error "AltiVec types" "" } */ +__vector __bool long long int vblli; /* { dg-error "AltiVec types" "" } */ +__vector double vd1; /* { dg-error "AltiVec types" "" } */ +__vector long double vld; /* { dg-error "AltiVec types" "" } */ +__vector _Complex float vcf; /* { dg-error "AltiVec types" "" } */ +__vector _Complex double vcd; /* { dg-error "AltiVec types" "" } */ +__vector _Complex long double vcld; /* { dg-error "AltiVec types" "" } */ +__vector _Complex signed char vcsc; /* { dg-error "AltiVec types" "" } */ +__vector _Complex unsigned char vcuc; /* { dg-error "AltiVec types" "" } */ +__vector _Complex short vcss; /* { dg-error "AltiVec types" "" } */ +__vector _Complex unsigned short vcus; /* { dg-error "AltiVec types" "" } */ +__vector _Complex int vcsi; /* { dg-error "AltiVec types" "" } */ +__vector _Complex unsigned int vcui; /* { dg-error "AltiVec types" "" } */ +__vector _Complex long vcsl; /* { dg-error "AltiVec types" "" } */ +__vector _Complex unsigned long vcul; /* { dg-error "AltiVec types" "" } */ +__vector _Complex long long vcsll; /* { dg-error "AltiVec types" "" } */ +__vector _Complex unsigned long long vcull; /* { dg-error "AltiVec types" "" } */ +__vector __complex float v_cf; /* { dg-error "AltiVec types" "" } */ +__vector __complex double v_cd; /* { dg-error "AltiVec types" "" } */ +__vector __complex long double v_cld; /* { dg-error "AltiVec types" "" } */ +__vector __complex signed char v_csc; /* { dg-error "AltiVec types" "" } */ +__vector __complex unsigned char v_cuc; /* { dg-error "AltiVec types" "" } */ +__vector __complex short v_css; /* { dg-error "AltiVec types" "" } */ +__vector __complex unsigned short v_cus; /* { dg-error "AltiVec types" "" } */ +__vector __complex int v_csi; /* { dg-error "AltiVec types" "" } */ +__vector __complex unsigned int v_cui; /* { dg-error "AltiVec types" "" } */ +__vector __complex long v_csl; /* { dg-error "AltiVec types" "" } */ +__vector __complex unsigned long v_cul; /* { dg-error "AltiVec types" "" } */ +__vector __complex long long v_csll; /* { dg-error "AltiVec types" "" } */ +__vector __complex unsigned long long v_cull; /* { dg-error "AltiVec types" "" } */ + +/* These should be rejected because the component types are invalid. We + don't care about the actual error messages here. */ + +__vector __bool unsigned char vbuc; /* { dg-error "" "" } */ +__vector __bool signed char vbsc; /* { dg-error "" "" } */ +__vector __bool unsigned short vbuh; /* { dg-error "" "" } */ +__vector __bool signed short vbsh; /* { dg-error "" "" } */ +__vector __bool unsigned int vbui; /* { dg-error "" "" } */ +__vector __bool signed int vbsi; /* { dg-error "" "" } */ +__vector __bool unsigned vbuj; /* { dg-error "" "" } */ +__vector __bool signed vbsj; /* { dg-error "" "" } */ +__vector signed float vsf; /* { dg-error "" "" } */ +__vector unsigned float vuf; /* { dg-error "" "" } */ +__vector short float vsf; /* { dg-error "" "" } */ +__vector signed double vsd; /* { dg-error "" "" } */ +__vector unsigned double vud; /* { dg-error "" "" } */ +__vector short double vsd; /* { dg-error "" "" } */ +__vector __bool float vbf; /* { dg-error "" "" } */ +__vector __bool double vbd; /* { dg-error "" "" } */ +__vector __bool short float blf; /* { dg-error "" "" } */ +__vector __bool short double vlbd; /* { dg-error "" "" } */ diff --git a/gcc/testsuite/g++.dg/ext/altivec-types-2.C b/gcc/testsuite/g++.dg/ext/altivec-types-2.C new file mode 100644 index 000000000..cee6c8f26 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-types-2.C @@ -0,0 +1,14 @@ +/* { dg-do compile { target powerpc*-*-linux* } } */ +/* { dg-require-effective-target ilp32 } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec -mno-vsx" } */ + +/* These should get warnings for 32-bit code. */ + +__vector long vl; /* { dg-warning "deprecated" "" } */ +__vector unsigned long vul; /* { dg-warning "deprecated" "" } */ +__vector signed long vsl; /* { dg-warning "deprecated" "" } */ +__vector __bool long int vbli; /* { dg-warning "deprecated" "" } */ +__vector long int vli; /* { dg-warning "deprecated" "" } */ +__vector unsigned long int vuli; /* { dg-warning "deprecated" "" } */ +__vector signed long int vsli; /* { dg-warning "deprecated" "" } */ diff --git a/gcc/testsuite/g++.dg/ext/altivec-types-3.C b/gcc/testsuite/g++.dg/ext/altivec-types-3.C new file mode 100644 index 000000000..6bea9a145 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-types-3.C @@ -0,0 +1,14 @@ +/* { dg-do compile { target powerpc*-*-linux* } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-require-effective-target lp64 } */ +/* { dg-options "-maltivec -mno-vsx" } */ + +/* These should be rejected for 64-bit code. */ + +__vector long vl; /* { dg-error "invalid for 64" "" } */ +__vector unsigned long vul; /* { dg-error "invalid for 64" "" } */ +__vector signed long vsl; /* { dg-error "invalid for 64" "" } */ +__vector __bool long int vbli; /* { dg-error "invalid for 64" "" } */ +__vector long int vli; /* { dg-error "invalid for 64" "" } */ +__vector unsigned long int vuli; /* { dg-error "invalid for 64" "" } */ +__vector signed long int vsli; /* { dg-error "invalid for 64" "" } */ diff --git a/gcc/testsuite/g++.dg/ext/altivec-types-4.C b/gcc/testsuite/g++.dg/ext/altivec-types-4.C new file mode 100644 index 000000000..b937f3cf1 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/altivec-types-4.C @@ -0,0 +1,15 @@ +/* { dg-do compile { target powerpc*-*-linux* } } */ +/* { dg-require-effective-target ilp32 } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec -mno-vsx -mno-warn-altivec-long" } */ + +/* These should not get warnings for 32-bit code when the warning is + disabled. */ + +__vector long vl; +__vector unsigned long vul; +__vector signed long vsl; +__vector __bool long int vbli; +__vector long int vli; +__vector unsigned long int vuli; +__vector signed long int vsli; diff --git a/gcc/testsuite/g++.dg/ext/always_inline-1.C b/gcc/testsuite/g++.dg/ext/always_inline-1.C new file mode 100644 index 000000000..284fd17a0 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/always_inline-1.C @@ -0,0 +1,26 @@ +// { dg-options "-O0" } +// { dg-do compile } +// PR C++/34715 + + +namespace X +{ + template + const T& min(const T& a, const T& b); + + template + inline __attribute__ ((always_inline)) const T& min(const T& a, const T& b) + { + return a < b ? a : b; + } +} +template +inline __attribute__ ((always_inline)) T y(const T& a, const T& b) +{ + return X::min(a, b); +} +int main() +{ + int a = 0, b = 0; + return y(a, b); +} diff --git a/gcc/testsuite/g++.dg/ext/always_inline-2.C b/gcc/testsuite/g++.dg/ext/always_inline-2.C new file mode 100644 index 000000000..31123c192 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/always_inline-2.C @@ -0,0 +1,26 @@ +// { dg-options "-O0" } +// { dg-do compile } +// PR C++/34715 + + +namespace X +{ + template + const T& min123(const T& a, const T& b); +} + + +template +inline __attribute__ ((always_inline)) const T& X::min123(const T& a, const T& b) +{ + return a < b ? a : b; +} +int main() +{ + int a, b; + return X::min123(a, b); +} + + + +// { dg-final { scan-assembler-not "min123" } } diff --git a/gcc/testsuite/g++.dg/ext/always_inline-3.C b/gcc/testsuite/g++.dg/ext/always_inline-3.C new file mode 100644 index 000000000..e008932bf --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/always_inline-3.C @@ -0,0 +1,26 @@ +// { dg-options "-O0" } +// { dg-do compile } +// PR C++/34715 + + +namespace X +{ + template + inline __attribute__ ((always_inline)) const T& min123(const T& a, const T& b); +} + + +template +inline __attribute__ ((always_inline)) const T& X::min123(const T& a, const T& b) +{ + return a < b ? a : b; +} +int main() +{ + int a, b; + return X::min123(a, b); +} + + + +// { dg-final { scan-assembler-not "min123" } } diff --git a/gcc/testsuite/g++.dg/ext/always_inline-4.C b/gcc/testsuite/g++.dg/ext/always_inline-4.C new file mode 100644 index 000000000..e95076193 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/always_inline-4.C @@ -0,0 +1,20 @@ +// { dg-options "-O0" } +// { dg-do compile } +// PR C++/34715 + + template + const T& min123(const T& a, const T& b); +template +inline __attribute__ ((always_inline)) const T& +min123(const T& a, const T& b) +{ + return a < b ? a : b; +} +int main() +{ + int a, b; + return min123(a, b); +} + + +// { dg-final { scan-assembler-not "min123" } } diff --git a/gcc/testsuite/g++.dg/ext/always_inline-5.C b/gcc/testsuite/g++.dg/ext/always_inline-5.C new file mode 100644 index 000000000..73caa094f --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/always_inline-5.C @@ -0,0 +1,28 @@ +// { dg-do compile } +struct f +{ + inline f(void); + inline void f1(void); + int a; +}; + +inline __attribute__((always_inline)) f::f(void) +{ + a++; +} + +inline __attribute__((always_inline)) void f::f1(void) +{ + a++; +} + +void g(void) +{ + f a, b, c, d; + a.f1(); +} + +// f::f() should be inlined even at -O0 +// { dg-final { scan-assembler-not "_ZN1fC1Ev" } } +// Likewise for f::f1() +// { dg-final { scan-assembler-not "_ZN1f2f1Ev" } } diff --git a/gcc/testsuite/g++.dg/ext/anon-struct1.C b/gcc/testsuite/g++.dg/ext/anon-struct1.C new file mode 100644 index 000000000..0a682db1a --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/anon-struct1.C @@ -0,0 +1,50 @@ +/* { dg-options "-ansi -pedantic -pedantic-errors" } */ +/* In strict ISO C++ mode, we don't recognize the anonymous struct + extension or any Microsoft C extensions. */ + +struct A { char a; }; + +struct B { + struct A; /* forward decl of B::A. */ + char b; +}; +char testB[sizeof(B) == sizeof(A) ? 1 : -1]; + +struct C { + struct D { char d; }; /* decl of C::D. */ + char c; +}; +char testC[sizeof(C) == sizeof(A) ? 1 : -1]; +char testD[sizeof(C::D) == sizeof(A) ? 1 : -1]; + +/* GNU extension. */ +struct E { + struct { char z; }; /* { dg-error "prohibits anonymous structs" } */ + char e; +}; + +typedef struct A typedef_A; +struct F { + typedef_A; /* { dg-error "does not declare anything" } */ + char f; +}; +char testF[sizeof(struct F) == sizeof(struct A) ? 1 : -1]; + +/* __extension__ enables GNU C mode for the duration of the declaration. */ +__extension__ struct G { + struct { char z; }; + char g; +}; +char testG[sizeof(G) == 2 * sizeof(A) ? 1 : -1]; + +struct H { + __extension__ struct { char z; }; + char h; +}; +char testH[sizeof(H) == 2 * sizeof(A) ? 1 : -1]; + +/* Make sure __extension__ gets turned back off. */ +struct I { + struct { char z; }; /* { dg-error "prohibits anonymous structs" } */ + char i; +}; diff --git a/gcc/testsuite/g++.dg/ext/anon-struct2.C b/gcc/testsuite/g++.dg/ext/anon-struct2.C new file mode 100644 index 000000000..0c629ed48 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/anon-struct2.C @@ -0,0 +1,46 @@ +/* { dg-options "" } */ +/* In GNU C++ mode, we recognize the anonymous struct extension, + but not Microsoft C extensions. */ + +struct A { char a; }; + +struct B { + struct A; /* forward decl of B::A. */ + char b; +}; +char testB[sizeof(B) == sizeof(A) ? 1 : -1]; + +struct C { + struct D { char d; }; /* decl of C::D. */ + char c; +}; +char testC[sizeof(C) == sizeof(A) ? 1 : -1]; +char testD[sizeof(C::D) == sizeof(A) ? 1 : -1]; + +/* GNU extension. */ +struct E { + struct { char z; }; + char e; +}; +char testE[sizeof(E) == 2 * sizeof(A) ? 1 : -1]; +char testEz[sizeof( ((E *)0)->z )]; + +typedef struct A typedef_A; +struct F { + typedef_A; /* { dg-error "does not declare anything" } */ + char f; +}; +char testF[sizeof(F) == sizeof(A) ? 1 : -1]; + +/* Test that __extension__ does the right thing coming _from_ GNU C mode. */ +__extension__ struct G { + struct { char z; }; + char g; +}; +char testG[sizeof(G) == 2 * sizeof(A) ? 1 : -1]; + +struct H { + struct { char z; }; + char h; +}; +char testH[sizeof(H) == 2 * sizeof(A) ? 1 : -1]; diff --git a/gcc/testsuite/g++.dg/ext/anon-struct3.C b/gcc/testsuite/g++.dg/ext/anon-struct3.C new file mode 100644 index 000000000..1460d6c12 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/anon-struct3.C @@ -0,0 +1,34 @@ +/* { dg-options "-fms-extensions" } */ +/* Verify that enabling Microsoft mode doesn't twist C++ as much as + their corresponding C extensions. Checked vs + Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86 + */ + +struct A { char a; }; + +struct B { + struct A; /* forward decl of B::A. */ + char b; +}; +char testB[sizeof(B) == sizeof(A) ? 1 : -1]; + +struct C { + struct D { char d; }; /* decl of C::D. */ + char c; +}; +char testC[sizeof(C) == sizeof(A) ? 1 : -1]; +char testD[sizeof(C::D) == sizeof(A) ? 1 : -1]; + +struct E { + struct { char z; }; + char e; +}; +char testE[sizeof(E) == 2 * sizeof(A) ? 1 : -1]; +char testEz[sizeof( ((E *)0)->z )]; + +typedef struct A typedef_A; +struct F { + typedef_A; /* { dg-error "does not declare anything" } */ + char f; +}; +char testF[sizeof(F) == sizeof(A) ? 1 : -1]; diff --git a/gcc/testsuite/g++.dg/ext/anon-struct4.C b/gcc/testsuite/g++.dg/ext/anon-struct4.C new file mode 100644 index 000000000..fa5bd4b3d --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/anon-struct4.C @@ -0,0 +1,5 @@ +// PR c++/14401 + +struct { struct { int& i ; } bar ; } foo ; // { dg-error "uninitialized" "uninit" } +// { dg-warning "anonymous" "anon" { target *-*-* } 3 } +// { dg-message "should be initialized" "ref-uninit" { target *-*-* } 3 } diff --git a/gcc/testsuite/g++.dg/ext/anon-struct5.C b/gcc/testsuite/g++.dg/ext/anon-struct5.C new file mode 100644 index 000000000..8b697ccbc --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/anon-struct5.C @@ -0,0 +1,13 @@ +// PR c++/30302 + +struct A +{ + struct { static int i; }; // { dg-error "prohibits anonymous structs|an anonymous struct" } + void foo() { i; } +}; + +struct B +{ + union { static int i; }; // { dg-error "an anonymous union|member of a union" } + void foo() { i; } +}; diff --git a/gcc/testsuite/g++.dg/ext/anon-struct6.C b/gcc/testsuite/g++.dg/ext/anon-struct6.C new file mode 100644 index 000000000..11a7bbd60 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/anon-struct6.C @@ -0,0 +1,10 @@ +// PR c++/33460 + +struct A +{ + struct + { // { dg-error "anonymous struct cannot have function members" } + struct { static int i; }; // { dg-error "prohibits anonymous structs|non-static data members" } + void foo() { i; } + }; // { dg-error "prohibits anonymous structs" } +}; diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C new file mode 100644 index 000000000..0c601e68c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C @@ -0,0 +1,5 @@ +/* Test various operators on __fp16 and mixed __fp16/float operands. */ +/* { dg-do run { target arm*-*-* } } */ +/* { dg-options "-mfp16-format=ieee" } */ + +#include "arm-fp16-ops.h" diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C new file mode 100644 index 000000000..244e31082 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C @@ -0,0 +1,5 @@ +/* Test various operators on __fp16 and mixed __fp16/float operands. */ +/* { dg-do run { target arm*-*-* } } */ +/* { dg-options "-mfp16-format=ieee -ffast-math" } */ + +#include "arm-fp16-ops.h" diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C new file mode 100644 index 000000000..8f9ab64bc --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C @@ -0,0 +1,5 @@ +/* Test various operators on __fp16 and mixed __fp16/float operands. */ +/* { dg-do run { target arm*-*-* } } */ +/* { dg-options "-mfp16-format=alternative" } */ + +#include "arm-fp16-ops.h" diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C new file mode 100644 index 000000000..4877f392c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C @@ -0,0 +1,5 @@ +/* Test various operators on __fp16 and mixed __fp16/float operands. */ +/* { dg-do run { target arm*-*-* } } */ +/* { dg-options "-mfp16-format=alternative -ffast-math" } */ + +#include "arm-fp16-ops.h" diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C new file mode 100644 index 000000000..92bc8a9c0 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C @@ -0,0 +1,15 @@ +/* Test various operators on __fp16 and mixed __fp16/float operands. */ +/* { dg-do compile { target arm*-*-* } } */ +/* { dg-require-effective-target arm_fp16_ok } */ +/* { dg-options "-mfp16-format=ieee" } */ +/* { dg-add-options arm_fp16 } */ + +#include "arm-fp16-ops.h" + +/* We've specified options for hardware float, including fp16 support, so + we should not see any calls to libfuncs here. */ +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */ diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C new file mode 100644 index 000000000..ae40b1e86 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C @@ -0,0 +1,15 @@ +/* Test various operators on __fp16 and mixed __fp16/float operands. */ +/* { dg-do compile { target arm*-*-* } } */ +/* { dg-require-effective-target arm_fp16_ok } */ +/* { dg-options "-mfp16-format=ieee -ffast-math" } */ +/* { dg-add-options arm_fp16 } */ + +#include "arm-fp16-ops.h" + +/* We've specified options for hardware float, including fp16 support, so + we should not see any calls to libfuncs here. */ +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */ diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C new file mode 100644 index 000000000..ed8089bd6 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C @@ -0,0 +1,13 @@ +/* Test various operators on __fp16 and mixed __fp16/float operands. */ +/* { dg-do compile { target arm*-*-* } } */ +/* { dg-require-effective-target arm_neon_ok } */ +/* { dg-options "-mfp16-format=ieee" } */ +/* { dg-add-options arm_neon } */ + +#include "arm-fp16-ops.h" + +/* We've specified options for hardware float, so we should not see any + calls to libfuncs here except for those to the conversion functions. */ +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */ diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C new file mode 100644 index 000000000..b138ca187 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C @@ -0,0 +1,13 @@ +/* Test various operators on __fp16 and mixed __fp16/float operands. */ +/* { dg-do compile { target arm*-*-* } } */ +/* { dg-require-effective-target arm_neon_ok } */ +/* { dg-options "-mfp16-format=ieee -ffast-math" } */ +/* { dg-add-options arm_neon } */ + +#include "arm-fp16-ops.h" + +/* We've specified options for hardware float, so we should not see any + calls to libfuncs here except for those to the conversion functions. */ +/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */ +/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */ diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h new file mode 100644 index 000000000..320494ee7 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h @@ -0,0 +1,135 @@ +/* Test various operators on __fp16 and mixed __fp16/float operands. */ + +#include + +#define CHECK(e,r) assert ((e) == r) +#define CHECK2(e,r) (assert ((e) == r), temp = (e), assert (temp == r)) +#define TEST(e) assert (e) +#define TESTNOT(e) assert (!(e)) + +volatile __fp16 h0 = 0.0; +volatile __fp16 h1 = 1.0; +volatile __fp16 h42 = 42.0; +volatile __fp16 hm2 = -2.0; +volatile __fp16 temp; + +volatile float f0 = 0.0; +volatile float f1 = 1.0; +volatile float f42 = 42.0; +volatile float fm2 = -2.0; + +int main (void) +{ + TEST (h1); + TESTNOT (h0); + TEST (!h0); + TESTNOT (!h1); + + CHECK2 (-h1, -1.0); + CHECK2 (+h1, 1.0); + + CHECK (h1++, 1.0); + CHECK (h1, 2.0); + CHECK (++h1, 3.0); + CHECK (h1, 3.0); + + CHECK (--h1, 2.0); + CHECK (h1, 2.0); + CHECK (h1--, 2.0); + CHECK (h1, 1.0); + + CHECK2 (h42 * hm2, -84.0); + CHECK2 (h42 * (__fp16) -2.0, -84.0); + CHECK2 (h42 * fm2, -84.0); + CHECK2 (f42 * hm2, -84.0); + + CHECK2 (h42 / hm2, -21.0); + CHECK2 (h42 / (__fp16) -2.0, -21.0); + CHECK2 (h42 / fm2, -21.0); + CHECK2 (f42 / hm2, -21.0); + + CHECK2 (hm2 + h42, 40.0); + CHECK2 ((__fp16)-2.0 + h42, 40.0); + CHECK2 (hm2 + f42, 40.0); + CHECK2 (fm2 + h42, 40.0); + + CHECK2 (hm2 - h42, -44.0); + CHECK2 ((__fp16)-2.0 - h42, -44.0); + CHECK2 (hm2 - f42, -44.0); + CHECK2 (fm2 - h42, -44.0); + + TEST (hm2 < h42); + TEST (hm2 < (__fp16)42.0); + TEST (hm2 < f42); + TEST (fm2 < h42); + + TEST (h42 > hm2); + TEST ((__fp16)42.0 > hm2); + TEST (h42 > fm2); + TEST (f42 > hm2); + + TEST (hm2 <= h42); + TEST (hm2 <= (__fp16)42.0); + TEST (hm2 <= f42); + TEST (fm2 <= h42); + + TEST (h42 >= hm2); + TEST (h42 >= (__fp16)-2.0); + TEST (h42 >= fm2); + TEST (f42 >= hm2); + + TESTNOT (h1 == hm2); + TEST (h1 == h1); + TEST (h1 == (__fp16)1.0); + TEST (h1 == f1); + TEST (f1 == h1); + + TEST (h1 != hm2); + TESTNOT (h1 != h1); + TESTNOT (h1 != (__fp16)1.0); + TESTNOT (h1 != f1); + TESTNOT (f1 != h1); + + CHECK2 ((h1 ? hm2 : h42), -2.0); + CHECK2 ((h0 ? hm2 : h42), 42.0); + + CHECK (h0 = h42, 42.0); + CHECK (h0, 42.0); + CHECK (h0 = (__fp16)-2.0, -2.0); + CHECK (h0, -2.0); + CHECK (h0 = f0, 0.0); + CHECK (h0, 0.0); + + CHECK (h0 += h1, 1.0); + CHECK (h0, 1.0); + CHECK (h0 += (__fp16)1.0, 2.0); + CHECK (h0, 2.0); + CHECK (h0 += fm2, 0.0); + CHECK (h0, 0.0); + + CHECK (h0 -= h1, -1.0); + CHECK (h0, -1.0); + CHECK (h0 -= (__fp16)1.0, -2.0); + CHECK (h0, -2.0); + CHECK (h0 -= fm2, 0.0); + CHECK (h0, 0.0); + + h0 = hm2; + CHECK (h0 *= hm2, 4.0); + CHECK (h0, 4.0); + CHECK (h0 *= (__fp16)-2.0, -8.0); + CHECK (h0, -8.0); + CHECK (h0 *= fm2, 16.0); + CHECK (h0, 16.0); + + CHECK (h0 /= hm2, -8.0); + CHECK (h0, -8.0); + CHECK (h0 /= (__fp16)-2.0, 4.0); + CHECK (h0, 4.0); + CHECK (h0 /= fm2, -2.0); + CHECK (h0, -2.0); + + CHECK ((h0, h1), 1.0); + + return 0; +} diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C new file mode 100644 index 000000000..25a872af6 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C @@ -0,0 +1,14 @@ +/* { dg-do compile { target arm*-*-* } } */ +/* { dg-options "-mfp16-format=ieee" } */ + +/* Test mangling */ + +/* { dg-final { scan-assembler "\t.global\t_Z1fPDh" } } */ +void f (__fp16 *x) { } + +/* { dg-final { scan-assembler "\t.global\t_Z1gPDhS_" } } */ +void g (__fp16 *x, __fp16 *y) { } + +/* { dg-final { scan-assembler "\t.global\t_ZN1SIDhDhE1iE" } } */ +template struct S { static int i; }; +template <> int S<__fp16, __fp16>::i = 3; diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C new file mode 100644 index 000000000..bf0139d7c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C @@ -0,0 +1,16 @@ +/* { dg-do compile { target arm*-*-* } } */ +/* { dg-options "-mfp16-format=ieee" } */ + +/* __fp16 values are autoconverted to float and should therefore be treated + * just like float for overloading purposes. */ + +extern int frobnify (float x); +extern int frobnify (double x); + +int g (void) +{ + return frobnify ((__fp16)1.0); +} + +/* { dg-final { scan-assembler "_Z8frobnifyf" } } */ +/* { dg-final { scan-assembler-not " _Z8frobnifyd" } } */ diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C new file mode 100644 index 000000000..03feb1a4d --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C @@ -0,0 +1,10 @@ +/* { dg-do compile { target arm*-*-* } } */ +/* { dg-options "-mfp16-format=ieee" } */ + +/* Functions cannot have parameters of type __fp16. */ +extern void f (__fp16); /* { dg-error "parameters cannot have __fp16 type" } */ +extern void (*pf) (__fp16); /* { dg-error "parameters cannot have __fp16 type" } */ + +/* These should be OK. */ +extern void g (__fp16 *); +extern void (*pg) (__fp16 *); diff --git a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C new file mode 100644 index 000000000..406dfacd3 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C @@ -0,0 +1,10 @@ +/* { dg-do compile { target arm*-*-* } } */ +/* { dg-options "-mfp16-format=ieee" } */ + +/* Functions cannot return type __fp16. */ +extern __fp16 f (void); /* { dg-error "cannot return __fp16" } */ +extern __fp16 (*pf) (void); /* { dg-error "cannot return __fp16" } */ + +/* These should be OK. */ +extern __fp16 *g (void); +extern __fp16 *(*pg) (void); diff --git a/gcc/testsuite/g++.dg/ext/array1.C b/gcc/testsuite/g++.dg/ext/array1.C new file mode 100644 index 000000000..7e54dc919 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/array1.C @@ -0,0 +1,14 @@ +// PR c++/13574 +// { dg-options "" } + +class A { +public: + A() : argc(0), argv() { }; +private: + int argc; + char* argv[]; +}; + +int main() { + A y; +} diff --git a/gcc/testsuite/g++.dg/ext/array2.C b/gcc/testsuite/g++.dg/ext/array2.C new file mode 100644 index 000000000..2d645ca94 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/array2.C @@ -0,0 +1,18 @@ +// { dg-do compile } + +// Avoid -pedantic-error default +// { dg-options "" } + +// PR 19989 - dependent array of size 0 fails to compile. + +template struct A +{ + static const int zero = 0; +}; + +template struct B +{ + int x[A::zero]; +}; + +B<0> b; diff --git a/gcc/testsuite/g++.dg/ext/asm1.C b/gcc/testsuite/g++.dg/ext/asm1.C new file mode 100644 index 000000000..dd4aede24 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm1.C @@ -0,0 +1,56 @@ +// Check that the 3.1 named operand syntax can be used in template functions. + +struct arg1 { + int value; + static const int info = 99; +}; + +struct arg2 { + int value; + static const int info = 11; +}; + +template +int foo (void) +{ + int i; + asm ("# foo on %[third] %[second] %[fourth] %[first]" + : [first] "=r" (i) + : [second] "i" (j), + [third] "i" (j + 2), + [fourth] "i" (100)); + return i; +} + +template +TYPE bar (TYPE t) +{ + asm ("# bar on %[first] %[second] %[third]" + : [first] "=r" (t.value) + : [second] "i[first]" (t.value), + [third] "i" (t.info)); + return t; +} + +template +struct S { + static void frob (TYPE t) + { + asm ("# frob on %[arg]" :: [arg] "i" (t.info)); + } +}; + +void test () +{ + arg1 x; + arg2 y; + + foo<42> (); + bar (x); + bar (y); + S::frob (x); +} + +// { dg-final { scan-assembler "foo on" } } +// { dg-final { scan-assembler "bar on" } } +// { dg-final { scan-assembler "frob on" } } diff --git a/gcc/testsuite/g++.dg/ext/asm10.C b/gcc/testsuite/g++.dg/ext/asm10.C new file mode 100644 index 000000000..b95027c8c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm10.C @@ -0,0 +1,14 @@ +// PR inline-asm/32109 +// { dg-do compile } +// { dg-options "-O2" } + +struct A { int i[3]; ~A (); }; +struct A a; +struct B { struct A c; int i; B (); } b; + +B::B () +{ + __asm ("" : : "r" (a)); // { dg-error "impossible constraint|non-memory input" } + __asm ("" : : "r" (b.c)); // { dg-error "impossible constraint|non-memory input" } + __asm ("" : : "r" (c)); // { dg-error "impossible constraint|non-memory input" } +} diff --git a/gcc/testsuite/g++.dg/ext/asm11.C b/gcc/testsuite/g++.dg/ext/asm11.C new file mode 100644 index 000000000..7939aacc0 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm11.C @@ -0,0 +1,20 @@ +// PR c/37772 +// { dg-do compile } +// { dg-options "" } + +void +foo () +{ + int i; + asm (); // { dg-error "expected string-literal before" } + asm (1); // { dg-error "expected string-literal before" } + asm (int); // { dg-error "expected string-literal before" } + asm (: "=r" (i)); // { dg-error "expected string-literal before" } + asm (1 : "=r" (i)); // { dg-error "expected string-literal before" } + asm (int : "=r" (i)); // { dg-error "expected string-literal before" } + asm (: : "r" (i)); // { dg-error "expected string-literal before" } + asm (1 : : "r" (i)); // { dg-error "expected string-literal before" } + asm (int : : "r" (i)); // { dg-error "expected string-literal before" } + asm (: : : "memory"); // { dg-error "expected string-literal before" } + asm (1 : : : "memory"); // { dg-error "expected string-literal before" } +} diff --git a/gcc/testsuite/g++.dg/ext/asm2.C b/gcc/testsuite/g++.dg/ext/asm2.C new file mode 100644 index 000000000..6cec382c8 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm2.C @@ -0,0 +1,12 @@ +// Bug: in a template, we forgot that this was a simple asm, and decided +// that %edi was a malformed operand specifier. + +template class I { +public: + void f() { asm ("# mov %edi, %esi" ); } +}; + +int main () { + I x; + x.f(); +} diff --git a/gcc/testsuite/g++.dg/ext/asm3.C b/gcc/testsuite/g++.dg/ext/asm3.C new file mode 100644 index 000000000..090218fe6 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm3.C @@ -0,0 +1,15 @@ +// { dg-do compile } + +// Copyright (C) 2002 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 16 Sep 2002 + +// PR 7015. ICE with asms + +int two(int in) +{ + register int out; + __asm__ ("" : "r" (out) : "r" (in)); + return out; +} + +// { dg-message "error:" "" { target *-*-* } 11 } diff --git a/gcc/testsuite/g++.dg/ext/asm4.C b/gcc/testsuite/g++.dg/ext/asm4.C new file mode 100644 index 000000000..2726d8e42 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm4.C @@ -0,0 +1,4 @@ +void f () +{ + __asm__ __volatile__ ("" : : ); +} diff --git a/gcc/testsuite/g++.dg/ext/asm5.C b/gcc/testsuite/g++.dg/ext/asm5.C new file mode 100644 index 000000000..9395395ed --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm5.C @@ -0,0 +1,35 @@ +void f (int i) +{ + __asm__("" : ); + __asm__("" : "+g" (i)); + + __asm__("" :: ); + __asm__("" :: "g" (i)); + + __asm__("" : : ); + __asm__("" : "+g" (i) : ); + __asm__("" : : "g" (i)); + __asm__("" : "+g" (i) : "g" (i)); + + __asm__("" ::: ); + __asm__("" ::: "memory"); + + __asm__("" : :: ); + __asm__("" : "+g" (i) :: ); + __asm__("" : :: "memory"); + __asm__("" : "+g" (i) :: "memory"); + + __asm__("" :: : ); + __asm__("" :: "g" (i) : ); + __asm__("" :: : "memory"); + __asm__("" :: "g" (i) : "memory"); + + __asm__("" : : : ); + __asm__("" : "+g" (i) : : ); + __asm__("" : : "g" (i) : ); + __asm__("" : : : "memory"); + __asm__("" : "+g" (i) : "g" (i) : ); + __asm__("" : "+g" (i) : : "memory"); + __asm__("" : : "g" (i) : "memory"); + __asm__("" : "+g" (i) : "g" (i) : "memory"); +} diff --git a/gcc/testsuite/g++.dg/ext/asm6.C b/gcc/testsuite/g++.dg/ext/asm6.C new file mode 100644 index 000000000..96ef9d385 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm6.C @@ -0,0 +1,11 @@ +struct A +{ + ~A(); +}; +int foo(A); +void bar() +{ + A a; + asm("" : : "r"(foo(a)) );//<-- cleanup needed here. +} + diff --git a/gcc/testsuite/g++.dg/ext/asm7.C b/gcc/testsuite/g++.dg/ext/asm7.C new file mode 100644 index 000000000..a5cad0073 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm7.C @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +const int i = 0; + +void f(void) +{ + __asm__ __volatile__ ("" : "=m" (i)); /* { dg-error "read-only variable" } */ +} + +void g(const int set) +{ + __asm__ __volatile__ ("" : "=r" (set)); /* { dg-error "read-only parameter" } */ +} + + diff --git a/gcc/testsuite/g++.dg/ext/asm8.C b/gcc/testsuite/g++.dg/ext/asm8.C new file mode 100644 index 000000000..0b1be7da7 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm8.C @@ -0,0 +1,16 @@ +/* { dg-do compile } */ + +/* Test that asm with no outputs are treated as volatile. */ + +void f(int x) +{ + __asm__ ("extended asm not discarded" : : "r" (x)); +} + +void g (void) +{ + __asm__ ("simple asm not discarded"); +} +/* { dg-final { scan-assembler "extended asm not discarded" } } */ +/* { dg-final { scan-assembler "simple asm not discarded" } } */ + diff --git a/gcc/testsuite/g++.dg/ext/asm9.C b/gcc/testsuite/g++.dg/ext/asm9.C new file mode 100644 index 000000000..9daa01bbf --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm9.C @@ -0,0 +1,7 @@ +// PR 27451 +// { dg-do compile } + +void foo() +{ + asm("" ::: X); // { dg-error "before" } +} diff --git a/gcc/testsuite/g++.dg/ext/asmgoto1.C b/gcc/testsuite/g++.dg/ext/asmgoto1.C new file mode 100644 index 000000000..dda516797 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asmgoto1.C @@ -0,0 +1,32 @@ +// PR middle-end/44102 +// { dg-do compile } +// { dg-options "-O2" } + +void baz (void); +struct A { A (); ~A (); }; + +static inline int +foo (void) +{ + asm goto ("" : : : : l1, l2); + __builtin_unreachable (); + l1: + return 1; + l2: + return 0; +} + +int +bar (int x) +{ + if (x == 5) + { + A a, b; + baz (); + } + if (foo () || x == 6) + x = 1; + else + x = 2; + return x; +} diff --git a/gcc/testsuite/g++.dg/ext/asmspec1.C b/gcc/testsuite/g++.dg/ext/asmspec1.C new file mode 100644 index 000000000..0661136fe --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asmspec1.C @@ -0,0 +1,8 @@ +// PR c++/28343 +// { dg-do compile } + +struct A +{ + int i __asm__(int); // { dg-error "expected" } + static int j __asm__(int); // { dg-error "expected" } +}; diff --git a/gcc/testsuite/g++.dg/ext/asmspecInvalid.C b/gcc/testsuite/g++.dg/ext/asmspecInvalid.C new file mode 100644 index 000000000..4c528a0f8 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asmspecInvalid.C @@ -0,0 +1,18 @@ +// tests that the asm directive is correctly handled for static fields +// in structures and classes. This only applies to C++; such +// directives generate errors in C. Assembler directives for local +// variables should be tested by the C test suite. +// +// Contributed by Robert Bowdidge (bowdidge@apple.com) 14 Oct 2003 + +// { dg-do compile } + +struct Foo { + // This should reference a variable called bar + int i __asm__("bar"); /* { dg-error "specifiers are not permitted" } */ +}; + +int main (void ) { + int j = 0; + return j; +} diff --git a/gcc/testsuite/g++.dg/ext/asmspecValid.C b/gcc/testsuite/g++.dg/ext/asmspecValid.C new file mode 100644 index 000000000..98d98b46f --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asmspecValid.C @@ -0,0 +1,43 @@ +// tests that the asm directive is correctly handled for static fields +// in structures and classes. This only applies to C++; such +// directives generate errors in C. Assembler directives for local +// variables should be tested by the C test suite. +// +// Contributed by Robert Bowdidge (bowdidge@apple.com) 14 Oct 2003 + +// { dg-do compile } + +struct Foo { + // This should reference a variable called bar + static int i __asm__("bar"); +}; + + +class Bar { +public: + static int i __asm__("theRealI"); + static int j __asm__("theRealJ"); + int boof; +}; + +class Baz : public Bar { +public: + static char *ptr __asm__ ("theRealString"); +}; + +int main (int argc, char **argv) { + struct Foo myFoo; + Bar b; + myFoo.i = 1; + Foo::i = 2; + Baz::j = 10; + Baz::ptr = 0; + b.i = 1; + return (b.i); +} + + +/* { dg-final {scan-assembler "bar"} } */ +/* { dg-final {scan-assembler "theRealString"} } */ +/* { dg-final {scan-assembler "theRealI" } } */ +/* { dg-final {scan-assembler "theRealJ" } } */ diff --git a/gcc/testsuite/g++.dg/ext/attr-alias-1.C b/gcc/testsuite/g++.dg/ext/attr-alias-1.C new file mode 100644 index 000000000..1427267e5 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attr-alias-1.C @@ -0,0 +1,37 @@ +/* { dg-do run } */ +/* { dg-require-alias "" } */ + +#include + +struct Klass +{ + int implementation () const; + int magic () const; +}; + +int Klass::implementation (void) const +{ + return 0; +} + +int Klass::magic () const + __attribute__ ((alias ("_ZNK5Klass14implementationEv"))); + +int __attribute__ ((noinline)) + Foo (Klass const *ptr) +{ + if (ptr->magic () != 0) + return 1; + + if (typeid (*ptr) != typeid (Klass)) + return 2; + + return 0; +} + +int main () +{ + Klass obj; + + return Foo (&obj); +} diff --git a/gcc/testsuite/g++.dg/ext/attr-alias-2.C b/gcc/testsuite/g++.dg/ext/attr-alias-2.C new file mode 100644 index 000000000..61a132f77 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attr-alias-2.C @@ -0,0 +1,37 @@ +/* { dg-do run } */ +/* { dg-require-alias "" } */ + +#include + +struct Klass +{ + int implementation () const; + virtual int magic () const; +}; + +int Klass::implementation (void) const +{ + return 0; +} + +int Klass::magic () const + __attribute__ ((alias ("_ZNK5Klass14implementationEv"))); + +int __attribute__ ((noinline)) + Foo (Klass const *ptr) +{ + if (ptr->magic () != 0) + return 1; + + if (typeid (*ptr) != typeid (Klass)) + return 2; + + return 0; +} + +int main () +{ + Klass obj; + + return Foo (&obj); +} diff --git a/gcc/testsuite/g++.dg/ext/attr-ifunc-1.C b/gcc/testsuite/g++.dg/ext/attr-ifunc-1.C new file mode 100644 index 000000000..d41fa7d32 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attr-ifunc-1.C @@ -0,0 +1,34 @@ +/* { dg-do run } */ +/* { dg-require-ifunc "" } */ +/* { dg-options "-Wno-pmf-conversions" } */ + +#include + +struct Klass +{ + int implementation (); + int magic (); + static void *resolver (); +}; + +int Klass::implementation (void) +{ + printf ("'ere I am JH\n"); + return 0; +} + +void *Klass::resolver (void) +{ + int (Klass::*pmf) () = &Klass::implementation; + + return (void *)(int (*)(Klass *))(((Klass *)0)->*pmf); +} + +int Klass::magic (void) __attribute__ ((ifunc ("_ZN5Klass8resolverEv"))); + +int main () +{ + Klass obj; + + return obj.magic () != 0; +} diff --git a/gcc/testsuite/g++.dg/ext/attr-ifunc-2.C b/gcc/testsuite/g++.dg/ext/attr-ifunc-2.C new file mode 100644 index 000000000..e205a2a6a --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attr-ifunc-2.C @@ -0,0 +1,38 @@ +/* { dg-do run } */ +/* { dg-require-ifunc "" } */ +/* { dg-options "-Wno-pmf-conversions" } */ + +#include + +struct Klass +{ + int implementation (); + int magic (); + static void *resolver (); +}; + +int Klass::implementation (void) +{ + printf ("'ere I am JH\n"); + return 0; +} + +void *Klass::resolver (void) +{ + int (Klass::*pmf) () = &Klass::implementation; + + return (void *)(int (*)(Klass *))(((Klass *)0)->*pmf); +} + +int Klass::magic (void) __attribute__ ((ifunc ("_ZN5Klass8resolverEv"))); + +struct Klassier : Klass +{ +}; + +int main () +{ + Klassier obj; + + return obj.magic () != 0; +} diff --git a/gcc/testsuite/g++.dg/ext/attr-ifunc-3.C b/gcc/testsuite/g++.dg/ext/attr-ifunc-3.C new file mode 100644 index 000000000..ba65976b9 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attr-ifunc-3.C @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-require-ifunc "" } */ +/* { dg-options "-Wno-pmf-conversions" } */ + +#include + +struct Klass +{ + int implementation (); + int magic (); + static void *resolver (); +}; + +int Klass::implementation (void) +{ + printf ("'ere I am JH\n"); + return 0; +} + +void *Klass::resolver (void) +{ + int (Klass::*pmf) () = &Klass::implementation; + + return (void *)(int (*)(Klass *))(((Klass *)0)->*pmf); +} + +int Klass::magic (void) __attribute__ ((ifunc ("_ZN5Klass8resolverEv"))); + +int Foo (Klass &obj, int (Klass::*pmf) ()) +{ + return (obj.*pmf) (); +} + +int main () +{ + Klass obj; + + return Foo (obj, &Klass::magic) != 0; +} diff --git a/gcc/testsuite/g++.dg/ext/attr-ifunc-4.C b/gcc/testsuite/g++.dg/ext/attr-ifunc-4.C new file mode 100644 index 000000000..0cae41028 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attr-ifunc-4.C @@ -0,0 +1,44 @@ +/* { dg-do run } */ +/* { dg-require-ifunc "" } */ +/* { dg-options "-Wno-pmf-conversions" } */ + +#include + +struct Klass +{ + virtual int magic () = 0; +}; + +struct Klassier : Klass +{ + int implementation (); + int magic (); + static void *resolver (); +}; + +int Klassier::implementation (void) +{ + printf ("'ere I am JH\n"); + return 0; +} + +void *Klassier::resolver (void) +{ + int (Klassier::*pmf) () = &Klassier::implementation; + + return (void *)(int (*)(Klassier *))(((Klassier *)0)->*pmf); +} + +int Klassier::magic (void) __attribute__ ((ifunc ("_ZN8Klassier8resolverEv"))); + +int __attribute__ ((weak)) Foo (Klass &base) +{ + return base.magic (); +} + +int main () +{ + Klassier obj; + + return Foo (obj) != 0; +} diff --git a/gcc/testsuite/g++.dg/ext/attrib1.C b/gcc/testsuite/g++.dg/ext/attrib1.C new file mode 100644 index 000000000..2bd69e82a --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib1.C @@ -0,0 +1,10 @@ +// Test for interpretation of attribute immediately before function name. +// Origin: Joseph Myers +// { dg-do compile } + +// An attribute immediately before the function name should in this +// case properly apply to the return type, but compatibility with +// existing code using this form requires it to apply to the function +// type instead in the case of attributes applying to function types, +// and to the declaration in the case of attributes applying to declarations. +int ****__attribute__((format(printf, 1, 2))) foo(const char *, ...); diff --git a/gcc/testsuite/g++.dg/ext/attrib10.C b/gcc/testsuite/g++.dg/ext/attrib10.C new file mode 100644 index 000000000..42d967dde --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib10.C @@ -0,0 +1,8 @@ +// PR c++/12795 +// { dg-require-alias "" } + +void foo() +{ + extern void bar () __attribute__ ((__alias__ ("BAR"))); // { dg-warning "ignored" } + bar (); +} diff --git a/gcc/testsuite/g++.dg/ext/attrib11.C b/gcc/testsuite/g++.dg/ext/attrib11.C new file mode 100644 index 000000000..26bc7907c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib11.C @@ -0,0 +1,17 @@ +// { dg-do compile } +// { dg-options "-Wall" } + +// Copyright (C) 2003 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 30 Dec 2003 + + +// PR c++/13507, spurious warning due to attribute clobbering +extern "C" { + extern int printf (__const char *__restrict __format, ...) throw (); + extern int scanf (__const char *__restrict __format, ...) throw (); +} + +void foo(unsigned int x) +{ + printf ("%d\n", x); +} diff --git a/gcc/testsuite/g++.dg/ext/attrib12.C b/gcc/testsuite/g++.dg/ext/attrib12.C new file mode 100644 index 000000000..aea93781d --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib12.C @@ -0,0 +1,16 @@ +// PR c++/13791 + +template struct O { + struct __attribute__((packed)) I { + int i; + char c; + }; + + I* foo(); +}; + +template +typename O::I* +O::foo() { return 0; } + +template class O; diff --git a/gcc/testsuite/g++.dg/ext/attrib13.C b/gcc/testsuite/g++.dg/ext/attrib13.C new file mode 100644 index 000000000..22ea97ae7 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib13.C @@ -0,0 +1,4 @@ +// PR c++/13854 + +extern char *rindex (__const char *__s, int __c) throw () __attribute__ ((__pure__)); +extern char *rindex (__const char *__s, int __c) throw () __attribute__ ((__pure__)); diff --git a/gcc/testsuite/g++.dg/ext/attrib14.C b/gcc/testsuite/g++.dg/ext/attrib14.C new file mode 100644 index 000000000..c7e5f7a9f --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib14.C @@ -0,0 +1,13 @@ +// PR c++/13170 +// The bogus attribute is ignored, but was in TYPE_ATTRIBUTES during +// parsing of the class, causing some variants to have it and some not. + +struct __attribute__((bogus)) A +{ // { dg-warning "ignored" "" } + virtual ~A(); + void foo(const A&); + void bar(const A&); +}; + +void A::foo(const A&) {} +void A::bar(const A& a) { foo(a); } diff --git a/gcc/testsuite/g++.dg/ext/attrib15.C b/gcc/testsuite/g++.dg/ext/attrib15.C new file mode 100644 index 000000000..05de12cce --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib15.C @@ -0,0 +1,9 @@ +// PR c++/15317 + +struct A +{ + A(char); +}; +A::A(__attribute__((unused)) char i2) +{} + diff --git a/gcc/testsuite/g++.dg/ext/attrib16.C b/gcc/testsuite/g++.dg/ext/attrib16.C new file mode 100644 index 000000000..2e73fca70 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib16.C @@ -0,0 +1,8 @@ +// { dg-do compile } +// Origin: +// PR c++/10479: use of non dependent expressions in attributes in templates + +template +struct foo2 { + float bar __attribute__((aligned(__alignof__(double)))); +}; diff --git a/gcc/testsuite/g++.dg/ext/attrib17.C b/gcc/testsuite/g++.dg/ext/attrib17.C new file mode 100644 index 000000000..43cf264f5 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib17.C @@ -0,0 +1,19 @@ +// { dg-do compile } +// Origin: Benjamin Kosnik +// PR c++/17743: Attributes applied to typedefs. + +struct A { + typedef char layout_type[sizeof(double)] + __attribute__((aligned(__alignof__(double)))); + layout_type data; +}; + +struct B { + typedef char layout_type[sizeof(double)]; + layout_type data __attribute__((aligned(__alignof__(double)))); +}; + +template struct StaticAssert; +template<> struct StaticAssert {}; + +StaticAssert<__alignof__(A) == __alignof__(B)> a1; diff --git a/gcc/testsuite/g++.dg/ext/attrib18.C b/gcc/testsuite/g++.dg/ext/attrib18.C new file mode 100644 index 000000000..ab9fea095 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib18.C @@ -0,0 +1,10 @@ +// PR c++/17542 +// Test that we warn when an attribute preceding the class-key is ignored. +// { dg-do compile } + +__attribute__ ((packed)) struct A // { dg-warning "attribute" } +{ + char c; + int x; + void f(); +}; diff --git a/gcc/testsuite/g++.dg/ext/attrib19.C b/gcc/testsuite/g++.dg/ext/attrib19.C new file mode 100644 index 000000000..f1362c3b4 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib19.C @@ -0,0 +1,10 @@ +// PR c++/19739 + +void Dummy() __attribute__(( , )); +void Dummy() {} + +int main (int argc, char **argv) +{ + Dummy(); + return 0; +} diff --git a/gcc/testsuite/g++.dg/ext/attrib2.C b/gcc/testsuite/g++.dg/ext/attrib2.C new file mode 100644 index 000000000..a7563f388 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib2.C @@ -0,0 +1,12 @@ +// Test that an early attribute doesn't confuse uses of a class. +// { dg-do compile } + +struct __attribute__ ((packed)) A +{ + void f () const; +}; + +void +A::f () const +{ +} diff --git a/gcc/testsuite/g++.dg/ext/attrib20.C b/gcc/testsuite/g++.dg/ext/attrib20.C new file mode 100644 index 000000000..25b27f307 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib20.C @@ -0,0 +1,23 @@ +// { dg-do compile } +// { dg-options "-g" } +// Origin: +// PR c++/19508: avoid attributes for template parameters + +template +struct BVector +{ + typedef T T2; + typedef T value_type __attribute__ ((aligned(8))); // { dg-bogus "attribute" "attribute" } + typedef T2 value_type2 __attribute__ ((aligned(8))); // { dg-bogus "attribute" "attribute" } + value_type v; +}; +BVector m; + +template