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++.old-deja/g++.pt/alignof.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/array1.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/array2.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/array3.C | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/array4.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/array5.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/array6.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/array7.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/asm1.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/asm2.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/assign1.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C | 56 ++++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/bad-type.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/builtin.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/call1.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/call2.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/cast1.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/cast2.C | 32 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/codegen1.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/cond2.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/cond3.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/const1.C | 4 ++ gcc/testsuite/g++.old-deja/g++.pt/const2.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/conv1.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/conv2.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/conv3.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/copy1.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash1.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash10.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash11.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash12.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash13.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/crash14.C | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/crash15.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/crash16.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash17.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/crash18.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/crash19.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/crash2.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash20.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/crash21.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash22.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/crash23.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/crash24.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash25.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/crash26.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/crash27.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash28.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/crash29.C | 70 ++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash3.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/crash30.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/crash31.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/crash32.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash33.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/crash34.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/crash35.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash36.C | 35 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash37.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/crash38.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/crash39.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/crash4.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash40.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/crash41.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash42.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash43.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/crash44.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash45.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash46.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/crash47.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/crash48.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/crash49.C | 37 +++++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash5.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash50.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/crash51.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash52.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/crash53.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/crash54.C | 29 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash55.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash56.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/crash57.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash58.C | 33 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash59.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/crash6.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/crash60.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/crash61.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash62.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/crash63.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/crash64.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/crash65.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash66.C | 40 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash67.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/crash68.C | 71 ++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash7.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/crash8.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/crash9.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/ctor1.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/ctor2.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/debug1.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/decl1.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/decl2.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/decl3.C | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/decl4.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/deduct1.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/deduct2.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/deduct3.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/deduct4.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/deduct5.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/deduct6.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/deduct7.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/defarg.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/defarg10.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/defarg11.C | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/defarg12.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/defarg13.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/defarg14.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/defarg2.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/defarg3.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/defarg4.C | 32 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/defarg5.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/defarg6.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/defarg7.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/defarg8.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/defarg9.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/derived1.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/derived2.C | 35 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/derived3.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/dynarray.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/ehspec1.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/eichin01.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/eichin01a.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/eichin01b.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/enum.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/enum10.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/enum11.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/enum12.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/enum13.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/enum14.C | 36 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/enum2.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/enum3.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/enum4.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/enum5.C | 4 ++ gcc/testsuite/g++.old-deja/g++.pt/enum6.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/enum7.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/enum8.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/enum9.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/error1.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/error2.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/error3.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/explarg1.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit1.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit10.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit11.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit12.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit13.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit14.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit15.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit16.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit17.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit18.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit19.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit2.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit20.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/explicit21.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit22.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit23.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit24.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/explicit25.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit26.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit27.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit28.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit29.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit3.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit30.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit31.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/explicit32.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit33.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit34.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit35.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/explicit36.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit37.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit38.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit39.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit4.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit40.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit41.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit42.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/explicit43.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit5.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit50.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/explicit51.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit52.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit53.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit54.C | 36 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit55.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/explicit56.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/explicit57.C | 43 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit58.C | 42 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit59.C | 42 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit6.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit60.C | 44 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit61.C | 44 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit62.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit63.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit64.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit65.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit66.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit67.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit68.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit69.C | 2 + gcc/testsuite/g++.old-deja/g++.pt/explicit70.C | 44 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit71.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/explicit72.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit73.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/explicit74.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit75.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit76.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/explicit77.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit78.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit79.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit8.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/explicit80.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/explicit81.C | 43 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/explicit82.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/explicit9.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/export1.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/expr1.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/expr2.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/expr3.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/expr5.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/expr6.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/expr7.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/expr8.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/extern1.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/fntry1.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/friend1.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/friend10.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend11.C | 32 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend12.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend13.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend14.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/friend15.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/friend16.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend17.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend18.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend20.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/friend21.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend22.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/friend23.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/friend24.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/friend25.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/friend26.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/friend27.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/friend28.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/friend29.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/friend3.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/friend30.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/friend31.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/friend32.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/friend33.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend34.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/friend35.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/friend36.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/friend37.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/friend38.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/friend39.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/friend4.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/friend40.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/friend41.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/friend42.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/friend43.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/friend44.C | 44 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend45.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/friend46.C | 29 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend47.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/friend48.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/friend49.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend5.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/friend6.C | 29 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend7.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/friend8.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/friend9.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/goto.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/goto2.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/infinite1.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/inherit1.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/inherit2.C | 67 +++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/inject1.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/inject2.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/inline1.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/inline2.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate1.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate10.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate11.C | 65 ++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate12.C | 61 +++++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate13.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate3.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/instantiate4.C | 31 +++++++++ .../g++.old-deja/g++.pt/instantiate5-main.cc | 3 + gcc/testsuite/g++.old-deja/g++.pt/instantiate5.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate5.cc | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/instantiate6.C | 29 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate7.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate8.C | 40 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/instantiate9.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/koenig1.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/label1.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/link1.C | 29 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/local1.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/local2.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/local3.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/local4.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/local5.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/local6.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/local7.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/lookup1.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/lookup10.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/lookup2.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/lookup3.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/lookup4.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/lookup5.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/lookup6.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/lookup7.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/lookup8.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/lookup9.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/m1.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/m2.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/m3.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/m4.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/m5.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/m6.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/m7.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/m8.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/m9.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/m9a.C | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/mangle1.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/mangle2.C | 40 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/memclass1.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/memclass10.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/memclass11.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/memclass12.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/memclass13.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/memclass14.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memclass15.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/memclass16.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/memclass17.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memclass18.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/memclass19.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/memclass2.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memclass20.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/memclass21.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/memclass3.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memclass4.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memclass5.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memclass6.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memclass7.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memclass8.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/memclass9.C | 32 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp1.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp10.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C | 40 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp11.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp12.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp13.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp14.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp15.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp16.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp17.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp18.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp19.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp2.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp20.C | 43 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp28.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp29.C | 32 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp3.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp30.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp31.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp32.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp33.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp34.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp35.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp36.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp37.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp39.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp4.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp40.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp41.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/memtemp42.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp43.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp44.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp45.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp46.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp47.C | 29 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp48.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp49.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp5.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp52.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp53.C | 36 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp55.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/memtemp56.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp59.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp6.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp60.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/memtemp61.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp62.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp63.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp65.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp66.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp67.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp68.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/memtemp69.C | 36 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp7.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp71.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/memtemp72.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp73.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp74.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp75.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp76.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp78.C | 56 ++++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp79.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/memtemp8.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp80.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp81.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp83.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp84.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp85.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp86.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp87.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp88.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp89.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp9.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp90.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp91.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp92.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp93.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp94.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/memtemp95.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp96.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp97.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp98.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/memtemp99.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/mi1.C | 76 ++++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/nested1.C | 47 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/nested2.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/niklas01.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/niklas01a.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/niklas01b.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/niklas02.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/niklas03.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/nontype1.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/nontype2.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/nontype3.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/nontype4.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/nontype5.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/nttp1.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/nttp2.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/operator1.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/overload1.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/overload10.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/overload11.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/overload12.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/overload13.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/overload14.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/overload15.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/overload2.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/overload3.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/overload4.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/overload5.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/overload6.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/overload7.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/overload8.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/overload9.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/parms1.C | 32 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/parms2.C | 39 +++++++++++ gcc/testsuite/g++.old-deja/g++.pt/parms3.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/parse2.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/partial1.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/partial2.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/partial3.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/partial4.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/partial5.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/poi1.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/pointer1.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem1.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem10.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem2.C | 49 ++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem3.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem4.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem5.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C | 42 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem7.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem8.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem9.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/recursion.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/recursion2.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/redecl1.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/redecl2.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/ref1.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/ref2.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/ref3.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/ref4.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/repo1.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/repo2.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/repo3.C | 37 +++++++++++ gcc/testsuite/g++.old-deja/g++.pt/repo4.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/scope1.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/shadow1.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/shadow2.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/sizeof.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/sizeof2.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/sizeof3.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec1.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/spec10.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec11.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/spec12.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/spec13.C | 44 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec14.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/spec15.C | 50 ++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec16.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/spec17.C | 44 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec18.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec19.C | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/spec2.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec20.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/spec21.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/spec22.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/spec23.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/spec24.C | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/spec25.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/spec26.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/spec27.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/spec28.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/spec29.C | 32 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec3.C | 38 +++++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec30.C | 42 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec31.C | 3 + gcc/testsuite/g++.old-deja/g++.pt/spec32.C | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/spec33.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec34.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/spec35.C | 35 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec36.C | 47 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec37.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/spec38.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/spec39.C | 43 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec4.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/spec40.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/spec41.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/spec5.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/spec6.C | 33 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec7.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/spec8.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec9.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/static1.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/static10.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/static11.C | 35 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/static2.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/static3.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/static4.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/static5.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/static6.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/static7.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/static8.C | 33 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/static9.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/static_cast.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/stmtexpr.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/stmtexpr2.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/switch1.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/syntax1.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/syntax2.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/t00.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/t01.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/t03.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/t04.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/t05.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/t06.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/t07.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/t08.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/t09.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/t10.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/t11.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/t11a.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/t12.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/t12a.C | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/t13.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/t14.C | 24 +++++++ gcc/testsuite/g++.old-deja/g++.pt/t14a.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/t16.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/t18.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/t20.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/t21.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/t22.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/t23.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/t24.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/t25.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/t26.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/t27.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/t28.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/t29.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/t30.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/t31.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/t32.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/t32a.C | 10 +++ gcc/testsuite/g++.old-deja/g++.pt/t34.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/t34a.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/t35.C | 12 ++++ gcc/testsuite/g++.old-deja/g++.pt/t35a.C | 5 ++ gcc/testsuite/g++.old-deja/g++.pt/t36.C | 6 ++ gcc/testsuite/g++.old-deja/g++.pt/t37.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/t37a.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/t38.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/t39.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/t40.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/t41.C | 11 ++++ gcc/testsuite/g++.old-deja/g++.pt/t42.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/test4.C | 4 ++ gcc/testsuite/g++.old-deja/g++.pt/test5.C | 3 + gcc/testsuite/g++.old-deja/g++.pt/tiemann1r.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/tiemann2.C | 35 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/to2.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/tt.C | 33 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/tt2.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp1.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/ttp10.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp11.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp12.C | 29 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp13.C | 29 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp14.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp15.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp16.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp17.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp18.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp2.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/ttp20.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp21.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp22.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp23.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp24.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp25.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp27.C | 36 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp28.C | 40 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp29.C | 33 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp3.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/ttp30.C | 38 +++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp31.C | 33 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp32.C | 38 +++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp33.C | 32 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp34.C | 32 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp4.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/ttp41.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp42.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp43.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp44.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/ttp45.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/ttp46.C | 4 ++ gcc/testsuite/g++.old-deja/g++.pt/ttp47.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/ttp48.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/ttp49.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/ttp5.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/ttp50.C | 8 +++ gcc/testsuite/g++.old-deja/g++.pt/ttp52.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/ttp53.C | 35 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp54.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp55.C | 23 +++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp56.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp57.C | 45 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp58.C | 48 ++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp59.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/ttp6.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/ttp60.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/ttp61.C | 9 +++ gcc/testsuite/g++.old-deja/g++.pt/ttp62.C | 30 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp63.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/ttp64.C | 58 +++++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp65.C | 38 +++++++++++ gcc/testsuite/g++.old-deja/g++.pt/ttp7.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/ttp8.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/typedef1.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/typedef2.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/typedef3.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/typedef4.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/typename1.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename10.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/typename11.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/typename12.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename13.C | 36 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename14.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/typename15.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/typename16.C | 31 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename17.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/typename18.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/typename19.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename2.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/typename20.C | 16 +++++ gcc/testsuite/g++.old-deja/g++.pt/typename21.C | 25 +++++++ gcc/testsuite/g++.old-deja/g++.pt/typename22.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/typename23.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/typename24.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename25.C | 32 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename26.C | 19 ++++++ gcc/testsuite/g++.old-deja/g++.pt/typename27.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/typename28.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename3.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/typename4.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename5.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename6.C | 20 ++++++ gcc/testsuite/g++.old-deja/g++.pt/typename7.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/typename8.C | 28 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename9.C | 17 +++++ gcc/testsuite/g++.old-deja/g++.pt/unify1.C | 14 ++++ gcc/testsuite/g++.old-deja/g++.pt/unify2.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/unify3.C | 22 +++++++ gcc/testsuite/g++.old-deja/g++.pt/unify4.C | 13 ++++ gcc/testsuite/g++.old-deja/g++.pt/unify6.C | 41 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/unify7.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/unify8.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/union1.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/union2.C | 18 +++++ gcc/testsuite/g++.old-deja/g++.pt/using1.C | 37 +++++++++++ gcc/testsuite/g++.old-deja/g++.pt/using2.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/vaarg.C | 29 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/vaarg2.C | 26 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/vaarg3.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/var1.C | 4 ++ gcc/testsuite/g++.old-deja/g++.pt/vbase1.C | 34 ++++++++++ gcc/testsuite/g++.old-deja/g++.pt/virtual1.C | 7 ++ gcc/testsuite/g++.old-deja/g++.pt/virtual2.C | 21 ++++++ gcc/testsuite/g++.old-deja/g++.pt/virtual3.C | 15 +++++ gcc/testsuite/g++.old-deja/g++.pt/virtual4.C | 41 ++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/warn1.C | 27 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/warn2.C | 19 ++++++ 740 files changed, 14687 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/alignof.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/array1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/array2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/array3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/array4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/array5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/array6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/array7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/asm1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/asm2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/assign1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/bad-type.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/builtin.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/call1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/call2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/cast1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/cast2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/codegen1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/cond2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/cond3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/const1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/const2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/conv1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/conv2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/conv3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/copy1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash22.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash23.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash24.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash25.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash26.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash27.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash28.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash29.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash30.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash31.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash32.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash33.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash34.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash35.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash36.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash37.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash38.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash39.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash40.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash41.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash42.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash43.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash44.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash45.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash46.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash47.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash48.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash49.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash50.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash51.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash52.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash53.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash54.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash55.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash56.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash57.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash58.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash59.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash60.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash61.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash62.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash63.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash64.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash65.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash66.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash67.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash68.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ctor1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ctor2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/debug1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/decl1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/decl2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/decl3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/decl4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/deduct1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/deduct2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/deduct3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/deduct4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/deduct5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/deduct6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/deduct7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/defarg9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/derived1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/derived2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/derived3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/dynarray.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ehspec1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/eichin01.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/eichin01a.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/eichin01b.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/enum9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/error1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/error2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/error3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explarg1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit22.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit23.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit24.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit25.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit26.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit27.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit28.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit29.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit30.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit31.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit32.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit33.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit34.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit35.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit36.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit37.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit38.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit39.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit40.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit41.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit42.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit43.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit50.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit51.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit52.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit53.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit54.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit55.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit56.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit57.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit58.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit59.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit60.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit61.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit62.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit63.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit64.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit65.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit66.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit67.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit68.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit69.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit70.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit71.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit72.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit73.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit74.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit75.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit76.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit77.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit78.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit79.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit80.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit81.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit82.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/explicit9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/export1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/expr1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/expr2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/expr3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/expr5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/expr6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/expr7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/expr8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/extern1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/fntry1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend22.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend23.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend24.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend25.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend26.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend27.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend28.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend29.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend30.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend31.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend32.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend33.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend34.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend35.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend36.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend37.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend38.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend39.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend40.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend41.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend42.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend43.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend44.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend45.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend46.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend47.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend48.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend49.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/friend9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/goto.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/goto2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/infinite1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/inherit1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/inherit2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/inject1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/inject2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/inline1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/inline2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate5-main.cc create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate5.cc create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/instantiate9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/koenig1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/label1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/link1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/local1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/local2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/local3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/local4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/local5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/local6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/local7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/lookup1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/lookup10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/lookup2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/lookup3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/lookup4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/lookup5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/lookup6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/lookup7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/lookup8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/lookup9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/m1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/m2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/m3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/m4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/m5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/m6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/m7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/m8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/m9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/m9a.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/mangle1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/mangle2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memclass9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp28.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp29.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp30.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp31.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp32.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp33.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp34.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp35.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp36.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp37.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp39.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp40.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp41.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp42.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp43.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp44.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp45.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp46.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp47.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp48.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp49.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp52.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp53.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp55.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp56.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp59.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp60.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp61.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp62.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp63.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp65.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp66.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp67.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp68.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp69.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp71.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp72.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp73.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp74.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp75.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp76.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp78.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp79.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp80.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp81.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp83.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp84.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp85.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp86.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp87.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp88.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp89.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp90.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp91.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp92.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp93.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp94.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp95.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp96.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp97.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp98.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/memtemp99.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/mi1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/nested1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/nested2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/niklas01.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/niklas01a.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/niklas01b.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/niklas02.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/niklas03.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/nontype1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/nontype2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/nontype3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/nontype4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/nontype5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/nttp1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/nttp2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/operator1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/overload9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/parms1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/parms2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/parms3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/parse2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/partial1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/partial2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/partial3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/partial4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/partial5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/poi1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/pointer1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ptrmem1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ptrmem10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ptrmem2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ptrmem3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ptrmem4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ptrmem5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ptrmem7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ptrmem8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ptrmem9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/recursion.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/recursion2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/redecl1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/redecl2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ref1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ref2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ref3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ref4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/repo1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/repo2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/repo3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/repo4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/scope1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/shadow1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/shadow2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/sizeof.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/sizeof2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/sizeof3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec22.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec23.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec24.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec25.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec26.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec27.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec28.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec29.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec30.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec31.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec32.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec33.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec34.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec35.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec36.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec37.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec38.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec39.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec40.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec41.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/static_cast.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/stmtexpr.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/stmtexpr2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/switch1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/syntax1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/syntax2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t00.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t01.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t03.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t04.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t05.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t06.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t07.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t08.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t09.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t11a.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t12a.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t14a.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t22.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t23.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t24.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t25.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t26.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t27.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t28.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t29.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t30.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t31.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t32.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t32a.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t34.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t34a.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t35.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t35a.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t36.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t37.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t37a.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t38.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t39.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t40.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t41.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/t42.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/test4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/test5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/tiemann1r.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/tiemann2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/to2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/tt.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/tt2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp22.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp23.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp24.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp25.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp27.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp28.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp29.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp30.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp31.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp32.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp33.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp34.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp41.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp42.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp43.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp44.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp45.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp46.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp47.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp48.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp49.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp50.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp52.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp53.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp54.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp55.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp56.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp57.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp58.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp59.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp60.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp61.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp62.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp63.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp64.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp65.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/ttp8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typedef1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typedef2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typedef3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typedef4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename22.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename23.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename24.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename25.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename26.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename27.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename28.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/unify1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/unify2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/unify3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/unify4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/unify6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/unify7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/unify8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/union1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/union2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/using1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/using2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/vaarg.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/vaarg2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/vaarg3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/var1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/vbase1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/virtual1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/virtual2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/virtual3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/virtual4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/warn1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/warn2.C (limited to 'gcc/testsuite/g++.old-deja/g++.pt') diff --git a/gcc/testsuite/g++.old-deja/g++.pt/alignof.C b/gcc/testsuite/g++.old-deja/g++.pt/alignof.C new file mode 100644 index 000000000..d6af26841 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/alignof.C @@ -0,0 +1,22 @@ +// { dg-do run } +extern "C" void abort(); + +struct S +{ + char c; + double d; +}; + + +template +void foo(T) +{ + if (__alignof__(T) != __alignof__(S)) + abort(); +} + + +int main() +{ + foo(S()); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/array1.C b/gcc/testsuite/g++.old-deja/g++.pt/array1.C new file mode 100644 index 000000000..50e3724b7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/array1.C @@ -0,0 +1,11 @@ +// { dg-do run } +template + unsigned size(T (&)[N]) { return N; } +template + unsigned size(T const (&)[N]) { return N; } + +int main() { + short iarray[] = { 1, 2, 3, 4, 5 }; + const short carray[] = { 1, 2, 3, 4, 5 }; + return size(iarray) - size(carray); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/array2.C b/gcc/testsuite/g++.old-deja/g++.pt/array2.C new file mode 100644 index 000000000..edab15bbe --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/array2.C @@ -0,0 +1,14 @@ +// { dg-do assemble } + +template +class Bar {}; + +template +class Huh {}; + +template +void foo(const Bar > &x) {} + +int main() { + foo(Bar<3,Huh >()); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/array3.C b/gcc/testsuite/g++.old-deja/g++.pt/array3.C new file mode 100644 index 000000000..4f9d89486 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/array3.C @@ -0,0 +1,5 @@ +// { dg-do assemble } +// Origin: Brendan Kehoe + + template int foo(char[4][x]) { return x; } + int (*bar)(char[4][3]) = &foo; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/array4.C b/gcc/testsuite/g++.old-deja/g++.pt/array4.C new file mode 100644 index 000000000..0bd580af3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/array4.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// Test to make sure that the array bounds are treated as an expression +// in template parm substitution. + +// Written by Jason Merrill + + +template void f (T t) { int ar[sizeof (T)]; } + +int +main () +{ + f (1); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/array5.C b/gcc/testsuite/g++.old-deja/g++.pt/array5.C new file mode 100644 index 000000000..87bd0a2cd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/array5.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +void h(T&); + +template +void g () +{ + h ("abcdefghi"); +} + +template void g(); + +template +void h(T&) +{ + T t = {}; +} + + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/array6.C b/gcc/testsuite/g++.old-deja/g++.pt/array6.C new file mode 100644 index 000000000..b48cabd4d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/array6.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// { dg-options "" } +// Origin: Alfred Minarik + +template +struct basic_filebuf +{ + virtual void + underflow() + { + int __size = 5; + char __conv_buf[__size]; + } +}; + +template class basic_filebuf; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/array7.C b/gcc/testsuite/g++.old-deja/g++.pt/array7.C new file mode 100644 index 000000000..c045a349d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/array7.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S { + enum E { e = 5 }; + static int i[e]; +}; + +template +int S::i[S::e]; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/asm1.C b/gcc/testsuite/g++.old-deja/g++.pt/asm1.C new file mode 100644 index 000000000..8e54a8ed5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/asm1.C @@ -0,0 +1,17 @@ +// { dg-do assemble { target i?86-*-linux* x86_64-*-linux* } } +// We'd use ebx with 32-bit pic code, so skip. +// { dg-skip-if "" { ilp32 && { ! nonpic } } { "*" } { "" } } +// Origin: "Weidmann, Nicholas" + +template int foo(int v) +{ + __asm__ __volatile__("addl %1, %0" : "=a" (v) : "b" (i)); + + return v; +} + +int bar(int i) +{ + return foo<123>(i); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/asm2.C b/gcc/testsuite/g++.old-deja/g++.pt/asm2.C new file mode 100644 index 000000000..7a7063790 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/asm2.C @@ -0,0 +1,25 @@ +// { dg-do assemble { target i?86-*-linux* x86_64-*-linux* } } +// { dg-require-effective-target ilp32 } +// We'd use ebx with 32-bit pic code, so require nonpic. +// { dg-require-effective-target nonpic } +// Origin: "Weidmann, Nicholas" + +typedef void (function_ptr)(int); + +void foo(int) +{ +} + +template void doit(int i) +{ + __asm__("pushl %0\n\t" + "call *%1\n\t" + "popl %0" + : + : "a" (i), "b" (ptr)); +} + +void bar() +{ + doit(123); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/assign1.C b/gcc/testsuite/g++.old-deja/g++.pt/assign1.C new file mode 100644 index 000000000..854d8ee27 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/assign1.C @@ -0,0 +1,14 @@ +// { dg-do compile } +// Origin: Mark Mitchell + +template +struct S { // { dg-error "const|operator=" } + S(); + T t; +}; + +void f() +{ + S s; + s = s; // { dg-message "synthesized|deleted" } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C b/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C new file mode 100644 index 000000000..ecfa4de18 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C @@ -0,0 +1,56 @@ +// { dg-do assemble } +template struct auto_ptr_ref { + Y* py; + auto_ptr_ref(Y* p) : py(p) {} +}; +template struct auto_ptr { + X* px; + public: + typedef X element_type; + + explicit auto_ptr(X* p =0) throw() : px(p) {} + auto_ptr(auto_ptr& r) throw() : px(r.release()) {} // { dg-message "note" } candidate + template + auto_ptr(auto_ptr& r) throw() : px(r.release()) {}// { dg-message "note" } candidate + + auto_ptr& operator=(auto_ptr& r) throw() { + reset(r.release()); + return *this; + } + template auto_ptr& operator=(auto_ptr& r) throw() { + reset(r.release()); + return *this; + } + + ~auto_ptr() { delete px; } + + X& operator*() const throw() { return *px; } + X* operator->() const throw() { return px; } + X* get() const throw() { return px; } + X* release() throw() { X* p=px; px=0; return p; } + void reset(X* p=0) throw() { if (px != p) delete px, px = p; } + + auto_ptr(auto_ptr_ref r) throw() : px(r.py) {} // { dg-message "note" } + template operator auto_ptr_ref() throw() { + return auto_ptr_ref(release()); + } + template operator auto_ptr() throw() { + return auto_ptr(release()); + } +}; + +struct Base { Base() {} virtual ~Base() {} }; +struct Derived : Base { Derived() {} }; + +auto_ptr f() { auto_ptr null(0); return null; } +void g(auto_ptr) { } +void h(auto_ptr) { } // { dg-error "initializing" } + +int main() { + auto_ptr x(f()); + auto_ptr y(f()); + x = y; + g(f()); + h(f()); // { dg-error "match" "match" } no usable copy ctor + // { dg-message "candidate" "candidate note" { target *-*-* } 54 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/bad-type.C b/gcc/testsuite/g++.old-deja/g++.pt/bad-type.C new file mode 100644 index 000000000..fffa8c531 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/bad-type.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +template +class A +{ +public: + Type m; +}; + +template +void f(A& a, Type d) +{ + A.m=d; // { dg-error "" } invalid use of template +} + +int main() +{ + A a; + f(a,2); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/builtin.C b/gcc/testsuite/g++.old-deja/g++.pt/builtin.C new file mode 100644 index 000000000..0a2e241de --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/builtin.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// { dg-options "-Wno-abi" { target arm_eabi } } +// Bug: Checking whether A depends on template parms, we crash because +// __builtin_va_list lacks TYPE_LANG_SPECIFIC. + + +void f (__builtin_va_list arg) +{ + enum { a } A; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/call1.C b/gcc/testsuite/g++.old-deja/g++.pt/call1.C new file mode 100644 index 000000000..26a49b507 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/call1.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +struct IsCompressed { }; +struct Field { + bool IsCompressed() const { return true; } +}; + +template +inline bool +for_each(const Field& p, IsCompressed, C) +{ + return p.IsCompressed(); +} + +template bool for_each(const Field& p, IsCompressed, int); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/call2.C b/gcc/testsuite/g++.old-deja/g++.pt/call2.C new file mode 100644 index 000000000..94e4928b4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/call2.C @@ -0,0 +1,14 @@ +// { dg-do assemble } + +struct IsCompressed { }; +struct Field { +}; + +template +inline bool +for_each(const Field& p, IsCompressed, C) +{ + return p.IsCompressed(); // { dg-error "" } calling type like a method +} + +template bool for_each(const Field& p, IsCompressed, int); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/cast1.C b/gcc/testsuite/g++.old-deja/g++.pt/cast1.C new file mode 100644 index 000000000..ab27e65fe --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/cast1.C @@ -0,0 +1,7 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +void f (T t) { + const_cast(t); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/cast2.C b/gcc/testsuite/g++.old-deja/g++.pt/cast2.C new file mode 100644 index 000000000..ec1c6b27f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/cast2.C @@ -0,0 +1,32 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 10 Jan 2001 + +// Bug 1588. We ICE'd on reparsing an absdcl as a cast inside a template +// function. + +class A { +public: + template void f(void *CLUTp); +}; + +template void A::f(void *CLUTp) +{ + void *CLUT; + + CLUT = (unsigned char [3][256])CLUTp; // { dg-error "" } cast to array + + return; +} + + +int main() +{ + A myobj; + unsigned char t[3][256]; + + myobj.f(t); + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/codegen1.C b/gcc/testsuite/g++.old-deja/g++.pt/codegen1.C new file mode 100644 index 000000000..c07083a0a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/codegen1.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +int i; + +struct S +{ + ~S () + { + } +}; + +template +void f (T, S) +{ + i = 0; +} + +int main () +{ + i = 1; + f (3, S ()); + return i; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/cond2.C b/gcc/testsuite/g++.old-deja/g++.pt/cond2.C new file mode 100644 index 000000000..37bc1466a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/cond2.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +struct S +{ + S (int); + operator bool () const; +}; + +template +void f () +{ + if (const S &s = 3) { + } +} + +template void f(); + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/cond3.C b/gcc/testsuite/g++.old-deja/g++.pt/cond3.C new file mode 100644 index 000000000..e82b686e9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/cond3.C @@ -0,0 +1,25 @@ +// { dg-do assemble } +// Origin: Loring Holden + +template +class REFptr { + public: + operator T* () const; +}; + +class CamFocus; +typedef REFptr CamFocusptr; + +class CamFocus { + protected: + static CamFocusptr _focus; + public : + static CamFocusptr &cur() { return _focus; } +}; + +void +test() +{ + if (CamFocus::cur()) { + } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/const1.C b/gcc/testsuite/g++.old-deja/g++.pt/const1.C new file mode 100644 index 000000000..6c6182284 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/const1.C @@ -0,0 +1,4 @@ +// { dg-do assemble } +template struct B { static const int i = 3; }; +template struct A { static const int i = B::i; }; +enum { i = A::i }; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/const2.C b/gcc/testsuite/g++.old-deja/g++.pt/const2.C new file mode 100644 index 000000000..3ca4a532b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/const2.C @@ -0,0 +1,14 @@ +// { dg-do link } +// This test should get a linker error for the reference to A::i. +// { dg-prune-output "ld: symbol" } +// { dg-message "i" "" { target *-*-* } 0 } + +template struct B { static const int i = 3; }; +template struct A { static const int i = B::i; }; +const int *p = &A::i; + +int main () +{ + // Examine p to prevent optimising linkers from discarding it. + return (p != 0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/conv1.C b/gcc/testsuite/g++.old-deja/g++.pt/conv1.C new file mode 100644 index 000000000..7909e3f69 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/conv1.C @@ -0,0 +1,19 @@ +// { dg-do assemble } + +template +struct S1 {}; + +struct S2 +{ + template + operator S1*(); +}; + +struct D: public S1 { +}; + +void f() +{ + S2 s; + (D*) s; // { dg-error "" } cannot convert +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/conv2.C b/gcc/testsuite/g++.old-deja/g++.pt/conv2.C new file mode 100644 index 000000000..d668a5451 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/conv2.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +template +class A { +public: + operator const T*() const; + const T* cast() const; +}; + +template +const T* A::cast() const { + return operator const T*(); +} + +template class A; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/conv3.C b/gcc/testsuite/g++.old-deja/g++.pt/conv3.C new file mode 100644 index 000000000..78cf5ce0f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/conv3.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// Origin: Chris Heath + +struct A { + template explicit A(T t) {} +}; + +void f(A a) {} + +int main() {f(1);} // { dg-error "" } no conversion from int to A. diff --git a/gcc/testsuite/g++.old-deja/g++.pt/copy1.C b/gcc/testsuite/g++.old-deja/g++.pt/copy1.C new file mode 100644 index 000000000..24aa5e035 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/copy1.C @@ -0,0 +1,30 @@ +// { dg-do run } +int i = 0; + +template +class F +{ +public: + F() {} + + template F(F) + { + i = 1; + } +}; + + +F +foo() +{ + F f1; + F f2(f1); + return f1; +} + +int +main() +{ + return i; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash1.C b/gcc/testsuite/g++.old-deja/g++.pt/crash1.C new file mode 100644 index 000000000..f9a6e16e4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash1.C @@ -0,0 +1,12 @@ +// { dg-do assemble } +template class A { + public: + class subA {}; +}; + + +template class B : public A { + public: + class subB : public A::subA {}; // { dg-error "" } not a class or namespace +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash10.C b/gcc/testsuite/g++.old-deja/g++.pt/crash10.C new file mode 100644 index 000000000..86f386150 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash10.C @@ -0,0 +1,13 @@ +// { dg-do assemble } + +template +class GCD { +public: + enum { val = (N == 0) ? M : GCD::val }; // { dg-warning "division" "division" } +// { dg-error "constant expression" "valid" { target *-*-* } 6 } +// { dg-message "template argument" "valid" { target *-*-* } 6 } +}; + +int main() { + GCD< 1, 0 >::val; // { dg-message "instantiated" } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash11.C b/gcc/testsuite/g++.old-deja/g++.pt/crash11.C new file mode 100644 index 000000000..5f372d3a3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash11.C @@ -0,0 +1,13 @@ +// { dg-do assemble } + +class A +{ + class A_impl; + public: + A(){} +}; + + +template class A::A_impl // { dg-error "non-template" } +{ +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash12.C b/gcc/testsuite/g++.old-deja/g++.pt/crash12.C new file mode 100644 index 000000000..37388c82e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash12.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// { dg-options "-g" } + +template +class CenteringTag { +}; + +struct S { + template + static void f() { + CenteringTag ctag; + } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash13.C b/gcc/testsuite/g++.old-deja/g++.pt/crash13.C new file mode 100644 index 000000000..010808136 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash13.C @@ -0,0 +1,6 @@ +// { dg-do assemble } + +template struct A {}; +template struct A; // { dg-error "" } does not specialize args +template const struct A; // { dg-error "" } parse error +template template A; // { dg-error "" } .* diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash14.C b/gcc/testsuite/g++.old-deja/g++.pt/crash14.C new file mode 100644 index 000000000..773ed28b2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash14.C @@ -0,0 +1,5 @@ +// { dg-do assemble } + +template struct A {}; +template struct A; +A ai; // { dg-error "" } incomplete type diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash15.C b/gcc/testsuite/g++.old-deja/g++.pt/crash15.C new file mode 100644 index 000000000..446a256b3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash15.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +template +template +struct A { // { dg-error "" } too many template parameter lists +public: + A() {} + + A(const A& b) {} +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash16.C b/gcc/testsuite/g++.old-deja/g++.pt/crash16.C new file mode 100644 index 000000000..aa25c22b8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash16.C @@ -0,0 +1,30 @@ +// { dg-do assemble } +// { dg-xfail-if "" { xstormy16-*-* } { "*" } { "" } } +// { dg-options "" } + +extern "C" void qsort(void *base, __SIZE_TYPE__ nmemb, __SIZE_TYPE__ size, + int (*compar)(const void *, const void *)); + +struct R { + int count; + int state1; + int state2; +}; + +int cmp_d(const R* a, const R* b) { + return a->count > b->count; +} + +namespace CXX { + template + inline void qsort (T b[i1][i2], int (*cmp)(const T*, const T*)) { + ::qsort ((void*)b, i1*i2, sizeof(T), (int (*)(const void *, const void *))cmp); + } +} + +using namespace CXX; + +void sort_machine() { + struct R d[256][256]; + qsort (d, cmp_d); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash17.C b/gcc/testsuite/g++.old-deja/g++.pt/crash17.C new file mode 100644 index 000000000..bd9e20b4a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash17.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +template +class foo; + +template +class bar +{ + typedef foo<(U::id > 0)> foobar; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash18.C b/gcc/testsuite/g++.old-deja/g++.pt/crash18.C new file mode 100644 index 000000000..a331dd4e5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash18.C @@ -0,0 +1,23 @@ +// { dg-do link } + +template +class foo { + T deft; + + template int priv (U u, T t) { return u - t; } +public: + foo (T t) : deft (t) {} + + template int pub (U u) { + int (foo::*fn) (U, T); + fn = &foo::template priv; + return (this->*fn) (u, deft); + } +}; + +int +main () +{ + foo fff (5); + return fff.pub (3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash19.C b/gcc/testsuite/g++.old-deja/g++.pt/crash19.C new file mode 100644 index 000000000..09e57d1d3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash19.C @@ -0,0 +1,19 @@ +// { dg-do assemble } + +template +void f() +{ + class C { public: int c; }; + + struct S { + void g() { + C e; + e.c = 3; + } + }; + + S s; + s.g(); +} + +template void f<7>(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash2.C b/gcc/testsuite/g++.old-deja/g++.pt/crash2.C new file mode 100644 index 000000000..dfccc95b8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash2.C @@ -0,0 +1,14 @@ +// { dg-do assemble } + +template +struct S1 +{ + T* t; + static int foo; +}; + + +struct S2 : public S1 +{ + S2* s; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash20.C b/gcc/testsuite/g++.old-deja/g++.pt/crash20.C new file mode 100644 index 000000000..a5175b990 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash20.C @@ -0,0 +1,16 @@ +// { dg-do compile } + +template +struct A { // { dg-message "const|operator=" "assignment" } + const T x; + A() : x(0) { } A(T x) : x(x) { } +}; + +template +void func () +{ + B y; + y = B(); // { dg-message "synthesized|deleted" } +} + +int main (void) { func< A<> >(); } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash21.C b/gcc/testsuite/g++.old-deja/g++.pt/crash21.C new file mode 100644 index 000000000..05654b5c5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash21.C @@ -0,0 +1,26 @@ +// { dg-do assemble } +// { dg-options "" } + +class Pooled +{ +}; + +class RefCounted +{ +}; + +class BrickExpressionBase : public RefCounted, public Pooled +{ +}; + +template +class BrickExpression : public BrickExpressionBase +{ +}; + +template +void f() +{ + typedef BrickExpression ExprT; + ExprT(3).apply; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash22.C b/gcc/testsuite/g++.old-deja/g++.pt/crash22.C new file mode 100644 index 000000000..c1d81b4fb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash22.C @@ -0,0 +1,9 @@ +// { dg-do assemble } + +template +struct S1 {}; + +template > +struct S2 {}; + +template struct S2<100>; // { dg-error "" } type/value mismatch diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash23.C b/gcc/testsuite/g++.old-deja/g++.pt/crash23.C new file mode 100644 index 000000000..242624eeb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash23.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +template void foo(); +template class bar { +public: + int i; + template friend void foo(); // { dg-error "" } template-id +}; +template void foo() { + bar baz; baz.i = 1; + bar buz; buz.i = 1; +} +int main() { + foo(); + foo(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash24.C b/gcc/testsuite/g++.old-deja/g++.pt/crash24.C new file mode 100644 index 000000000..8b0a87e44 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash24.C @@ -0,0 +1,11 @@ +// { dg-do assemble } + +template class U> void template_fn (T); +template void callme ( void (*)(T)); + +template struct S1; + +int main() +{ + callme(&template_fn); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash25.C b/gcc/testsuite/g++.old-deja/g++.pt/crash25.C new file mode 100644 index 000000000..7c9791d4d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash25.C @@ -0,0 +1,7 @@ +// { dg-do assemble } + +template +void f() +{ + int i[1 << 3]; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash26.C b/gcc/testsuite/g++.old-deja/g++.pt/crash26.C new file mode 100644 index 000000000..94682dde1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash26.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// Origin: Theodore Papadopoulo + +double f(double); +typedef double (*M)(double); + +class A { +public: + template void g(); +}; + +class B: public A { +public: + void g() { A::g(); } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash27.C b/gcc/testsuite/g++.old-deja/g++.pt/crash27.C new file mode 100644 index 000000000..ccc002d15 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash27.C @@ -0,0 +1,13 @@ +// { dg-do assemble } + +template int f (void) +{ + if (__extension__ ({ 1; })) + return 0; + return 1; +} + +void g (void) +{ + f<1> (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash28.C b/gcc/testsuite/g++.old-deja/g++.pt/crash28.C new file mode 100644 index 000000000..2cfed9308 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash28.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// { dg-options "" } + +template +inline unsigned int asize(ARRY &a) // { dg-message "note" } +{ + return sizeof(a) / sizeof(a[0]); +} + +void f(unsigned int n) { + int x[n]; + + asize(x); // { dg-error "" } no matching function + // { dg-message "candidate" "candidate note" { target *-*-* } 13 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash29.C b/gcc/testsuite/g++.old-deja/g++.pt/crash29.C new file mode 100644 index 000000000..0aee9c3b5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash29.C @@ -0,0 +1,70 @@ +// { dg-do assemble } +// Origin: Steven Parkes + +typedef __SIZE_TYPE__ size_t; + +class UUId {}; + +template class MetaClass; + +class TypeInfo; + +struct MetaClassGeneric +{ + MetaClassGeneric( TypeInfo& ); +}; + +struct TypeInfo +{ + void (*constructor)( void* ); + void initialize( void* ); +}; + +template +class TypeIDInit { +public: + TypeIDInit(); + static void initialize(); + static TypeInfo info; + static int storage[]; + static void metaclassConstructor( void* ); +}; + +template +TypeInfo TypeIDInit::info = +{ + TypeIDInit::metaclassConstructor +}; + +template +inline +TypeIDInit::TypeIDInit() +{ + info.initialize(storage); +} + +template +class NameInfo : public MetaClassGeneric { +public: + NameInfo() + : MetaClassGeneric( TypeIDInit::info ) {} +}; + +template <> +class MetaClass +: public NameInfo +{ +}; + +extern "C++" +inline void *operator new(size_t, void *place) throw() { return place; } + +template +void +TypeIDInit::metaclassConstructor( void* place ) +{ + new ( place ) MetaClass; +} + +template class TypeIDInit ; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash3.C b/gcc/testsuite/g++.old-deja/g++.pt/crash3.C new file mode 100644 index 000000000..160cbe541 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash3.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +template +class CVector { +public: + CVector f() const + { + CVector v(); + return v; + } + CVector g() const + { + CVector v(); + return v; + } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash30.C b/gcc/testsuite/g++.old-deja/g++.pt/crash30.C new file mode 100644 index 000000000..dfbef1003 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash30.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +extern "C" int printf(const char *, ...); +template struct A { + typedef typename T::X B; // { dg-error "" } not a class + A(double); +}; + +template void xxx(typename A::B); + +template struct B { + friend void xxx(T); // { dg-error "" } does not match any template +}; + +template struct B; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash31.C b/gcc/testsuite/g++.old-deja/g++.pt/crash31.C new file mode 100644 index 000000000..9c9ce15e9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash31.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// Origin: Corey Kosak + +struct cow_t { + template + static void tfunc(cow_t *cowp) {} + + void moo() { + cow_t *cowp; + cow_t::tfunc(cowp); + } +}; + + +int main() +{ + cow_t *cowp; + cow_t::tfunc(cowp); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash32.C b/gcc/testsuite/g++.old-deja/g++.pt/crash32.C new file mode 100644 index 000000000..64ed2290f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash32.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// Origin: Jason Merrill + +template struct A +{ + struct B; +}; + +template struct C +{ + friend typename A::B; // { dg-error "" } `typename' not allowed +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash33.C b/gcc/testsuite/g++.old-deja/g++.pt/crash33.C new file mode 100644 index 000000000..e2a59eb18 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash33.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// Origin: Theodore Papadopoulo + +class A { +public: + template T& f(T& t) const; +}; + +class B { +public: + template T& f(T& t) const; +}; + +class C: public A,B { +public: + template T& f(T& t) const; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash34.C b/gcc/testsuite/g++.old-deja/g++.pt/crash34.C new file mode 100644 index 000000000..31f89c8cc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash34.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// Origin: Theodore Papadopoulo + +template +class A { +public: + class B { }; + class C: public B { + public: + C(A&):B() { } + }; + C f() { return C(*this); } +}; + +int +main() +{ + A a; + a.f(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash35.C b/gcc/testsuite/g++.old-deja/g++.pt/crash35.C new file mode 100644 index 000000000..6e2cd7440 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash35.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// Origin: Miniussi + +template +struct Str { + Str(int& val= (*new int())); +}; + +template +Str::Str(int& val) {} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash36.C b/gcc/testsuite/g++.old-deja/g++.pt/crash36.C new file mode 100644 index 000000000..fa9401bee --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash36.C @@ -0,0 +1,35 @@ +// { dg-do assemble } +// Origin: Andreas Kloeckner + +template struct iterator_traits { + typedef typename Iterator::iterator_category + iterator_category; // { dg-error "" } no type iterator_category +}; + +template +struct iterator { + typedef Category iterator_category; +}; + + +template +struct reverse_iterator : public // { dg-message "instantiated" } no type iterator_category +iterator::iterator_category> { + protected: + Iterator current; + +}; +class tag { }; + +template +struct list { + template + struct list_iterator { + }; + + reverse_iterator > rbegin() + { return reverse_iterator > + (list_iterator(Head->next())); } // { dg-error "" } not declared +}; + +template class list; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash37.C b/gcc/testsuite/g++.old-deja/g++.pt/crash37.C new file mode 100644 index 000000000..c07ccd591 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash37.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// Origin: Jens Maurer + +template +class C { }; + +template +C call(T& obj) +{ return C(); +} + +class Test { +public: + void output(int); +}; + +void sub() +{ + Test t; + call(t); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash38.C b/gcc/testsuite/g++.old-deja/g++.pt/crash38.C new file mode 100644 index 000000000..4fc658eb1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash38.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S { + typedef typename T::Y::Z X; // { dg-error "non-template" "non-template" } No Y in A +// { dg-message "note" "note" { target *-*-* } 6 } +// { dg-error "does not declare" "not declare" { target *-*-* } 6 } + X x; // { dg-error "does not name a type" } No Y in A +}; + +struct A { + struct Y { + typedef A Z; + }; +}; + +template struct S; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash39.C b/gcc/testsuite/g++.old-deja/g++.pt/crash39.C new file mode 100644 index 000000000..a8f70aa30 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash39.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// Origin: Ian Nixon + +class Action { +public: + virtual void action () = 0; +}; + +class Var { +public: + + template void Add() { + struct tmp : public Action { + void action () {} + }; + tmp *tp = new tmp; + } + +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash4.C b/gcc/testsuite/g++.old-deja/g++.pt/crash4.C new file mode 100644 index 000000000..9bdc51f24 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash4.C @@ -0,0 +1,11 @@ +// { dg-do assemble } + +template +class Tensor +{ +}; + +template +class Tensor<2> : Tensor { // { dg-error "" } template parameters not used +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash40.C b/gcc/testsuite/g++.old-deja/g++.pt/crash40.C new file mode 100644 index 000000000..c075757d2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash40.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// Origin: rch@larissa.sd.bi.ruhr-uni-bochum.de + +template< class X > +struct VB: public virtual X +{}; + +template< class MOPTerm1, class MOPTerm2 > +struct MOPTermUnify +{ + struct MO: + public VB, + public VB + { + void fix() + { + } + }; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash41.C b/gcc/testsuite/g++.old-deja/g++.pt/crash41.C new file mode 100644 index 000000000..452ba91dc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash41.C @@ -0,0 +1,13 @@ +// { dg-do compile } +// Origin: Mark Mitchell + +template struct S1{}; + +struct S2 { int i; }; + +template +void f(S2 s2) { + S1 s1; // { dg-error "" } +} + +template void f(S2); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash42.C b/gcc/testsuite/g++.old-deja/g++.pt/crash42.C new file mode 100644 index 000000000..65365857d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash42.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// Origin: Walter Brisken + +template class list {}; + +class newtype +{ +}; + +void crash() +{ + newtype* n; + n->list.size (); // { dg-error "" } invalid use of template +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash43.C b/gcc/testsuite/g++.old-deja/g++.pt/crash43.C new file mode 100644 index 000000000..5172bbca2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash43.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S { + struct X {}; + struct Y {}; + + template + friend struct S::X; + + template + friend typename S::Y; // { dg-error "" } typename as friend +}; + +struct T { + template + friend struct S::X; +}; + +struct U { + template + friend typename S::X; // { dg-error "" } typename as friend +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash44.C b/gcc/testsuite/g++.old-deja/g++.pt/crash44.C new file mode 100644 index 000000000..4aea2149d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash44.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S +{ + template + friend S; // { dg-error "" } friend must use tag +}; + +template struct S; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash45.C b/gcc/testsuite/g++.old-deja/g++.pt/crash45.C new file mode 100644 index 000000000..0251d0bbc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash45.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// Origin: Jason Merrill + +template void f() +{ + extern void g (); +} + +int main() +{ + f(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash46.C b/gcc/testsuite/g++.old-deja/g++.pt/crash46.C new file mode 100644 index 000000000..bfdddaeaa --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash46.C @@ -0,0 +1,8 @@ +// { dg-do assemble } +// Origin: Leon Bottou + +class AA { protected: + template struct BB { T x; BB(const T &x) : x(x) { } }; + template struct CC : public BB { CC(const T &x) : BB(x) { } +}; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash47.C b/gcc/testsuite/g++.old-deja/g++.pt/crash47.C new file mode 100644 index 000000000..212bedaac --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash47.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// Origin: Rick Campbell + +template +struct DataMember +{ + inline DataMember (Type Owner::* data_member); + + Type Owner::* _data_member; +}; + +template +inline +DataMember::DataMember (Type Owner::* data_member) + : _data_member (data_member) +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash48.C b/gcc/testsuite/g++.old-deja/g++.pt/crash48.C new file mode 100644 index 000000000..2785cdd39 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash48.C @@ -0,0 +1,8 @@ +// { dg-do assemble } +// Origin: Jean-Francois Panisset + +template +void foo(T *data) +{ + ((char *)data)->~T(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash49.C b/gcc/testsuite/g++.old-deja/g++.pt/crash49.C new file mode 100644 index 000000000..a3e3effdf --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash49.C @@ -0,0 +1,37 @@ +// { dg-do assemble } +// Origin: Loring Holden + +template +class REFptr { + public: + virtual ~REFptr(); + REFptr &operator = (const REFptr& p); +}; + +class STR { }; +class str_ptr : public REFptr { }; + +template +class ARRAY { + protected: + T *_array; + int _num; + int _max; + public: + virtual void realloc(int new_max) { + _max = new_max; + T *tmp = new T [_max]; + if (tmp == 0) return; + for (int i=0; i<_num; i++) { + tmp[i] = _array[i]; + } + delete [] _array; + _array = tmp; + } +}; + +int +main() +{ + ARRAY tags; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash5.C b/gcc/testsuite/g++.old-deja/g++.pt/crash5.C new file mode 100644 index 000000000..2c50dde5c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash5.C @@ -0,0 +1,12 @@ +// { dg-do assemble } + +template +struct K { + void f(); +}; + +template +void +K::f() // { dg-error "" } i has not been declared +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash50.C b/gcc/testsuite/g++.old-deja/g++.pt/crash50.C new file mode 100644 index 000000000..02cf6c084 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash50.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +void f () +{ + __extension__ ( { if (3); }); +} + +template void f(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash51.C b/gcc/testsuite/g++.old-deja/g++.pt/crash51.C new file mode 100644 index 000000000..a3fbc17f1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash51.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// { dg-options "-fpermissive -w" } +// Origin: Mark Mitchell + +char foo[26]; + +template +void f () +{ + foo = "0123456789012345678901234"; // { dg-error "array" } +} + +template void f(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash52.C b/gcc/testsuite/g++.old-deja/g++.pt/crash52.C new file mode 100644 index 000000000..f2c31672d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash52.C @@ -0,0 +1,25 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S1 +{ + template + struct S2 + { + S2(U); + }; + + template + void f(U u) + { + S2 s2u(u); + } +}; + +void g() +{ + S1 s1; + s1.f(3.0); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash53.C b/gcc/testsuite/g++.old-deja/g++.pt/crash53.C new file mode 100644 index 000000000..909b86689 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash53.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +struct S +{ +}; + +S g (); + +template +void f () +{ + const S& s = g (); +} + +template void f(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash54.C b/gcc/testsuite/g++.old-deja/g++.pt/crash54.C new file mode 100644 index 000000000..72f92d128 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash54.C @@ -0,0 +1,29 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +int g (T); + +int j = g (3); + +template +inline T f (T) +{ + return 2; +} + +template +struct S +{ + static const int i; +}; + +template +const int S::i = f (3); + +template +int g (T) +{ + return S::i; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash55.C b/gcc/testsuite/g++.old-deja/g++.pt/crash55.C new file mode 100644 index 000000000..57a6606fc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash55.C @@ -0,0 +1,26 @@ +// { dg-do assemble } +// Origin: Jakub Jelinek + +template struct foo { + foo(); + void c(); + static void d(foo* x) { x->c(); } +}; +template struct bar { + bar(); +}; +template struct baz { + typedef foo t; + t *e; + baz(); + ~baz() { t::d(e); } +}; +template void foo::c() +{ + bar* x = (bar*)this; + x->bar::~bar(); +} +void a(void) +{ + baz b; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash56.C b/gcc/testsuite/g++.old-deja/g++.pt/crash56.C new file mode 100644 index 000000000..7de57426a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash56.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 1 Sep 2000 + +// bug 127. We ICE'd when given a non-template TYPE_DECL as a template name. + +template +class basic_string +{ +public: + typedef charT* iterator; + explicit basic_string (); + ~basic_string (); +}; + +void foo () { + basic_string::iterator p; // { dg-error "" } not a template // ERROR - no type +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash57.C b/gcc/testsuite/g++.old-deja/g++.pt/crash57.C new file mode 100644 index 000000000..eb6d61595 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash57.C @@ -0,0 +1,12 @@ +// { dg-do assemble } +// +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 11 Aug 2000 + +// bug 382. We ICE'd rather than decay to an address. + +struct A { +template static void f(T) {} +}; +void (*h)(int) = A::f; +void (*i)(int) = &A::f; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash58.C b/gcc/testsuite/g++.old-deja/g++.pt/crash58.C new file mode 100644 index 000000000..0ce3d8172 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash58.C @@ -0,0 +1,33 @@ +// { dg-do assemble } +// +// Copyright (C) 2000, 2002 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 5 Sept 2000 + +// bug 147. We ICE'd on an unprocessed LOOKUP_EXPR during tsubsting + +namespace EManip { + template void do_assign(T* d); // { dg-error "" } candidate +} +template void do_assign(T* d); // { dg-error "" } candidate + +template +struct MatrixC +{ + void foo () { + EManip::do_assign (0); + &EManip::do_assign; // { dg-bogus "" } unresolved + &do_assign; // { dg-bogus "" } unresolved + EManip::do_assign; // { dg-bogus "" } unresolved + do_assign; // { dg-bogus "" } unresolved + } +}; +void foo(MatrixC *ptr) +{ + EManip::do_assign; // { dg-bogus "" } unresolved + &EManip::do_assign; // { dg-bogus "" } unresolved + ptr->foo (); + void (*p1) (int *) = &do_assign; // { dg-error "" } cannot convert + void (*p2) (int *) = &EManip::do_assign; // { dg-error "" } cannot convert + void (*p3) (int *) = &do_assign; + void (*p4) (int *) = &EManip::do_assign; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash59.C b/gcc/testsuite/g++.old-deja/g++.pt/crash59.C new file mode 100644 index 000000000..37a2fc531 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash59.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 4 Oct 2000 +// Origin: Bug 543 Gerald Pfeifer + +// Bug 532. We failed to bail out when tsubsting a _DECL failed + +class ATOMSET +{ +}; + +template +void addConstsTo(const T &container) +{ +typename T::const_iterator l = 0; // { dg-error "" } no type const_iterator +} + +void tallyConstants() +{ +addConstsTo(ATOMSET()); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash6.C b/gcc/testsuite/g++.old-deja/g++.pt/crash6.C new file mode 100644 index 000000000..34bd56409 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash6.C @@ -0,0 +1,23 @@ +// { dg-do assemble } + +template class List; + +template +struct ListIterator +{ + ListIterator (); + ListIterator (const ListIterator& rhs); +}; + +template +struct List +{ + void length () const { + for (ListIterator li; li; ); // { dg-error "" } used where a `bool' + } +}; + +void test(List& vals) +{ + vals.length(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash60.C b/gcc/testsuite/g++.old-deja/g++.pt/crash60.C new file mode 100644 index 000000000..893ac31cb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash60.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 7 Nov 2000 + +// We ICE'd rather than fail to instantiate. + +template< typename SID, class SDR > +void k( SID sid, SDR* p, // { dg-message "note" } + void (SDR::*) + ( typename SID::T ) ); + +struct E { }; +struct S { void f( int ); }; + +void f() +{ + k( E(), (S*)0, &S::f ); // { dg-error "" } no match + // { dg-message "candidate" "candidate note" { target *-*-* } 17 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash61.C b/gcc/testsuite/g++.old-deja/g++.pt/crash61.C new file mode 100644 index 000000000..212450429 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash61.C @@ -0,0 +1,30 @@ +// { dg-do assemble } +// Source: Neil Booth, from PR # 106. 4 Dec 2000. + +template class bar +{ +}; + +class A_a +{ + public: + static const bool b = true; +}; + +class B_b +{ + public: + static const bool b = false; +}; + +template class foo +{ +}; + +template +bar<(A::b || B::b)> do_funky(const foo&); + +int main() +{ + bar a_bar = do_funky(foo()); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash62.C b/gcc/testsuite/g++.old-deja/g++.pt/crash62.C new file mode 100644 index 000000000..b4b90e4c2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash62.C @@ -0,0 +1,8 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 5 Jan 2001 + +// Bug 911, ICE on bogus template declaration + +template class A; // { dg-error "" } not a template diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash63.C b/gcc/testsuite/g++.old-deja/g++.pt/crash63.C new file mode 100644 index 000000000..15d26b619 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash63.C @@ -0,0 +1,9 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 10 Jan 2001 + +// Bug 1585. We ICEd on a template template parm with no parms. + +template class C> class B; +template class C> class D; // { dg-error "" } parse error diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash64.C b/gcc/testsuite/g++.old-deja/g++.pt/crash64.C new file mode 100644 index 000000000..d2457e858 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash64.C @@ -0,0 +1,24 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 10 Jan 2001 + +// Bug 1546. We ICE'd trying to unify an array of unknown bound, +// checking to see if it was a variable sized array. + +template class allocator {}; + +template +struct _Alloc_traits +{ + static const bool _S_instanceless = false; +}; + +template +struct _Alloc_traits<_Tp, allocator<_Tp1> > +{ + static const bool _S_instanceless = true; +}; + +typedef char state []; +bool y = _Alloc_traits >::_S_instanceless; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash65.C b/gcc/testsuite/g++.old-deja/g++.pt/crash65.C new file mode 100644 index 000000000..a7df70cec --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash65.C @@ -0,0 +1,12 @@ +// { dg-do assemble } + +// Copyright (C) 2000, 2002 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 11 Jan 2001 + +// Bug 1506. We ICE'd on a struct definition inside a template parms. +// This is still not completely fixed, but now issues a diagnostic + + +template struct S{}; // { dg-error "before" } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash66.C b/gcc/testsuite/g++.old-deja/g++.pt/crash66.C new file mode 100644 index 000000000..cbcef1886 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash66.C @@ -0,0 +1,40 @@ +// { dg-do assemble } +// +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 7 May 2001 + +// Bug 2525. We ICEd when a namespace scope template was erroneously +// given as a base member init. + +namespace N1 +{ + template + struct B + { + B (T); + }; + + template + struct D : B + { + D (T r) + : B (r) // { dg-error "" } no field named B + {} + }; +} + +template +struct D1 : N1::B +{ + D1 (T r) + : N1::B (r) + {} +}; + +template +struct D2 : N1::B +{ + D2 (T r) + : N1::B (r) // { dg-error "" } no field named N1::B + {} +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash67.C b/gcc/testsuite/g++.old-deja/g++.pt/crash67.C new file mode 100644 index 000000000..6325c7282 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash67.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// { dg-options "" } +// +// Copyright (C) 2001, 2003 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 6 May 2001 + +// Bug 2526. We ICE'd after diagnosing dependent name confusion in +// friendliness when not being pedantic. + +template +struct B +{ + typedef B Mother; +}; + +template +struct D : B +{ + friend class Mother; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C new file mode 100644 index 000000000..9afeae09a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C @@ -0,0 +1,71 @@ +// { dg-do assemble } +// { dg-prune-output "mangled name" } +// +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 25 Jul 2001 + +// Origin: gustavo@geneura.ugr.es +// Bug 3624. Template instantiation of a reference type was not +// converted from reference when doing a call. + +#include + +using namespace std; + +template class eo: public A +{ +public: + eo() + { + cout << this->x << " " << this->y << " " + << c(*this) << " " + << ((d)?"true":"false") << endl; + } + +private: + B b; +}; + +struct XY +{ + float x, y; + + XY(): x(1), y(0.1) {} +}; + +float fitness(const XY& a) +{ + return a.x + a.y; +} + +struct fitness2 +{ + float operator()(const XY& a) + { + return a.x - a.y; + } + + float f(const XY& a) + { + return a.x - a.y; + } +}; + +struct fitness3 +{ + float operator()(const XY& a) + { + return a.x / a.y; + } +}; + +fitness2 f2; +fitness3 f3; + +int main() +{ + eo eo2; + eo eo3; + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash7.C b/gcc/testsuite/g++.old-deja/g++.pt/crash7.C new file mode 100644 index 000000000..e575bca20 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash7.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +class foo +{ +}; + +template // { dg-error "" } base clause +struct bar +{ +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash8.C b/gcc/testsuite/g++.old-deja/g++.pt/crash8.C new file mode 100644 index 000000000..de2dd9dc7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash8.C @@ -0,0 +1,34 @@ +// { dg-do assemble } + +template +class TestClass1 { +public: + TestClass1() { } +}; + +template +class TestClass2 { +public: + TestClass2() { } + T operator()(int) { } +}; + +template +void doit(T x) { + TestClass1 q1; + q1 = TestClass1(); + TestClass2 q2; + q2 = TestClass2(); + + TestClass1 p1; + p1 = TestClass1(); // { dg-error "" } template used as expression + + TestClass2 p2; + p2 = TestClass2(); // { dg-error "" } template used as expression +} + +int main() { + double x; + doit(x); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash9.C b/gcc/testsuite/g++.old-deja/g++.pt/crash9.C new file mode 100644 index 000000000..f2d811dda --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash9.C @@ -0,0 +1,11 @@ +// { dg-do assemble } + +template +void f(T) {} // { dg-error "initializing" } + +class C; // { dg-error "forward declaration" } + +void g(const C& c) +{ + f(c); // { dg-error "invalid use of incomplete type" } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ctor1.C b/gcc/testsuite/g++.old-deja/g++.pt/ctor1.C new file mode 100644 index 000000000..c711da62e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ctor1.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +template + struct moneypunct +{ + moneypunct (); +}; + +template <> + moneypunct::moneypunct (); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ctor2.C b/gcc/testsuite/g++.old-deja/g++.pt/ctor2.C new file mode 100644 index 000000000..a8be91ddb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ctor2.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// Test for use of template parms in constructor name. +// Submitted by Jason Merrill + +template +struct A { + A(); +}; + +template +A::A() // { dg-error "constructor|qualified name" } +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/debug1.C b/gcc/testsuite/g++.old-deja/g++.pt/debug1.C new file mode 100644 index 000000000..774634637 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/debug1.C @@ -0,0 +1,8 @@ +// { dg-do assemble } +// { dg-options "-g" } +// Origin: Jim Wilson + +template class _Oper, + template class _Meta1, + template class _Meta2, + class _Dom1, class _Dom2> class _BinClos; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/decl1.C b/gcc/testsuite/g++.old-deja/g++.pt/decl1.C new file mode 100644 index 000000000..34b3b13f5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/decl1.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +struct S { + template + int f(T), g(T); // { dg-error "" } more than one declarator +}; + +template +void x(T), y(T); // { dg-error "" } more than one declarator + +template +struct S2 +{ + static int i, j; // OK. +}; + +template +int S2::i, S2::j; // { dg-error "" } more than one declarator + +template <> +int S2::i, S2::i; // { dg-error "" } more than one declarator diff --git a/gcc/testsuite/g++.old-deja/g++.pt/decl2.C b/gcc/testsuite/g++.old-deja/g++.pt/decl2.C new file mode 100644 index 000000000..b671213ad --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/decl2.C @@ -0,0 +1,7 @@ +// { dg-do assemble } + +// Simplified from testcase by Christophe Boyanique + +template struct foo { foo(); }; +template foo::foo() {} +T; // { dg-error "" } no type diff --git a/gcc/testsuite/g++.old-deja/g++.pt/decl3.C b/gcc/testsuite/g++.old-deja/g++.pt/decl3.C new file mode 100644 index 000000000..194d9a837 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/decl3.C @@ -0,0 +1,5 @@ +// { dg-do assemble } +// Origin: Jason Merrill + +template struct A; +template struct A { }; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/decl4.C b/gcc/testsuite/g++.old-deja/g++.pt/decl4.C new file mode 100644 index 000000000..94f29391f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/decl4.C @@ -0,0 +1,7 @@ +// { dg-do assemble } + +// by Paul Burchard , Level Set Systems, Inc. +// Copyright (C) 1999 Free Software Foundation + +typedef std::vector::iterator iter; // { dg-error "" } syntax error before `::' + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/deduct1.C b/gcc/testsuite/g++.old-deja/g++.pt/deduct1.C new file mode 100644 index 000000000..c48fa0808 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/deduct1.C @@ -0,0 +1,27 @@ +// { dg-do assemble } + +template +struct Mesh { }; + +struct RectGrid { }; + +struct RectMesh { }; + +struct Cartesian { }; + +template +struct Mesh { }; + +template +struct Mesh : public Mesh { }; + +template +void foo(const Mesh &) +{ +} + +int main() +{ + Mesh m; + foo(m); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/deduct2.C b/gcc/testsuite/g++.old-deja/g++.pt/deduct2.C new file mode 100644 index 000000000..5501f363d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/deduct2.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 5 Sept 2000 + +// bug 79 & 59. We failed to tsubst non-type template parms which used +// (previously deduced) type parms. + +struct C {}; + +template< class T, T *G > struct S {}; +template< class T, T *G > void boz ( S s1); + +C c1Gen; + +void foo () +{ + S< C, &c1Gen > s1; + + boz (s1); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/deduct3.C b/gcc/testsuite/g++.old-deja/g++.pt/deduct3.C new file mode 100644 index 000000000..b54c5a153 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/deduct3.C @@ -0,0 +1,22 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 18 Jan 2001 + +// Bug 1694. We complained during deduction, rather than reject the deduction. + +template class X {}; + +template X Foo (T *); +template int Foo (T const *); + +void Baz (int *p1, int const *p2) +{ + int i = Foo (p1); // { dg-error "" } cannot convert + int j = Foo (p2); +} +void Baz (float *p1, float const *p2) +{ + int i = Foo (p1); // ok, deduction fails on X Foo (T *) + int j = Foo (p2); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/deduct4.C b/gcc/testsuite/g++.old-deja/g++.pt/deduct4.C new file mode 100644 index 000000000..02d6b2c31 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/deduct4.C @@ -0,0 +1,12 @@ +// { dg-do run } +// Test that we can deduce t even though T is deduced from a later argument. + +template struct A { }; + +template void f (A &, T) { } + +int main () +{ + A<42> a; + f (a, 24); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/deduct5.C b/gcc/testsuite/g++.old-deja/g++.pt/deduct5.C new file mode 100644 index 000000000..c29510772 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/deduct5.C @@ -0,0 +1,34 @@ +// { dg-do run } +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 13 Feb 2001 + +// Bug 1960. We were not dealing with qualified array types properly. + +#include + +template int Foo (T const *ptr) +{ + static int count; + + printf ("%s\n", __PRETTY_FUNCTION__); + count++; + + return count; +} + +int main () +{ + static int const cs = 1; + static int const ca[1] = {1}; + static int s = 1; + static int a[1] = {1}; + + Foo (&cs); + Foo (&ca); + if (Foo (&s) != 2) + return 1; + if (Foo (&a) != 2) + return 2; + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/deduct6.C b/gcc/testsuite/g++.old-deja/g++.pt/deduct6.C new file mode 100644 index 000000000..94c6c6600 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/deduct6.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 13 Feb 2001 + +// Bug 1962. We were not dealing with qualified array types properly. + +#include + +template int Baz (T (&obj)[I]) +{ + printf ("%s\n", __PRETTY_FUNCTION__); + return 1; +} + +int main () +{ + static int const ca[1] = {1}; + static int a[1] = {1}; + + Baz (ca); + Baz (a); + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/deduct7.C b/gcc/testsuite/g++.old-deja/g++.pt/deduct7.C new file mode 100644 index 000000000..99f96966c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/deduct7.C @@ -0,0 +1,15 @@ +// { dg-do run } +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Jason Merrill 14 Jun 2001 + +// Test that deduction can add cv-quals to a pointer-to-member type. + +struct A; +int A::* pi; + +template void f (const T A::*) {} + +int main () +{ + f (pi); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg.C new file mode 100644 index 000000000..833b98f06 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg.C @@ -0,0 +1,11 @@ +// { dg-do run } +template +void f(T t, int i = 10); + +template +void f(T t, int i) {} + +int main() +{ + f(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg10.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg10.C new file mode 100644 index 000000000..bd830522b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg10.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// Origin: Ian Nixon + +struct A {}; + +template class Tc {}; // { dg-error "" } no defarg + +int main () +{ + Tc oops; // { dg-error "" } using template +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg11.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg11.C new file mode 100644 index 000000000..5f189b111 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg11.C @@ -0,0 +1,5 @@ +// { dg-do assemble } +// Origin: Jason Merrill + +template struct A; +template struct A; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg12.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg12.C new file mode 100644 index 000000000..8d1da09d0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg12.C @@ -0,0 +1,12 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S +{ + void f () + { + struct U { + }; + } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg13.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg13.C new file mode 100644 index 000000000..83539f50c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg13.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +void f (int i) +{ + struct S { void g (int j = i) {} }; // { dg-error "" } default argument uses local + + S s; +} + +template void f(int); + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg14.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg14.C new file mode 100644 index 000000000..c4e206136 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg14.C @@ -0,0 +1,18 @@ +// { dg-do assemble } + +// Origin: Larry Evans + +// Bug: enum in default template arguments are not properly handled. + +enum Enum0 { E0, E1, E2 }; +enum Enum1 { E3=E2+1, E4=E3+1 }; + +template class OutTmpl +{ + public: + template class InTmpl + { + }; +}; + +OutTmpl m; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg2.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg2.C new file mode 100644 index 000000000..ff036f1f0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg2.C @@ -0,0 +1,18 @@ +// { dg-do run } +template +struct X +{}; + +template <> +struct X<0,int> +{}; + +template +struct X +: X<> +{}; + +int main() +{ + X<1,int> x; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg3.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg3.C new file mode 100644 index 000000000..feb4eaeb2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg3.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +template +struct S; + +template +struct S {}; + +template +struct S; + +void f() +{ + S<> s; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg4.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg4.C new file mode 100644 index 000000000..ddc24c938 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg4.C @@ -0,0 +1,32 @@ +// { dg-do assemble } + +template +struct S1 +{ + void foo(T = t()); + + static T t(); +}; + + +template +struct S2 +{ + void bar(); +}; + + +template +void S2::bar () +{ + S1 st; + st.foo(); +} + + +int main() +{ + S2 s2i; + s2i.bar(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg5.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg5.C new file mode 100644 index 000000000..661cb8ff4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg5.C @@ -0,0 +1,24 @@ +// { dg-do assemble } + +template +class Point { + public: + Point (Point &); + Point & operator = (Point &); +}; + + + +template +class bar{ + public: + void foo (Point p = Point()); +}; + + + +template <> +void bar<2>::foo (Point<2> p) { + const int dim = 2; + Point q = p; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg6.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg6.C new file mode 100644 index 000000000..f5f7b7b22 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg6.C @@ -0,0 +1,28 @@ +// { dg-do assemble } +// { dg-options "-std=gnu++98" } + +template +struct C { + template + void f(U); // OK + + template + struct I {}; // OK + + template + void h(W); // { dg-error "" } default argument + + template + void k(Y); +}; + +template +template +void C::f(U) {} // { dg-error "" } default argument + +template +void g(X); // { dg-error "" } default argument + +template +template +void C::k(Y) {} // { dg-error "" } default argument diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg7.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg7.C new file mode 100644 index 000000000..5cf0286da --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg7.C @@ -0,0 +1,11 @@ +// { dg-do assemble } + +template +class Engine {}; + +struct Brick; + +template +struct ConstArray { + static const int dimensions = Engine::dimensions; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg8.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg8.C new file mode 100644 index 000000000..a72e85c43 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg8.C @@ -0,0 +1,17 @@ +// { dg-do assemble } + +// Default arguments containing more than one non-nested explicit +// template argument leads to parse error + +// This might be ill formed. See DR 325 (one proposed resolution is to make +// it so) + +template class foo1; +template class foo2; + +struct bar { + template + bar(int i = foo1::baz, // { dg-bogus "" } - + int j = int(foo2::baz), // ok + int k = foo2::baz) {} // ok? +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg9.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg9.C new file mode 100644 index 000000000..2f0dbba8f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg9.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S +{ + void g () + { + } + + friend void f (double) + { + } +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/derived1.C b/gcc/testsuite/g++.old-deja/g++.pt/derived1.C new file mode 100644 index 000000000..aebb3d59a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/derived1.C @@ -0,0 +1,24 @@ +// { dg-do assemble } + +class A +{ +public: + typedef int Info; +}; + +template +class B : public A +{ +public: + typedef struct{ + int a; + int b; + } Info; +}; + +void f() +{ + B::Info ie; + ie.a=1; + ie.b=2; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/derived2.C b/gcc/testsuite/g++.old-deja/g++.pt/derived2.C new file mode 100644 index 000000000..7335369a2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/derived2.C @@ -0,0 +1,35 @@ +// { dg-do assemble } +// { dg-options "" } + +template +void f(T); +template <> +void f(int) {} + +struct B { + typedef int I; +}; + +template +struct D1 : virtual public B { + typedef T I; +}; + + +template +struct D : virtual public B, public D1 +{ + void g() + { + I i; + f(i); + } +}; + +int +main() +{ + D d; + d.g(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/derived3.C b/gcc/testsuite/g++.old-deja/g++.pt/derived3.C new file mode 100644 index 000000000..b0d1d3bb2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/derived3.C @@ -0,0 +1,16 @@ +// { dg-do compile } + +// by Paul Burchard , Level Set Systems, Inc. +// Copyright (C) 1999, 2002 Free Software Foundation + +template +class X { + class Y : public T // { dg-error "base type .* fails to be" } + { + }; + Y y; // { dg-message "instantiated" } +}; +int main() { + X x; // { dg-message "instantiated" } +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/dynarray.C b/gcc/testsuite/g++.old-deja/g++.pt/dynarray.C new file mode 100644 index 000000000..7376f9165 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/dynarray.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// { dg-options "" } +// Origin: Theo Papadopoulo + +inline const unsigned& f(unsigned const& a) { + return a; +} + +template +void +g(const unsigned n) +{ + double D[f(n)]; +} + +template +void g(unsigned const int) { } + +int main() +{ + g(18); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ehspec1.C b/gcc/testsuite/g++.old-deja/g++.pt/ehspec1.C new file mode 100644 index 000000000..e75704e77 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ehspec1.C @@ -0,0 +1,6 @@ +// { dg-do assemble } +// Bug: g++ forgets to instantiate A +// Contributed by Jason Merrill + +template struct A { }; +void f () throw (A); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/eichin01.C b/gcc/testsuite/g++.old-deja/g++.pt/eichin01.C new file mode 100644 index 000000000..435fecd64 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/eichin01.C @@ -0,0 +1,27 @@ +// { dg-do link } + +/* + + +*/ + + +template class TC { +public: + X aaa; + static X sss; + TC(X a) { aaa = a; } + TC(X a, X s) { aaa = a; sss = s; } + void sz(X s) { sss = s; } +}; + +template <> float TC::sss = 0.0; +template <> long TC::sss = 0; + +TC xjj(1,2); + +int main(int,char**) { + TC xff(9.9,3.14); + xjj.sz(123); + xff.sz(2.71828); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/eichin01a.C b/gcc/testsuite/g++.old-deja/g++.pt/eichin01a.C new file mode 100644 index 000000000..de9b1ba4a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/eichin01a.C @@ -0,0 +1,22 @@ +// { dg-do run } +template class TC { +public: + X aaa; + static X sss; + TC(X a) {aaa = a; } + TC(X a, X s) {aaa = a; sss = s; } + void sz(X s) { sss = s; } +}; + + +template <> long TC::sss = 0; +template <> float TC::sss = 0.0; + +TC xjj(1,2); + +int main(int,char**) { + TC xff(9.9,3.14); + xjj.sz(123); + xff.sz(2.71828); + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/eichin01b.C b/gcc/testsuite/g++.old-deja/g++.pt/eichin01b.C new file mode 100644 index 000000000..79902de69 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/eichin01b.C @@ -0,0 +1,22 @@ +// { dg-do run } +template class TC { +public: + X aaa; + static X sss; + TC(X a) {aaa = a; } + TC(X a, X s) {aaa = a; sss = s; } + void sz(X s) { sss = s; } + void syy(X syarg) { sss = syarg; } +}; + +template <> long TC::sss = 0; +template <> float TC::sss = 0.0; + +TC xjj(1,2); + +int main(int,char**) { + TC xff(9.9,3.14); + xjj.sz(123); + xff.sz(2.71828); + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum.C b/gcc/testsuite/g++.old-deja/g++.pt/enum.C new file mode 100644 index 000000000..f2192e794 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// GROUPS passed enums +template +struct templ +{ + enum { val = 0 }; +}; +struct Foo +{ + enum { + bar = 0, + len = templ::val + }; +}; +void func() +{ + int s = Foo::bar; // Ensure that expansion of templ did not erase bar +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum10.C b/gcc/testsuite/g++.old-deja/g++.pt/enum10.C new file mode 100644 index 000000000..b5cf3f3eb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum10.C @@ -0,0 +1,12 @@ +// { dg-do assemble } + +template +struct S { + enum E { a = (int) T::b }; +}; + +struct S2 { + enum E2 { b }; +}; + +template class S; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum11.C b/gcc/testsuite/g++.old-deja/g++.pt/enum11.C new file mode 100644 index 000000000..d64fab2fc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum11.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +template void f1() +{ + struct foo { enum T2 { + un, du, toi }; + }; +} + +void f2() { f1(); } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum12.C b/gcc/testsuite/g++.old-deja/g++.pt/enum12.C new file mode 100644 index 000000000..595954b91 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum12.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +template +struct S1 { }; + +template +struct S2 { + enum { x = 3 }; + + void f(S1&); +}; + +template +void S2::f(S1&) +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum13.C b/gcc/testsuite/g++.old-deja/g++.pt/enum13.C new file mode 100644 index 000000000..1c8364702 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum13.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// Origin: Theodore Papadopoulo + +template +struct foo { + enum { A = 4 >= 4, B = (1 ? true : A) }; +}; + +foo bar; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum14.C b/gcc/testsuite/g++.old-deja/g++.pt/enum14.C new file mode 100644 index 000000000..2405cc8f8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum14.C @@ -0,0 +1,36 @@ +// { dg-do assemble } +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 4 Oct 2000 +// Origin: bug 511 malte.starostik@t-online.de + +// Bug 511. We failed to set access correctly for enumeration members of +// template classes + +template +class A +{ + public: + enum foo {bar}; + typedef int baz; +}; + +struct C: public A +{ + void choke (foo); + void choke (baz); +}; + +template +struct B +{ + private: + enum foo {bar}; // { dg-error "" } private + typedef int baz; // { dg-error "" } private +}; + +struct D: public B +{ + void choke (foo); // { dg-error "" } within this context + void choke (baz); // { dg-error "" } within this context +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum2.C b/gcc/testsuite/g++.old-deja/g++.pt/enum2.C new file mode 100644 index 000000000..c313970bb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum2.C @@ -0,0 +1,17 @@ +// { dg-do assemble } + +struct U { + static int STATIC; +}; + +template class FOO { +public: + enum { n = 0 }; +}; + +template class BAR { +public: + enum { n = FOO<&A::STATIC>::n }; +}; + +int n = BAR::n; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum3.C b/gcc/testsuite/g++.old-deja/g++.pt/enum3.C new file mode 100644 index 000000000..2e43608db --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum3.C @@ -0,0 +1,15 @@ +// { dg-do run } +struct S { enum en { s0, s1, s2 }; }; + +template +int val( ) +{ + return e; +} + + +int main() +{ + return val( ); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum4.C b/gcc/testsuite/g++.old-deja/g++.pt/enum4.C new file mode 100644 index 000000000..6e9f1e090 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum4.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +template +struct U +{ + T mT; +}; + +template +struct M +{ + enum FLAG {On, Off}; + U mUF; +}; + +M gm; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum5.C b/gcc/testsuite/g++.old-deja/g++.pt/enum5.C new file mode 100644 index 000000000..a7c5ea3e5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum5.C @@ -0,0 +1,4 @@ +// { dg-do assemble } + +template <> +enum E {e}; // { dg-error "" } template declaration of enum diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum6.C b/gcc/testsuite/g++.old-deja/g++.pt/enum6.C new file mode 100644 index 000000000..254b48bc7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum6.C @@ -0,0 +1,14 @@ +// { dg-do assemble } + +template +struct vector {}; + +template +void fn(T) +{ + enum tern { H, L, X, U }; + + vector ternvec; // { dg-error "" } composed from a local type +} + +template void fn(int); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum7.C b/gcc/testsuite/g++.old-deja/g++.pt/enum7.C new file mode 100644 index 000000000..e81376124 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum7.C @@ -0,0 +1,28 @@ +// { dg-do run } +template +int f() +{ + enum E { a = I }; + + struct S { + int g() { + E e; + e = a; + return (int) e; + } + }; + + S s; + + return s.g(); +} + + +int main() +{ + if (f<7>() != 7) + return 1; + if (f<-3>() != -3) + return 1; + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum8.C b/gcc/testsuite/g++.old-deja/g++.pt/enum8.C new file mode 100644 index 000000000..e62428f2c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum8.C @@ -0,0 +1,18 @@ +// { dg-do assemble } + +template +void f(); + +template <> +void f<4>() {} + +template +struct S +{ + enum E { a = 1, b = a + 3 }; +}; + +int main() +{ + f::b>(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/enum9.C b/gcc/testsuite/g++.old-deja/g++.pt/enum9.C new file mode 100644 index 000000000..9bb19da4e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/enum9.C @@ -0,0 +1,13 @@ +// { dg-do assemble } + +template +class _Format_cache +{ +public: + enum { + _S_digits, _S_digits_end = _S_digits+10, + _S_xdigits = _S_digits_end + }; +}; + +template class _Format_cache; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/error1.C b/gcc/testsuite/g++.old-deja/g++.pt/error1.C new file mode 100644 index 000000000..c94fd65d3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/error1.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S +{ + template + void f (); + +}; + +template +template +void S::f () +{ + U& u; // { dg-error "" } uninitialized reference +} + +template void S::f(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/error2.C b/gcc/testsuite/g++.old-deja/g++.pt/error2.C new file mode 100644 index 000000000..6cb67ddec --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/error2.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// Origin: Carl Nygard + +template +class Test { +public: + Test(const RT& c = RT()) {} // { dg-error "reference to void" } +}; + +void f () +{ + Test c; // { dg-message "instantiated" } +} + + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/error3.C b/gcc/testsuite/g++.old-deja/g++.pt/error3.C new file mode 100644 index 000000000..a6588c9bf --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/error3.C @@ -0,0 +1,18 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 10 Jan 2001 + +// Bug 1606. We sorry'd issuing an error. + +struct A {}; +template class Tpl {}; + +struct B { + Tpl s; +}; + +void foo (B *ptr) +{ + ptr->Tpl.t (); // { dg-error "" } template as expression +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explarg1.C b/gcc/testsuite/g++.old-deja/g++.pt/explarg1.C new file mode 100644 index 000000000..b78b483a2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explarg1.C @@ -0,0 +1,22 @@ +// { dg-do run } +// Bug: g++ generates an error trying to generate the first foo, when +// it should silently fail and go on to the next one. + +template class A { }; + +template void +foo(const A&); + +template +class B { }; + +template void +foo(B const &) { } + +int +main(void) +{ + B sa; + + foo (sa); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit1.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit1.C new file mode 100644 index 000000000..85997b3d6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit1.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// GROUPS passed templates +template +void foo(T t) {} + +void bar() +{ + (void (*)(double)) &foo; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit10.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit10.C new file mode 100644 index 000000000..b88dfd3b2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit10.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// { dg-options "-ansi -pedantic-errors -w" } +// GROUPS passed templates +template +void foo(T t); + +int main() +{ + foo(3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit11.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit11.C new file mode 100644 index 000000000..7f4d85fc2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit11.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// GROUPS passed templates +template +void foo(T t); + +template +struct S {}; + +int main() +{ + S si; + + foo >(si); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit12.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit12.C new file mode 100644 index 000000000..ac8b7c5aa --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit12.C @@ -0,0 +1,20 @@ +// { dg-do link } +// { dg-options "-ansi -pedantic-errors -w" } +// GROUPS passed templates +template +struct S +{ + template + void foo(T t); +}; + + +template <> +template <> +void S::foo(int) {} + +int main() +{ + S s; + s.foo(3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit13.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit13.C new file mode 100644 index 000000000..a0dbfaa60 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit13.C @@ -0,0 +1,23 @@ +// { dg-do link } +// { dg-options "-ansi -pedantic-errors -w" } +// GROUPS passed templates + +template +struct S +{ + template + void foo(T t); + + template + void bar(T t) { this->template foo(3.74); } +}; + +template <> +template <> +void S::foo(int) { } + +int main() +{ + S s; + s.bar(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit14.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit14.C new file mode 100644 index 000000000..132845d85 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit14.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// GROUPS passed templates +template +struct S +{ + template + typename U::R foo(U u); +}; + + +void bar() +{ + S si; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit15.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit15.C new file mode 100644 index 000000000..e3d598b0e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit15.C @@ -0,0 +1,30 @@ +// { dg-do assemble } +// GROUPS passed templates +template +class Array; + + +template +class ArraySectionInfo { +public: + enum { rank = 0 }; +}; + + +template +class SliceInfo { +public: + enum { + rank = ArraySectionInfo::rank + }; + + typedef Array T_slice; +}; + +template +typename SliceInfo::T_slice +foo(T2 r2) +{ + return SliceInfo::T_slice(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit16.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit16.C new file mode 100644 index 000000000..6ae273a14 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit16.C @@ -0,0 +1,28 @@ +// { dg-do assemble } +// GROUPS passed templates +template +class Array; + + +template +class ArraySectionInfo { +public: + enum { rank = 0 }; +}; + + +template +class SliceInfo { +public: + static const int rank = ArraySectionInfo::rank; + + typedef Array T_slice; +}; + +template +typename SliceInfo::T_slice +foo(T2 r2) +{ + return SliceInfo::T_slice(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit17.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit17.C new file mode 100644 index 000000000..9a83fb0c4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit17.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +// { dg-options "-ansi -pedantic-errors -w" } +// GROUPS passed templates +template +void foo(U u, T t); + +template +void foo(T t); + +template +struct S {}; + +template +void foo(const S&); + +void bar() +{ + void (*fn)(double, int) = + (void (*)(double, int)) &foo; + void (*fn2)(double) = foo; + foo(3, 3.0); + foo(S()); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit18.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit18.C new file mode 100644 index 000000000..fff27f001 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit18.C @@ -0,0 +1,12 @@ +// { dg-do link } +// { dg-options "-ansi -pedantic-errors -w" } +// GROUPS passed templates +template +int foo(T t) { return 0; } + +int foo(int i); + +int main() +{ + return foo(3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit19.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit19.C new file mode 100644 index 000000000..053629ad7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit19.C @@ -0,0 +1,13 @@ +// { dg-do link } +// { dg-options "-ansi -pedantic-errors -w" } +// GROUPS passed templates +template +int foo(T t); + +template <> +int foo(int i) { return 0; } + +int main() +{ + return foo(3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit2.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit2.C new file mode 100644 index 000000000..14d9f4674 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit2.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// GROUPS passed templates +template +void foo(T t) {} + +void bar() +{ + (void (*)(int)) (void (*)(double)) &foo; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit20.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit20.C new file mode 100644 index 000000000..a3feaa697 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit20.C @@ -0,0 +1,7 @@ +// { dg-do assemble } +// GROUPS passed templates +template +T foo(T t); + +template <> +int foo(char c); // { dg-error "" } does not match any template declaration diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit21.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit21.C new file mode 100644 index 000000000..8d22f3ec2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit21.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// GROUPS passed templates +template +T foo(T* t); + +template <> +int foo(char c); // { dg-error "" } does not match declaration. + +template <> +int bar(); // { dg-error "" } no template bar. diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit22.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit22.C new file mode 100644 index 000000000..49b4f748e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit22.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// GROUPS passed templates +template +T foo(T t, U* u); + +template +T foo(T t, T* u); + +template <> +int foo(int, int*); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit23.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit23.C new file mode 100644 index 000000000..bf6a52632 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit23.C @@ -0,0 +1,13 @@ +// { dg-do link } +// { dg-options "-ansi -pedantic-errors -w" } +// GROUPS passed templates +template +int foo(T t) { return 1; } + +template <> +int foo(int i) { return 0; } + +int main() +{ + return foo(3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit24.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit24.C new file mode 100644 index 000000000..855422b7e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit24.C @@ -0,0 +1,7 @@ +// { dg-do assemble } +// GROUPS passed templates +template +int foo(T t); + +int foo(int i) { return 0; } // { dg-error "" } missing template <> + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit25.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit25.C new file mode 100644 index 000000000..0175d9f4f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit25.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed templates +template +class S {}; + +template +void foo(T t, S); + +void bar() +{ + S<3> s3; + foo<3>("abc", s3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit26.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit26.C new file mode 100644 index 000000000..ba50fac1c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit26.C @@ -0,0 +1,12 @@ +// { dg-do link } +// GROUPS passed templates +template +int foo(T t) { return 1; } + +template <> +int foo(int i) { return 0; } + +int main() +{ + (int (*)(int)) &foo; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit27.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit27.C new file mode 100644 index 000000000..368510513 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit27.C @@ -0,0 +1,12 @@ +// { dg-do link } +// GROUPS passed templates +template +void foo(T t); + +template <> +void foo(int i) {} + +int main() +{ + (void (*)(int)) &foo; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit28.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit28.C new file mode 100644 index 000000000..79d8dd01d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit28.C @@ -0,0 +1,12 @@ +// { dg-do link } +// GROUPS passed templates +template +int foo(T t) { return 1; } + +template <> +int foo(int i) { return 0; } + +int main() +{ + return (*((int (*)(int)) &foo))(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit29.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit29.C new file mode 100644 index 000000000..b402cd3c3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit29.C @@ -0,0 +1,12 @@ +// { dg-do link } +// GROUPS passed templates +template +int foo(T) { return 0; } + +int foo(int); + +int main() +{ + return foo(3); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit3.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit3.C new file mode 100644 index 000000000..ef3e1b4c1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit3.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// GROUPS passed templates +template +void foo(T t, U u) {} + +void bar() +{ + (void (*)(double, int)) &foo; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit30.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit30.C new file mode 100644 index 000000000..d9b51b885 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit30.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// GROUPS passed templates +template +void foo(T, T*); + + +void bar() +{ + double d; + (*((void (*)(int, double*)) (void (*)(int, int*)) &foo))(3, &d); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit31.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit31.C new file mode 100644 index 000000000..e4f6a5b13 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit31.C @@ -0,0 +1,17 @@ +// { dg-do link } +// { dg-options "-ansi -pedantic-errors -w" } +// GROUPS passed templates +template +struct S +{ + template + static double foo(U u) { return (double) u; } +}; + + +int main() +{ + double d = S::foo(3.3); + + return (d >= 3.1); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit32.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit32.C new file mode 100644 index 000000000..e8e496fe3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit32.C @@ -0,0 +1,25 @@ +// { dg-do assemble } +// GROUPS passed templates +template +struct S +{ +}; + + +template <> +struct S +{ + void foo(); +}; + + +void S::foo() +{ +} + + +void bar() +{ + S si; + si.foo(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit33.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit33.C new file mode 100644 index 000000000..c6f5472c3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit33.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// GROUPS passed templates +template +void foo(T t); + +template <> +void foo(int) {} + +void foo(int) {} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit34.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit34.C new file mode 100644 index 000000000..ea32cf6ea --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit34.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// { dg-options "-fshow-column" } +// GROUPS passed templates +template +void foo(T t); + +template <> +void foo(int) {}; // { dg-error "6:previously declared here" } + +template <> +void foo(int) {} // { dg-error "6:redefinition" } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit35.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit35.C new file mode 100644 index 000000000..f174e8f9d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit35.C @@ -0,0 +1,17 @@ +// { dg-do link } +// { dg-options "-ansi -pedantic-errors -w" } +// GROUPS passed templates +struct S +{ + template + void foo(T t); +}; + +template <> +void S::foo(int i) { } + +int main() +{ + S s; + s.foo(3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit36.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit36.C new file mode 100644 index 000000000..4a4f63668 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit36.C @@ -0,0 +1,24 @@ +// { dg-do link } +// GROUPS passed templates +template +void foo(T); + +class S { + friend void foo<>(int); + + int i; +}; + + +template <> +void foo(int) +{ + S s; + s.i = 3; +} + + +int main() +{ + foo(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit37.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit37.C new file mode 100644 index 000000000..f3d9f64d6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit37.C @@ -0,0 +1,23 @@ +// { dg-do link } +// GROUPS passed templates +class ostream {}; + +template +class S; + +template +void operator<<(ostream&, S) {} + +template +class S +{ + friend void operator<<<>(ostream&, const S); +}; + + +int main() +{ + ostream o; + + o << S(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit38.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit38.C new file mode 100644 index 000000000..1831e45a3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit38.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +template +void f(int j); // { dg-message "note" } + +void g() +{ + f<7, 12>(3); // { dg-error "" } no matching function. + // { dg-message "candidate" "candidate note" { target *-*-* } 7 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit39.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit39.C new file mode 100644 index 000000000..995d8c075 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit39.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +template +void f(int i); // { dg-message "note" } + +void g() +{ + f<7>(3); // { dg-error "" } no matching function. + // { dg-message "candidate" "candidate note" { target *-*-* } 7 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit4.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit4.C new file mode 100644 index 000000000..f7e19d201 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit4.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// GROUPS passed templates +template +void foo(T t); + +template +struct S {}; + +template +void bar(T t) +{ + void (*f)(S ) = &foo >; +} + + +void baz() +{ + bar(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit40.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit40.C new file mode 100644 index 000000000..71807b365 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit40.C @@ -0,0 +1,28 @@ +// { dg-do run } +extern "C" void abort(); + +template +void f(int j); + +template +void f(int j); + + +template +void f(int j) +{ + abort(); +} + + +template +void f(int j) +{ +} + + +int main() +{ + f<3>(7); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit41.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit41.C new file mode 100644 index 000000000..560370a8b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit41.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +template +void f(int i); // { dg-message "note" } + +void g() +{ + int i; + f(7); // { dg-error "" } template argument 1 is invalid. + // { dg-message "candidate" "candidate note" { target *-*-* } 8 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit42.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit42.C new file mode 100644 index 000000000..770fbbeea --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit42.C @@ -0,0 +1,18 @@ +// { dg-do run } +extern "C" void abort(void); + +template +void f(int i) +{ +} + +template +void f(int i) +{ + abort(); +} + +int main() +{ + f<0>(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit43.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit43.C new file mode 100644 index 000000000..199bcc137 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit43.C @@ -0,0 +1,24 @@ +// { dg-do run } +extern "C" void abort(void); + +void F(int) +{ +} + + +void F(double) +{ + abort(); +} + +template +void g() +{ + (*F)(3); +} + + +int main() +{ + g<&F>(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit5.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit5.C new file mode 100644 index 000000000..26b549088 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit5.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// GROUPS passed templates +template +void foo(T t) {} + +template +struct S {}; + +template +void bar(T t) +{ + void (*f)(S ) = &foo >; +} + + +void baz() +{ + bar(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit50.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit50.C new file mode 100644 index 000000000..4f11eda6e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit50.C @@ -0,0 +1,16 @@ +// { dg-do run } +extern "C" void abort (); + +template int f () +{ + return sizeof(T); +} + +int main () +{ + if (f () != sizeof(long) + || f () != sizeof(char) + || f () != sizeof(long) + || f () != sizeof(long int)) + abort (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit51.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit51.C new file mode 100644 index 000000000..dbac95523 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit51.C @@ -0,0 +1,19 @@ +// { dg-do run } +extern "C" void abort (); + +template int fact () +{ + return 0; +} + +template <> int fact<1> () +{ + return 1; +} + +int main() +{ + if (fact<3> () != 0 || fact<1> () != 1 + || fact<3> () != 0 || fact<1> () != 1 || fact<1+0> () != 1) + abort (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit52.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit52.C new file mode 100644 index 000000000..71182714c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit52.C @@ -0,0 +1,19 @@ +// { dg-do run } +extern "C" void abort (); + +template inline int fact () +{ + return a * fact (); +} + +template <> inline int fact<1> () +{ + return 1; +} + +int main() +{ + if (fact<3> () != 6 || fact<1> () != 1 + || fact<3> () != 6 || fact<1> () != 1 || fact<1+0> () != 1) + abort (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit53.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit53.C new file mode 100644 index 000000000..29c970397 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit53.C @@ -0,0 +1,22 @@ +// { dg-do run } +extern "C" void abort (); + +template inline int fact (); +template <> inline int fact<1> (); + +template inline int fact () +{ + return a * fact (); +} + +template <> inline int fact<1> () +{ + return 1; +} + +int main() +{ + if (fact<3> () != 6 || fact<1> () != 1 + || fact<3> () != 6 || fact<1> () != 1 || fact<1+0> () != 1) + abort (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit54.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit54.C new file mode 100644 index 000000000..71d8d9356 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit54.C @@ -0,0 +1,36 @@ +// { dg-do run } +extern "C" void abort (); + +template inline int fact2 (); + +template inline int fact () +{ + return a * fact2 (); +} + +template <> inline int fact<1> () +{ + return 1; +} + +template inline int fact2 () +{ + return a*fact(); +} + +template <> inline int fact2<1> () +{ + return 1; +} + +int main() +{ + if (fact<3> () != 6 || fact<1> () != 1 + || fact<3> () != 6 || fact<1> () != 1 || fact<1+0> () != 1) + abort (); + if (fact2<3> () != 6 || fact2<1> () != 1 + || fact2<3> () != 6 || fact2<1> () != 1 || fact2<1+0> () != 1) + abort (); + if (fact2<4> () != 24 || fact<4> () != 24) + abort (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit55.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit55.C new file mode 100644 index 000000000..c71f9d440 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit55.C @@ -0,0 +1,15 @@ +// { dg-do run } +template T* create () +{ + return new T; +} + +template T* create2() +{ + return create(); +} + +int main() +{ + int *p = create2(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit56.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit56.C new file mode 100644 index 000000000..f3e3ed30b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit56.C @@ -0,0 +1,17 @@ +// { dg-do run } +template T* create (); + +template T* create2() +{ + return create(); +} + +template T* create () +{ + return new T; +} + +int main() +{ + int *p = create2(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit57.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit57.C new file mode 100644 index 000000000..ba841021e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit57.C @@ -0,0 +1,43 @@ +// { dg-do run } +extern "C" void abort (); + +int a = 0; + +template void f (); +template void g () +{ + if (a) + abort (); +} + +template <> void g () +{ +} + +template class C +{ + public: + void ff () { f (); } + void gg () { g (); } +}; + +template void f () +{ + if (a) + abort (); +} + +template <> void f () +{ +} + +int main () +{ + C c; + c.ff(); + c.gg(); + a = 1; + C d; + d.ff(); + d.gg(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit58.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit58.C new file mode 100644 index 000000000..72f012165 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit58.C @@ -0,0 +1,42 @@ +// { dg-do run } +extern "C" void abort (); + +template void f (); +template void g () +{ + abort (); +} + +template <> void g () +{ + abort (); +} + +template class C +{ + public: + template void f () {} + template void g () {} + void ff () { f (); } + void gg () { g (); } +}; + +template void f () +{ + abort (); +} + +template <> void f () +{ + abort (); +} + +int main () +{ + C c; + c.ff(); + c.gg(); + C d; + d.ff(); + d.gg(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit59.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit59.C new file mode 100644 index 000000000..24c0e1586 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit59.C @@ -0,0 +1,42 @@ +// { dg-do run } +extern "C" void abort (); + +template void f (); +template void g () +{ + abort (); +} + +template <> void g () +{ + abort (); +} + +template class C +{ + public: + void ff () { f (); } + void gg () { g (); } + template void f () {} + template void g () {} +}; + +template void f () +{ + abort (); +} + +template <> void f () +{ + abort (); +} + +int main () +{ + C c; + c.ff(); + c.gg(); + C d; + d.ff(); + d.gg(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit6.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit6.C new file mode 100644 index 000000000..ea1f97a74 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit6.C @@ -0,0 +1,13 @@ +// { dg-do link } +// { dg-options "-ansi -pedantic-errors -w" } +// GROUPS passed templates +template +int foo(T t); + +template <> +int foo(int i) { return 0; } + +int main() +{ + return foo(3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit60.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit60.C new file mode 100644 index 000000000..7b1f958b7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit60.C @@ -0,0 +1,44 @@ +// { dg-do run } +extern "C" void abort (); + +template void f (); +template void g () +{ + abort (); +} + +template <> void g () +{ + abort (); +} + +template class C +{ + public: + void ff () { f (); } + void gg () { g (); } + template void f () {} + template void g () {} + template void f (int) { abort(); } + template void g (int) { abort(); } +}; + +template void f () +{ + abort (); +} + +template <> void f () +{ + abort (); +} + +int main () +{ + C c; + c.ff(); + c.gg(); + C d; + d.ff(); + d.gg(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit61.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit61.C new file mode 100644 index 000000000..73f83a478 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit61.C @@ -0,0 +1,44 @@ +// { dg-do run } +extern "C" void abort (); + +template void f (); +template void g () +{ + abort (); +} + +template <> void g () +{ + abort (); +} + +template class C +{ + public: + void ff () { f (0); } + void gg () { g (1); } + template void f () { abort(); } + template void g () { abort(); } + template void f (int) {} + template void g (int) {} +}; + +template void f () +{ + abort (); +} + +template <> void f () +{ + abort (); +} + +int main () +{ + C c; + c.ff(); + c.gg(); + C d; + d.ff(); + d.gg(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit62.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit62.C new file mode 100644 index 000000000..534b4ec92 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit62.C @@ -0,0 +1,20 @@ +// { dg-do run } +extern "C" void abort (); + +template void f () +{ +} + + +template class C +{ + friend void f (); + public: + void ff () { f (); } +}; + +int main () +{ + C c; + c.ff(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit63.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit63.C new file mode 100644 index 000000000..46751a69d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit63.C @@ -0,0 +1,20 @@ +// { dg-do run } +extern "C" void abort (); + +template void f () +{ +} + + +template class C +{ + friend void f (); + public: + void ff () { f (); } +}; + +int main () +{ + C c; + c.ff(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit64.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit64.C new file mode 100644 index 000000000..63a05f66d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit64.C @@ -0,0 +1,24 @@ +// { dg-do run } +extern "C" void abort (); + +template void f () +{ + abort (); +} + +template <> void f () +{ +} + +template class C +{ + friend void f (); + public: + void ff () { f (); } +}; + +int main () +{ + C c; + c.ff(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit65.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit65.C new file mode 100644 index 000000000..20cda6384 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit65.C @@ -0,0 +1,34 @@ +// { dg-do run } +extern "C" void abort (); + +template void f () +{ + abort (); +} + +template <> void f () +{ + abort (); +} + +template void f (int) +{ + abort (); +} + +template <> void f (int) +{ +} + +template class C +{ + friend void f (int); + public: + void ff () { f (0); } +}; + +int main () +{ + C c; + c.ff(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit66.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit66.C new file mode 100644 index 000000000..2745cce34 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit66.C @@ -0,0 +1,12 @@ +// { dg-do run } +void f(int) {} +void f(double); + +template +void foo() {} + +int main() +{ + foo(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit67.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit67.C new file mode 100644 index 000000000..c0863a072 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit67.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +struct S +{ + void f(int); + void f(double); +}; + +void g(int); +void g(double); + +template +void foo(); // { dg-message "note" } +template +void foo(); // { dg-message "note" } + +void bar() +{ + foo(); // { dg-error "" } no matching function + // { dg-message "candidate" "candidate note" { target *-*-* } 18 } + foo(); // { dg-error "" } no matching function + // { dg-message "candidate" "candidate note" { target *-*-* } 20 } + +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit68.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit68.C new file mode 100644 index 000000000..efbf0ff52 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit68.C @@ -0,0 +1,24 @@ +// { dg-do assemble } + +template +struct S +{ + static void g(); +}; + +template +void g(); + +template +void f() +{ + const bool b = true; + g(); + const bool b1 = (Length == 2); + S::g(); +} + +void h() +{ + f<3>(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit69.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit69.C new file mode 100644 index 000000000..7742e6125 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit69.C @@ -0,0 +1,2 @@ +// { dg-do assemble } +template class x {}; // { dg-error "" } not a template instantiation diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit70.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit70.C new file mode 100644 index 000000000..5724f6d7d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit70.C @@ -0,0 +1,44 @@ +// { dg-do assemble } + +template +void f(T) {} + +template +struct S { + static T t; +}; + +template +T S::t; + +template void f(int); +template void f(int); // { dg-error "duplicate explicit instantiation" } +template int S::t; +template int S::t; // { dg-error "duplicate explicit instantiation" } +template class S; +template class S; // { dg-error "duplicate explicit instantiation" } + +extern template void f(double); // { dg-error "extern" } extern not allowed +inline template class S; // { dg-error "inline" } inline not allowed + +template +struct S {}; + +template class S; // OK - explicit instantiation of partial + // specialization + +template <> +struct S {}; + +template class S; // OK - explicit instantiation after + +template <> +void f(long double) {} + +template void f(long double); // OK - explicit instantiation after + +template +void g(T); + +template void g(int); // { dg-error "no definition available" "no def" } +// { dg-message "instantiated" "inst" { target *-*-* } 43 } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit71.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit71.C new file mode 100644 index 000000000..03b879433 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit71.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// by Alexandre Oliva +// Based on a testcase by Reid M. Pinchback +// According to the C++ Standard [temp.expl.spec]/17-18, explicit +// specializations are only valid if all enclosing template classes +// of the specialized template are fully specialized too + +template +class bug { + template + class a {}; +}; +template +template <> // { dg-error "" } invalid specialization +class bug::a {}; // { dg-error "" } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit72.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit72.C new file mode 100644 index 000000000..f0e88acfc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit72.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// Contributed by Reid M. Pinchback +// Adapted by Alexandre Oliva +// plain char, signed char and unsigned char are distinct types + +template struct bug {}; +template struct bug { typedef char t; }; +template struct bug { typedef unsigned char t; }; +template struct bug { typedef signed char t; }; +template struct bug { typedef char t; }; +template struct bug { typedef unsigned char t; }; +template struct bug { typedef signed char t; }; + +void foo() { + bug::t(); + bug::t(); + bug::t(); + bug::t(); + bug::t(); + bug::t(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit73.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit73.C new file mode 100644 index 000000000..1d83e3468 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit73.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +// by Alexandre Oliva + +// According to [temp.expl.spec]/2, a template explicit specialization +// must be declared in the namespace that contains the declaration of +// the template + +namespace N { + template class foo; // { dg-error "" } referenced below +} + +using namespace N; + +template <> class foo; // { dg-error "" } invalid specialization diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit74.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit74.C new file mode 100644 index 000000000..66d481b03 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit74.C @@ -0,0 +1,11 @@ +// { dg-do run } +// Reduced from a testcase by Yotam Medini + +// egcs 1.1 seems to generate code that deletes a NULL pointer. + +template struct foo { void fuz(); ~foo(); }; +struct baz { int i; foo j; } *p = 0; +template void foo::fuz() { delete p; } +template foo::~foo() { delete p; } +template class foo; +int main() { foo(); } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit75.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit75.C new file mode 100644 index 000000000..aed69aa1f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit75.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// Test for not complaining about mismatches during unification. + +template void f(); +template void f(); +extern void g(double); + +void h () +{ + f(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit76.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit76.C new file mode 100644 index 000000000..15f680c80 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit76.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +// Based on bug report by Simon A. Crase + + +struct foo { + template void bar(); +}; + +template void foo::bar(); // { dg-bogus "" "" { xfail *-*-* } } - ICE - diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit77.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit77.C new file mode 100644 index 000000000..1213a1511 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit77.C @@ -0,0 +1,19 @@ +// { dg-do assemble } + +template +struct S {}; + +template +struct S : public S, S {}; + +template +void f(S, S); // { dg-message "note" } + +void g() { + S<0, 0, 0> s0; + S<0, 1, 2> s2; + + f<0>(s0, s2); + f(s0, s2); // { dg-error "" } no matching function + // { dg-message "candidate" "candidate note" { target *-*-* } 17 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit78.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit78.C new file mode 100644 index 000000000..34e4c758f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit78.C @@ -0,0 +1,28 @@ +// { dg-do assemble } + +template +struct A { +}; + +template +struct B { + operator A<3> (); + operator B<3, 7> (); +}; + + +template +void f(B); + +template +void f(A) +{ +} + +int main() +{ + // Deduction fails with the first `f'. Since `3' is explicitly + // specified, we don't try any deduction with the second `f'. So, + // we call the second `f'. + f<3>(B<2, 7>()); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit79.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit79.C new file mode 100644 index 000000000..9d62ca40e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit79.C @@ -0,0 +1,12 @@ +// { dg-do assemble } + +template +void f(int (*)[I] = 0); + +template +void f(); + +void g() +{ + f<-1>(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit8.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit8.C new file mode 100644 index 000000000..3a75aa0db --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit8.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed templates +template +void foo(T t, U u); + +template +void foo(double, U) {} + +void baz() +{ + foo(3.0, "abc"); + foo("abc", 3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit80.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit80.C new file mode 100644 index 000000000..4e37971cd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit80.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// Bug: We were complaining about explicit instantiation of A::B. + +template +struct A +{ + public: + ~A() { } + + class B; +}; + +template <> class A::B { }; + +template class A; +template class A; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit81.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit81.C new file mode 100644 index 000000000..576ba5439 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit81.C @@ -0,0 +1,43 @@ +// { dg-do assemble } +// +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 10 Aug 2000 + +// bug 371 We failed to subst explicit template args before trying to +// deduce the template. + +namespace N +{ +enum E { e0 }; + +template< E e > void nf(); + +} + +template< N::E e > void gf(); + +struct X { + template void xfn (); + template static void sfn (); +}; + +template < class C > +void tf(C *ptr) +{ + N::nf(); + gf(); + ptr->X::xfn (); + ptr->C::template xfn (); + ptr->template xfn (); + ptr->X::sfn (); + ptr->C::template sfn (); + ptr->template sfn (); + X::sfn (); + C::template sfn (); +} + +void f(X *ptr) +{ + ptr->xfn (); + tf(ptr); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit82.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit82.C new file mode 100644 index 000000000..e8423f82c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit82.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 7 Sep 2000 + +// Bug 508. We failed to set/clear lastiddecl appropriately for +// operator names. + +struct A {}; + +template void foo (A, int); +template void operator<< (A, int); + +int main() +{ + A a; + operator<< (a, 0); + foo (a, 0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit9.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit9.C new file mode 100644 index 000000000..f30060329 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit9.C @@ -0,0 +1,8 @@ +// { dg-do assemble } +// GROUPS passed templates +void foo(int); + +void bar() +{ + foo(3); // { dg-error "" } foo is not a template. +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/export1.C b/gcc/testsuite/g++.old-deja/g++.pt/export1.C new file mode 100644 index 000000000..53e7e9b16 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/export1.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 17 Nov 2000 + + +// bug 721, we died horribly when export was used wrongly + +struct test { +int export(void); // { dg-error "" } parse error +}; + +int test::export(void) // { dg-error "" } parse error +{ +return 0; +} + +template class Y; +export template class X; // { dg-warning "" } export not implemented diff --git a/gcc/testsuite/g++.old-deja/g++.pt/expr1.C b/gcc/testsuite/g++.old-deja/g++.pt/expr1.C new file mode 100644 index 000000000..124d265dd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/expr1.C @@ -0,0 +1,34 @@ +// { dg-do run } +template class vec { + double x[n]; + + public: + vec() { + for (int i=0; i& v) { + for (int i=0; i& v, const double& y) { + for (int i=0; i vec& operator,(const vec& v, const double& y) { + return *(new vec(v, y)); +} + + +int main() { + vec<4> v; + vec<5> w; + w=(v,3.); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/expr2.C b/gcc/testsuite/g++.old-deja/g++.pt/expr2.C new file mode 100644 index 000000000..0dcc65f6f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/expr2.C @@ -0,0 +1,13 @@ +// { dg-do assemble } + +template +struct S {}; + +template +void foo(S); // { dg-message "note" } + +void bar() +{ + foo(S<3>()); // { dg-error "" } no way to deduce J from this. + // { dg-message "candidate" "candidate note" { target *-*-* } 11 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/expr3.C b/gcc/testsuite/g++.old-deja/g++.pt/expr3.C new file mode 100644 index 000000000..c7269f130 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/expr3.C @@ -0,0 +1,20 @@ +// { dg-do assemble } + +template +struct S {}; + +template +void foo(S); + +template +void baz(S); + +template +void fun(S, S); + +void bar() +{ + foo<5>(S<4>()); // OK - 4 is 5 - 1. + baz(S()); // OK + fun(S<4>(), S<8>()); // OK - deduce J from first argument. +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/expr5.C b/gcc/testsuite/g++.old-deja/g++.pt/expr5.C new file mode 100644 index 000000000..8bf8d423c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/expr5.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +template +struct S1; + +template +struct S2 +{ + typedef typename S1= j ? 0 : 1) >::type type; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/expr6.C b/gcc/testsuite/g++.old-deja/g++.pt/expr6.C new file mode 100644 index 000000000..55da97d53 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/expr6.C @@ -0,0 +1,7 @@ +// { dg-do assemble } + +// Based on a bug report by tveldhui + +template class foo {}; + +foo< true ? 1 : 0 > bar; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/expr7.C b/gcc/testsuite/g++.old-deja/g++.pt/expr7.C new file mode 100644 index 000000000..81d977e3c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/expr7.C @@ -0,0 +1,8 @@ +// { dg-do assemble } + +template struct A { }; +template int f(A); +int g() { + A<3> a; + return f<1,2>(a); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/expr8.C b/gcc/testsuite/g++.old-deja/g++.pt/expr8.C new file mode 100644 index 000000000..3a5c3dcfc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/expr8.C @@ -0,0 +1,26 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 23 June 2000 + +// Origin GNATS bug report 10 from Ewgenij Gawrilow +// There is a grammar ambiguity with greater-than compare as a default +// template parameter value or template arg list. 14.2/2 and 14.1/15 +// say how to resolve it, but we'd sometimes get it wrong. + +template class C { }; + +void f() +{ +C<1> c1; +C<1 & 2> c2; +C<1>2> c3; // { dg-error "" } parse error +C<(1>2)> c4; +C<1 & 2>2> c5; // { dg-error "" } parse error +C<1 & (2>2)> c6; +} + +template 4 > class X1 {}; // { dg-error "" } parse error +template 0 > class X2 {}; // { dg-error "" } parse error +template class X3 {}; +template 4) > class X4 {}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/extern1.C b/gcc/testsuite/g++.old-deja/g++.pt/extern1.C new file mode 100644 index 000000000..91b47c1dd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/extern1.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +void f () +{ + extern int i; + extern T j; + + i = j; +} + +template void f(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/fntry1.C b/gcc/testsuite/g++.old-deja/g++.pt/fntry1.C new file mode 100644 index 000000000..9a5d993be --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/fntry1.C @@ -0,0 +1,10 @@ +// { dg-do run } +// Bug: g++ silently ignores function-try-blocks in templates. +// Submitted by Jason Merrill + +template void f (T) try { throw 1; } catch (...) { } + +int main () +{ + f (1); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend1.C b/gcc/testsuite/g++.old-deja/g++.pt/friend1.C new file mode 100644 index 000000000..d177a8045 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend1.C @@ -0,0 +1,25 @@ +// { dg-do run } +template +void f(T); + +class C +{ + template + friend void f(T); + + int i; +}; + + +template +void f(T) +{ + C c; + c.i = 3; +} + + +int main() +{ + f(7); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend10.C b/gcc/testsuite/g++.old-deja/g++.pt/friend10.C new file mode 100644 index 000000000..d784eaf47 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend10.C @@ -0,0 +1,30 @@ +// { dg-do run } +template +void f(T); + +template +class C +{ + template + friend void f(T) + { + C c; + c.i = 3; + } + +public: + + void g() + { + f(3.0); + } + + int i; +}; + +int main() +{ + f(7); + C c; + c.g(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend11.C b/gcc/testsuite/g++.old-deja/g++.pt/friend11.C new file mode 100644 index 000000000..04dbf2569 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend11.C @@ -0,0 +1,32 @@ +// { dg-do assemble } +template +class C; + +template +struct S +{ + template + void f(U u) + { + C cu; + cu.i = 3; // { dg-error "" } S::f is a friend, but this is + // S::f. + } +}; + + +template +class C +{ + template + friend void S::f(U); + + int i; // { dg-error "" } private +}; + + +int main() +{ + S si; + si.f(3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend12.C b/gcc/testsuite/g++.old-deja/g++.pt/friend12.C new file mode 100644 index 000000000..0c4275151 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend12.C @@ -0,0 +1,34 @@ +// { dg-do run } +template +class C; + +template +struct S +{ + template + void f(U u1, U u2) {} + + template + void f(U u) + { + C ct; + ct.i = 3; + } +}; + + +template +class C +{ + template + friend void S::f(U); + + int i; +}; + + +int main() +{ + S si; + si.f(3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend13.C b/gcc/testsuite/g++.old-deja/g++.pt/friend13.C new file mode 100644 index 000000000..0bdd477a1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend13.C @@ -0,0 +1,34 @@ +// { dg-do run } +template +class C; + +template +struct S +{ + template + void f(V v) + { + C cv; + cv.i = 3; + } +}; + + +template +class C +{ + template + template + friend void S::f(V); + + int i; +}; + + +int main() +{ + S si; + si.f(3.0); + S sl; + sl.f('c'); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend14.C b/gcc/testsuite/g++.old-deja/g++.pt/friend14.C new file mode 100644 index 000000000..69491fadf --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend14.C @@ -0,0 +1,25 @@ +// { dg-do assemble } + +template +class S1 +{ + template + friend class S2; + + static int i; +}; + + +template +class S2 +{ +public: + static void f() { S1::i = 3; } +}; + + +void g() +{ + S2::f(); + S2::f(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend15.C b/gcc/testsuite/g++.old-deja/g++.pt/friend15.C new file mode 100644 index 000000000..875be81d4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend15.C @@ -0,0 +1,24 @@ +// { dg-do assemble } + +class S1 +{ + template + friend class S2; + + static int i; +}; + + +template +class S2 +{ +public: + static void f() { S1::i = 3; } +}; + + +void g() +{ + S2::f(); + S2::f(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend16.C b/gcc/testsuite/g++.old-deja/g++.pt/friend16.C new file mode 100644 index 000000000..1b51f248e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend16.C @@ -0,0 +1,31 @@ +// { dg-do assemble } + +template +class S2 +{ +public: + static void f(); +}; + + +template +class S1 +{ + template + friend class S2; + + static int i; +}; + + +template +void S2::f() +{ + S1::i = 3; +} + +void g() +{ + S2::f(); + S2::f(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend17.C b/gcc/testsuite/g++.old-deja/g++.pt/friend17.C new file mode 100644 index 000000000..ae93cffc7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend17.C @@ -0,0 +1,28 @@ +// { dg-do assemble } + +template +class S2 +{ +public: + static void f(); +}; + +class S1 +{ + template + friend class S2; + + static int i; +}; + +template +void S2::f() +{ + S1::i = 3; +} + +void g() +{ + S2::f(); + S2::f(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend18.C b/gcc/testsuite/g++.old-deja/g++.pt/friend18.C new file mode 100644 index 000000000..4b58f94d3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend18.C @@ -0,0 +1,26 @@ +// { dg-do assemble } + +template +class S1 +{ + template + friend class S2; + + static int i; +}; + + +template +class S2 +{ +public: + static void f() { S1::i = 3; } +}; + + +void g() +{ + S2::f(); + S2::f(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend20.C b/gcc/testsuite/g++.old-deja/g++.pt/friend20.C new file mode 100644 index 000000000..11cb291f1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend20.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +template struct A; + +template struct B +{ + friend class A; +}; + +template class B; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend21.C b/gcc/testsuite/g++.old-deja/g++.pt/friend21.C new file mode 100644 index 000000000..762ea9bae --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend21.C @@ -0,0 +1,30 @@ +// { dg-do assemble } + +template struct A { + static void f(); +}; + +template class B +{ + friend class A; + static int i; // { dg-error "" } private +}; + +template class C +{ + template + friend class A; + + static int i; +}; + +template +void A::f() +{ + B::i = 3; + C::i = 3; + C::i = 3; + B::i = 3; // { dg-error "" } member `i' is private +} + +template void A::f(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend22.C b/gcc/testsuite/g++.old-deja/g++.pt/friend22.C new file mode 100644 index 000000000..3dcfa0e61 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend22.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +template +struct S +{ + template + friend class S; +}; + +template struct S; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend23.C b/gcc/testsuite/g++.old-deja/g++.pt/friend23.C new file mode 100644 index 000000000..93ce72e30 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend23.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +template // { dg-message "note: original definition" } +struct S +{ + template + friend class S; // { dg-error "redefinition of default argument" } +}; + +template struct S; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend24.C b/gcc/testsuite/g++.old-deja/g++.pt/friend24.C new file mode 100644 index 000000000..5a4116fd4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend24.C @@ -0,0 +1,18 @@ +// { dg-do assemble } + +template +struct S +{ + template + friend class S; + + void f(T); +}; + +template struct S; + +void g() +{ + S<> s; + s.f(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend25.C b/gcc/testsuite/g++.old-deja/g++.pt/friend25.C new file mode 100644 index 000000000..405ac801d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend25.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +template struct A; + +struct B +{ + template + friend class A; // { dg-error "" } does not specialize any args +}; + +struct C +{ + template + friend class A; // { dg-error "" } partial specialization +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend26.C b/gcc/testsuite/g++.old-deja/g++.pt/friend26.C new file mode 100644 index 000000000..dcc77a494 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend26.C @@ -0,0 +1,6 @@ +// { dg-do assemble } + +struct S +{ + friend void f<>(int); // { dg-error "" } does not match any template +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend27.C b/gcc/testsuite/g++.old-deja/g++.pt/friend27.C new file mode 100644 index 000000000..c23d07004 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend27.C @@ -0,0 +1,7 @@ +// { dg-do assemble } + +class S +{ + friend void f<>(int); // { dg-error "" } does not match any template + int i; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend28.C b/gcc/testsuite/g++.old-deja/g++.pt/friend28.C new file mode 100644 index 000000000..5e06e2167 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend28.C @@ -0,0 +1,24 @@ +// { dg-do assemble } + +class mystream; + +template class a; + +template mystream& operator>>( mystream& s, a& thea ); + +template class a { +public: + friend mystream& operator>> <>( mystream&, a& thea ); +private: + T amember; +}; + +template<> mystream& operator>> ( mystream& s, a& thea ); + +template class a; + +template<> mystream& operator>> ( mystream& s, a& thea ) +{ + thea.amember = 0; + return s; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend29.C b/gcc/testsuite/g++.old-deja/g++.pt/friend29.C new file mode 100644 index 000000000..95cbb0e6a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend29.C @@ -0,0 +1,20 @@ +// { dg-do assemble } + +template class a; + +template void foo( a& thea ); + +template class a { +public: + friend void foo<>( a& thea ); +private: + T amember; +}; + +template void foo( a& thea ) +{ + thea.amember = 0; +} + +template class a; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend3.C b/gcc/testsuite/g++.old-deja/g++.pt/friend3.C new file mode 100644 index 000000000..11b4064f4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend3.C @@ -0,0 +1,25 @@ +// { dg-do assemble } + +template +void f(T); + +class C +{ + friend void f<>(double); + + int i; // { dg-error "" } private +}; + + +template +void f(T) +{ + C c; + c.i = 3; // { dg-error "" } f is a friend, this is f. +} + + +int main() +{ + f(7); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend30.C b/gcc/testsuite/g++.old-deja/g++.pt/friend30.C new file mode 100644 index 000000000..ed492ed18 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend30.C @@ -0,0 +1,18 @@ +// { dg-do assemble } + +template +struct S { + template + friend X f(X, Y, Z); +}; + +template +X f(X x, Y, Z) { + return x; +} + +template char f(char, long, short); +template char* f(char*, long*, short*); +template class S; +template class S; +template double* f(double*, long*, short*); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend31.C b/gcc/testsuite/g++.old-deja/g++.pt/friend31.C new file mode 100644 index 000000000..071025df4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend31.C @@ -0,0 +1,12 @@ +// { dg-do assemble } + +template +struct S1 { +}; + +template <> +struct S1 {}; + +struct S2 { + friend class S1; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend32.C b/gcc/testsuite/g++.old-deja/g++.pt/friend32.C new file mode 100644 index 000000000..512a69a09 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend32.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +template +struct S { + template + friend X f(X, Y, Z); +}; + +template class S; +template char f(char, long, short); +template char* f(char*, long*, short*); + +template +X f(X x, Y, Z) { + return x; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend33.C b/gcc/testsuite/g++.old-deja/g++.pt/friend33.C new file mode 100644 index 000000000..016be7013 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend33.C @@ -0,0 +1,28 @@ +// { dg-do link } +// { dg-options "-g" } + +template +struct S1 +{ + struct SS1 + { + }; + friend void Foo (const SS1& ss1) + { + } +}; + +template +void Foo(const S1& s1) +{ + typedef typename S1::SS1 TYPE; + TYPE t; + Foo(t); +} + +int main () +{ + S1 obj; + Foo(obj); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend34.C b/gcc/testsuite/g++.old-deja/g++.pt/friend34.C new file mode 100644 index 000000000..5e80ab98b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend34.C @@ -0,0 +1,14 @@ +// { dg-do assemble } + +// This testcase won't fail if class ::foo is forward-declared in the +// global namespace, nor if class bar is not a template class. + +template +class bar { +public: + friend class foo; // this is not bar::foo, it forward-declares ::foo + class foo {}; + bar() { foo(); } // but this should refer to bar::foo +}; + +bar<> baz; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend35.C b/gcc/testsuite/g++.old-deja/g++.pt/friend35.C new file mode 100644 index 000000000..b2cd266a4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend35.C @@ -0,0 +1,7 @@ +// { dg-do assemble } + +class foo { + friend void bar(int); // { dg-error "" } must be declared first +}; + +template void bar(T); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend36.C b/gcc/testsuite/g++.old-deja/g++.pt/friend36.C new file mode 100644 index 000000000..f5cb8d40a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend36.C @@ -0,0 +1,12 @@ +// { dg-do assemble } + +template +void f(T) {} // { dg-error "previously" } + +template +struct S { + template + friend void f(T) {} // { dg-error "redefinition" } +}; + +S si; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend37.C b/gcc/testsuite/g++.old-deja/g++.pt/friend37.C new file mode 100644 index 000000000..a0c65ad2b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend37.C @@ -0,0 +1,7 @@ +// { dg-do assemble } +// Simplified from report by Volker Dobler + +template class A { + friend int ice<>( int k=0 ); // { dg-error "" } default argument + friend inline int f<>(double); // { dg-error "" } inline +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend38.C b/gcc/testsuite/g++.old-deja/g++.pt/friend38.C new file mode 100644 index 000000000..429e421b8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend38.C @@ -0,0 +1,9 @@ +// { dg-do assemble } + +// Overly simplified from testcase by "B. K. Oxley" + +template struct foo { + typedef P parent_type; + friend parent_type; // { dg-error "" } template parameters cannot be friends + friend Q; // { dg-error "" } template parameters cannot be friends +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend39.C b/gcc/testsuite/g++.old-deja/g++.pt/friend39.C new file mode 100644 index 000000000..986f27095 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend39.C @@ -0,0 +1,23 @@ +// { dg-do assemble } + +template +struct S; + +template +class C +{ + friend void S::f(); + + int i; +}; + +template +struct S +{ + void f() { + C c; + c.i = 3; + } +}; + +template void S::f(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend4.C b/gcc/testsuite/g++.old-deja/g++.pt/friend4.C new file mode 100644 index 000000000..a1b8d32f1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend4.C @@ -0,0 +1,22 @@ +// { dg-do run } +class C +{ + template + friend void f(T); + + int i; +}; + + +template +void f(T) +{ + C c; + c.i = 3; +} + + +int main() +{ + f(7); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend40.C b/gcc/testsuite/g++.old-deja/g++.pt/friend40.C new file mode 100644 index 000000000..646087630 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend40.C @@ -0,0 +1,12 @@ +// { dg-do assemble } +// { dg-options "-Wno-non-template-friend" } +// Origin: Jason Merrill + +template struct A +{ + friend void f (); +}; + +A a; +A b; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend41.C b/gcc/testsuite/g++.old-deja/g++.pt/friend41.C new file mode 100644 index 000000000..e3a6c0c3f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend41.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +class S { +public: + template + class C { + public: + void f() { S::i = 3; } + }; + + template + friend class C; + +private: + static int i; +}; + + +template void S::C::f(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend42.C b/gcc/testsuite/g++.old-deja/g++.pt/friend42.C new file mode 100644 index 000000000..3c353e53d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend42.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S { + template + friend struct S2; +}; + +template struct S; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend43.C b/gcc/testsuite/g++.old-deja/g++.pt/friend43.C new file mode 100644 index 000000000..5a62efb6c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend43.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// Origin: Matt Austern + +class A { +public: + static void f(); +}; + +template +class B : public A { + friend void A::f(); +}; + +template +class C : public B +{ +}; + +template class C; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend44.C b/gcc/testsuite/g++.old-deja/g++.pt/friend44.C new file mode 100644 index 000000000..1d2c1d1f9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend44.C @@ -0,0 +1,44 @@ +// { dg-do compile } +// Test that template friends referring to class template members are +// respected. + + +template struct A +{ + int f (T); + struct AI { + int f (T); + }; +}; + +class B +{ + template friend int A::f (T); + template friend struct A::AI; + int a; +public: + B(): a(0) { } +}; + +template int A::f (T) +{ + B b; + return b.a; +} + +template int A::AI::f (T) +{ + B b; + return b.a; +} + +int main () +{ + A a; + A::AI ai; + + int r = a.f (0); + r |= ai.f (0); + + return r; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend45.C b/gcc/testsuite/g++.old-deja/g++.pt/friend45.C new file mode 100644 index 000000000..720dfeba0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend45.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 14 Aug 2000 + +// bug 42. We ICE'd on instantiating a template with a bogus templated friend. + +template struct X +{ + template friend X; // { dg-error "" } friend must use aggr tag +}; + +X g; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend46.C b/gcc/testsuite/g++.old-deja/g++.pt/friend46.C new file mode 100644 index 000000000..b8695ccda --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend46.C @@ -0,0 +1,29 @@ +// { dg-do assemble } +// Copyright (C) 2000, 2002 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 17 Nov 2000 + +// bug 43. Two failings, bison parser ickiness caused us to find the member +// named the same as a friend, and then when instantiating, we'd lookup in +// the wrong scope. + +namespace X { + template class P; + + template void operator- (const P&); + + template + struct V + { + V (const T&); + + void operator- (); + friend void X::operator-<> (const P& a); + }; +} + +int main() +{ + X::V b(1.0); + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend47.C b/gcc/testsuite/g++.old-deja/g++.pt/friend47.C new file mode 100644 index 000000000..66b214d1f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend47.C @@ -0,0 +1,14 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 7 Jan 2001 + +// Bug 1033. We ICE'd when trying to make a non template class a templated +// friend. + +class A {}; +class B { + template friend class A; // { dg-error "" } not a template +}; + + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend48.C b/gcc/testsuite/g++.old-deja/g++.pt/friend48.C new file mode 100644 index 000000000..1e2367850 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend48.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +class C { + template + friend class ::C; +}; + +namespace N +{ +template +class D { + template + friend class N::D; +}; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend49.C b/gcc/testsuite/g++.old-deja/g++.pt/friend49.C new file mode 100644 index 000000000..745819af5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend49.C @@ -0,0 +1,26 @@ +// { dg-do assemble } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 5 Jun 2001 + +// Bug 2929. We were forgetting about template parm scope when +// injecting a friend decl into a class template specialization's +// containing scope. + +template class Vec; + +template <> class Vec +{ +public: + Vec (); + Vec & Fn (double); + friend Vec Fn (const Vec &, double); +}; // pop_binding ICE + +template class Alloc +{ + template struct Rebind + { + typedef Alloc<_Tp1> other; + }; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend5.C b/gcc/testsuite/g++.old-deja/g++.pt/friend5.C new file mode 100644 index 000000000..3feeb684e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend5.C @@ -0,0 +1,18 @@ +// { dg-do run } +class C +{ + template + friend void f(T) + { + C c; + c.i = 3; + } + + int i; +}; + + +int main() +{ + f(7); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend6.C b/gcc/testsuite/g++.old-deja/g++.pt/friend6.C new file mode 100644 index 000000000..8bb5e0224 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend6.C @@ -0,0 +1,29 @@ +// { dg-do run } +template +void f(T); + +class C +{ + template + friend void f(T) + { + C c; + c.i = 3; + } + +public: + + void g() + { + f(3.0); + } + + int i; +}; + +int main() +{ + f(7); + C c; + c.g(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend7.C b/gcc/testsuite/g++.old-deja/g++.pt/friend7.C new file mode 100644 index 000000000..de834bc4e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend7.C @@ -0,0 +1,26 @@ +// { dg-do run } +template +void f(T); + +template +class C +{ + template + friend void f(T); + + int i; +}; + + +template +void f(T) +{ + C c; + c.i = 3; +} + + +int main() +{ + f(7); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend8.C b/gcc/testsuite/g++.old-deja/g++.pt/friend8.C new file mode 100644 index 000000000..b87aefeb0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend8.C @@ -0,0 +1,19 @@ +// { dg-do run } +template +class C +{ + friend void f (C c) + { + c.i = 3; + } + + int i; +}; + + +int main() +{ + C ci; + + f(ci); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend9.C b/gcc/testsuite/g++.old-deja/g++.pt/friend9.C new file mode 100644 index 000000000..5eb52b7ef --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend9.C @@ -0,0 +1,23 @@ +// { dg-do run } +template +class C +{ + template + friend void f(T); + + int i; +}; + + +template +void f(T) +{ + C c; + c.i = 3; +} + + +int main() +{ + f(7); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/goto.C b/gcc/testsuite/g++.old-deja/g++.pt/goto.C new file mode 100644 index 000000000..f138ec2be --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/goto.C @@ -0,0 +1,12 @@ +// { dg-do assemble } + +template +void compute(T) { + goto Exit; +Exit: ; + } + +int main() +{ + compute(0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/goto2.C b/gcc/testsuite/g++.old-deja/g++.pt/goto2.C new file mode 100644 index 000000000..5e4b4f0e3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/goto2.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +int i = 1; + +template void test() +{ + goto lab; + lab: + --i; +} + +int main () +{ + test(); + return i; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C b/gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C new file mode 100644 index 000000000..36a9f5ee4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C @@ -0,0 +1,11 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 28 Nov 2000 + +// Inspired by 756. We'd ICE when trying to define a member of an +// incomplete template type. + +template struct ObjCount; + +template int ObjCount::m; // { dg-error "" } undefined type diff --git a/gcc/testsuite/g++.old-deja/g++.pt/infinite1.C b/gcc/testsuite/g++.old-deja/g++.pt/infinite1.C new file mode 100644 index 000000000..919445be5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/infinite1.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// { dg-options "-ftemplate-depth-10" } +// Test for catching infinitely recursive instantiations. +// Origin: Jason Merrill + + +template void f() +{ + f(); // { dg-error "" } excessive recursion +} + +// We should never need this specialization because we should issue an +// error first about the recursive template instantions. But, in case +// the compiler fails to catch the error, this will keep it from +// running forever instantiating more and more templates. +template <> void f<11>(); + +int main() +{ + f<0>(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/inherit1.C b/gcc/testsuite/g++.old-deja/g++.pt/inherit1.C new file mode 100644 index 000000000..71269a921 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/inherit1.C @@ -0,0 +1,26 @@ +// { dg-do run } +// Origin: Wolfgang Bangerth + +int i = 1; + +struct Base1 { int local1; }; +struct Base2 { int local2; }; + +template class Derived; + +template <> +class Derived<1> : public Base1, public Base2 {}; + +template +class FinalClass : public Derived { +public: + FinalClass () { + if (&this->local1 != &this->local2) + i = 0; + } +}; + +int main () { + FinalClass<1> a1; + return i; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/inherit2.C b/gcc/testsuite/g++.old-deja/g++.pt/inherit2.C new file mode 100644 index 000000000..136050d45 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/inherit2.C @@ -0,0 +1,67 @@ +// { dg-do assemble } + +// Make sure we make the right unqualified class a friend +// See PR c++/4403 + +template struct A +{ + struct AA; + struct AC; +}; + +template class B + :public A +{ + friend struct B::AA; // OK, this has an implicit typename + // as if it is 'friend struct typename B::AA' + // (I think there's a defect report + // about that) + friend struct AC; // this makes ::AC a friend *not* A::AC + + private: // only our friends can get out values + static T valueA_AA; + static T valueA_AC; + static T value_AC; +}; +template T B::valueA_AA; +template T B::valueA_AC;// { dg-error "" "" } private - +template T B::value_AC; // { dg-bogus "" "" } - + +// this one is a friend +template struct A::AA +{ + int M () + { + return B::valueA_AA; + } +}; + +// this is not a friend +template struct A::AC +{ + T M () + { + return B::valueA_AC; // { dg-error "" "" } within this context - + } +}; + +// this is a friend +struct AC +{ + int M () + { + return B::value_AC; // { dg-bogus "" "" } - + } +}; + +B b; +A::AA a_aa; +A::AC a_ac; +AC ac; + +int main () +{ + a_aa.M (); + a_ac.M (); + ac.M (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/inject1.C b/gcc/testsuite/g++.old-deja/g++.pt/inject1.C new file mode 100644 index 000000000..05f4ef235 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/inject1.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S { + struct T* x; +}; + +template struct S<2>; + +T* t; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/inject2.C b/gcc/testsuite/g++.old-deja/g++.pt/inject2.C new file mode 100644 index 000000000..3437ab15e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/inject2.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// { dg-options "-Wno-non-template-friend" } +// Origin: Mark Mitchell + +template +class C { + friend void f(struct X *); +}; + +template class C<0>; + +class D { + friend void f(struct X*); +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/inline1.C b/gcc/testsuite/g++.old-deja/g++.pt/inline1.C new file mode 100644 index 000000000..ea028d845 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/inline1.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// { dg-options "-O2 -Winline" } +// Origin: Mark Mitchell + +template +inline void f () +{ + +} + +void g () +{ + f (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/inline2.C b/gcc/testsuite/g++.old-deja/g++.pt/inline2.C new file mode 100644 index 000000000..1ca2a3cd9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/inline2.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// { dg-options "-O" } +// Origin: Mark Mitchell + +template +struct S { + inline ~S () {} +}; + +template +void f () +{ + static S s; +} + +template void f(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate1.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate1.C new file mode 100644 index 000000000..e44b06353 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate1.C @@ -0,0 +1,22 @@ +// { dg-do assemble } + +template +void f(T t) {} + +template void f(int); +template void f<>(long); + +template +struct S +{ + void bar(int) {} + + template + void baz(U u) {} +}; + + +template struct S; +template void S::bar(int); +template void S::baz(short); +template void S::baz<>(char); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate10.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate10.C new file mode 100644 index 000000000..7d922a87a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate10.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// Origin: Neil Booth, from bug report #44 + +#include + +template +struct X +{ +}; + +template +X operator+(const X&, const X&); + +template<> +X operator+(const X&, const X&); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate11.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate11.C new file mode 100644 index 000000000..6832d1760 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate11.C @@ -0,0 +1,65 @@ +// { dg-do assemble } +// Origin: Neil Booth, from bug report #36 + +template class vect; +template vect operator-( const vect&, const vect& ); + +template +class vect +{ +public: + vect( t a ); + + vect( const vect& v ); + ~vect(); + + vect& operator=( const vect& v ); + vect operator-( void ) const; + friend vect (::operator- <>)( const vect&, const vect& ); + +private: + t a_; +}; + +template inline +vect::vect( t a ) +: a_(a) +{ +} + +template inline +vect::vect( const vect& v ) +: a_(v.a_) +{ +} + +template inline +vect::~vect() +{ +} + +template inline vect& +vect::operator=( const vect& v ) +{ + a_ = v.a_; + return *this; +} + +template inline vect +vect::operator-( void ) const +{ + return vect( -a_ ); +} + +template inline vect +operator-( const vect& u, const vect& v ) +{ + return vect( u.a_ - v.a_ ); +} + +int +main( void ) +{ + vect a( 1.0 ), b( 0.0 ); + b = -a; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate12.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate12.C new file mode 100644 index 000000000..9596bfbf6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate12.C @@ -0,0 +1,61 @@ +// { dg-do run } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 14 Nov 2000 + +// Bug 635. We failed to emit initializer code for out-of-class defined +// static const members of template instantiations. + +static int inited = 0; + +static bool setFlag() +{ + inited++; + return true; +} + +template struct X +{ + static const bool cflag; + static bool flag; + static const bool iflag = true; + static const bool jflag = true; +}; + +template const bool X::cflag (setFlag ()); +template bool X::flag (setFlag ()); +template const bool X::iflag; + +int main () +{ + X a; + if (!a.flag) + return 1; + if (!a.cflag) + return 2; + if (!a.iflag) + return 3; + if (!a.jflag) + return 5; + if (!X::flag) + return 5; + if (!X::cflag) + return 6; + if (!X::iflag) + return 7; + if (!X::jflag) + return 8; + if (inited != 4) + return 9; + return 0; +} + +// On platforms that do not have weak symbols, these static data +// members must be explicitly instantiated. The iflag and jflag data +// members should not have to be explicitly instantiated because their +// const-ness should allow the compiler to elide references to the +// actual variables. +template const bool X::cflag; +template bool X::flag; +template const bool X::cflag; +template bool X::flag; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate13.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate13.C new file mode 100644 index 000000000..efbc93798 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate13.C @@ -0,0 +1,25 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 11 Jan 2001 + +// Bug 1551. We were accessing some uninitialized memory, causing us +// to reject this. + +template +struct base +{ +base(); +base(unsigned); +}; + +template +struct Y +{ +Y(unsigned = 0); +}; + +template <> +Y::Y(unsigned) { } + +base x; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C new file mode 100644 index 000000000..60d5bd52c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C @@ -0,0 +1,12 @@ +// { dg-do assemble } + +template +struct X_two { + template T2 conv_compare_ge(T2 test) { + T2 tmp_value = T2 (0); + return (tmp_value > test ? tmp_value : test); + } +}; + +template int X_two::conv_compare_ge(int); + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate3.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate3.C new file mode 100644 index 000000000..b40e684f3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate3.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +template +struct S +{ + S(const T&) {} + S(int, long); +}; + +template S::S(const double&); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate4.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate4.C new file mode 100644 index 000000000..d7a8cab31 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate4.C @@ -0,0 +1,31 @@ +// { dg-do link } +// { dg-options "-frepo -Werror" } +// { dg-require-host-local "" } +// { dg-skip-if "dkms are not final links" { vxworks_kernel } } + + +// Submitted by Melissa O'Neill +// the vtable of Foo wouldn't be generated + +template +struct Foo { + virtual void foo() {} +}; + +template +struct Bar { + void bar(); +}; + +template +void Bar::bar() { + Foo oof; +} + +int main () { + Bar rab; + + rab.bar(); +} + +// { dg-final { cleanup-repo-files } } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate5-main.cc b/gcc/testsuite/g++.old-deja/g++.pt/instantiate5-main.cc new file mode 100644 index 000000000..be64bdbc4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate5-main.cc @@ -0,0 +1,3 @@ +// this file is part of testcase instantiate5.C + +int main() {} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate5.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate5.C new file mode 100644 index 000000000..21d8b3347 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate5.C @@ -0,0 +1,13 @@ +// { dg-do link } +// { dg-additional-sources " instantiate5.cc instantiate5-main.cc" } + +// `global constructors' are given the same name, based on foo(), on +// both translation units, which is wrong, because it must be possible +// to define template functions in multiple translation units, as long +// as they're given the same definition + +// simplified from test case submitted by Daniel X. Pape + +template void foo() { } +inline int bar() { foo(); return 1; } +static int i = bar(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate5.cc b/gcc/testsuite/g++.old-deja/g++.pt/instantiate5.cc new file mode 100644 index 000000000..fc86e0f83 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate5.cc @@ -0,0 +1,5 @@ +// this file is part of testcase instantiate5.C + +template void foo() { } +inline int bar() { foo(); return 1; } +static int i = bar(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate6.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate6.C new file mode 100644 index 000000000..6726b2166 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate6.C @@ -0,0 +1,29 @@ +// { dg-do link } +// { dg-options "-frepo" } +// { dg-require-host-local "" } +// { dg-skip-if "dkms are not final links" { vxworks_kernel } } + +// Simplified from testcase by Erez Louidor Lior + +template +class foo{ +public: + void g(); + void h(); +}; + +template +void foo::g() { + h(); +} + +template +void foo::h() { +} + +int main() { + foo f; + f.g(); +} + +// { dg-final { cleanup-repo-files } } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate7.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate7.C new file mode 100644 index 000000000..b0145028b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate7.C @@ -0,0 +1,18 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation +// Contributed by Nathan Sidwell 6 July 2000 + +template +void Wibble (void (*fn) (), T *const __restrict__ &p2) +{} +template +void Wibble (T1 *const __restrict__ &p1, T2 *const __restrict__ &p2) +{} + +void Baz (); + +void Foo (void const *ptr) +{ + Wibble (&Baz, ptr); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate8.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate8.C new file mode 100644 index 000000000..ba3b7479b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate8.C @@ -0,0 +1,40 @@ +// { dg-do assemble } +// Copyright (C) 2000, 2002 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 14 Nov 2000 + +// bug 616. We failed to complete the type of decls in templates, leading to +// bogus errors. + +struct Z; +struct Y +{ + Y (int i = 1); +}; +void g () +{ + const Y y; + Z z; // { dg-error "" } incomplete +} + +template +struct X +{ + X (int i=1); +}; + +void h () +{ + const X<2> z; + Z z1; // { dg-error "" } incomplete +} + +template +void f() +{ + const X x; + const X y[3]; + Z z2; // { dg-error "" } incomplete + typedef Z z3; // ok +} + +template void f<3> (); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate9.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate9.C new file mode 100644 index 000000000..14c529fca --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate9.C @@ -0,0 +1,25 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 22 Nov 2000 + +// Bug 789. We ICE'd trying to instantiate B because there was no +// existing partial specialization of C in A. + +template +struct A { + template + struct C { }; +}; + +template +struct B { + typename A::template C s1; +}; + +int main() +{ + B b; + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/koenig1.C b/gcc/testsuite/g++.old-deja/g++.pt/koenig1.C new file mode 100644 index 000000000..03b58587c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/koenig1.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 18 Aug 2000 + +// bug 123. We ICEd when koenig lookup found a COMPONENT_REF inside a +// TEMPLATE_ID_EXPR. + +void foo(void (*f)()); + +struct A { +template +static void g(); +template +void f(); // { dg-error "" } candiate + +static void f_plus () + { + foo (f<0>); // { dg-error "" } no match + foo (g<0>); + } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/label1.C b/gcc/testsuite/g++.old-deja/g++.pt/label1.C new file mode 100644 index 000000000..a8baa0812 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/label1.C @@ -0,0 +1,25 @@ +// { dg-do assemble } + +template +struct S {}; + +template +inline void g(T t) +{ + here: + S st; + goto here; +} + +template +void f(T t) +{ + here: + g(t); + goto here; +} + +void h() +{ + f(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/link1.C b/gcc/testsuite/g++.old-deja/g++.pt/link1.C new file mode 100644 index 000000000..4e31c28bd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/link1.C @@ -0,0 +1,29 @@ +// { dg-do link } +// Origin: Mark Mitchell + +template +int f(T); + +template +struct S { + template + friend int f(U) { return 0; } +}; + +int k = f(2); + +template +int g(T); + +int h = g(7); + +template +int g(T) { + S si; + return 0; +} + +int main() +{ +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/local1.C b/gcc/testsuite/g++.old-deja/g++.pt/local1.C new file mode 100644 index 000000000..d73a03001 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/local1.C @@ -0,0 +1,22 @@ +// { dg-do run } +template inline STRUCT * +setback(MEMBER *bp, MEMBER STRUCT::*offset) +{ + if(!bp) return 0; + union { int i; MEMBER STRUCT::*of; } u; + u.of = offset; + return (STRUCT *) ((__SIZE_TYPE__) bp - u.i); +} + + +struct S +{ + int i; +}; + +int main() +{ + S s; + + S* sp = setback (&s.i, &S::i); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/local2.C b/gcc/testsuite/g++.old-deja/g++.pt/local2.C new file mode 100644 index 000000000..9dee5e56e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/local2.C @@ -0,0 +1,21 @@ +// { dg-do run } +extern "C" void abort(); + +template +void f(T) +{ + struct S { + int i; + } s; + + s.i = 3; + + if (s.i != 3) + abort(); +} + + +int main() +{ + f(7); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/local3.C b/gcc/testsuite/g++.old-deja/g++.pt/local3.C new file mode 100644 index 000000000..6c0fe4573 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/local3.C @@ -0,0 +1,27 @@ +// { dg-do run } +extern "C" void abort(); + +template +void f(T) +{ + int j; + + j = 6; + + struct S { + int i; + }; + + S s; + + s.i = j; + + if (s.i != 6) + abort(); +} + + +int main() +{ + f(7); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/local4.C b/gcc/testsuite/g++.old-deja/g++.pt/local4.C new file mode 100644 index 000000000..b199f1010 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/local4.C @@ -0,0 +1,26 @@ +// { dg-do run } +extern "C" void abort(); + +template +struct S {}; + +S si; + +template +int f(T t) +{ + struct S { + int g(int i) { return i + 2; } + }; + + S s; + + return s.g(t) + s.g(t); +} + + +int main() +{ + if (f(3) != 10) + abort(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/local5.C b/gcc/testsuite/g++.old-deja/g++.pt/local5.C new file mode 100644 index 000000000..851032ab3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/local5.C @@ -0,0 +1,25 @@ +// { dg-do run } +template +class b +{ +private: + char a(int x) + { + union { + int i; + char c; + } val; + val.i = x; + return val.c; + } + +public: + b() { + } +}; + +int main() { + b n; + return 0; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/local6.C b/gcc/testsuite/g++.old-deja/g++.pt/local6.C new file mode 100644 index 000000000..c03c6cd7b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/local6.C @@ -0,0 +1,25 @@ +// { dg-do run } +extern "C" void abort(); + +template +int f(T) +{ + struct S1 { + virtual int foo() { return 1; } + }; + + struct S2 : public S1 { + int foo() { return 2; } + }; + + S1* s2 = new S2; + + return s2->foo(); +} + + +int main() +{ + if (f(3) != 2) + abort(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/local7.C b/gcc/testsuite/g++.old-deja/g++.pt/local7.C new file mode 100644 index 000000000..96b19fc64 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/local7.C @@ -0,0 +1,23 @@ +// { dg-do assemble } + +template inline STRUCT * +setback(MEMBER *bp, MEMBER STRUCT::*offset) +{ + if(!bp) return 0; + union { int i; MEMBER STRUCT::*of; } u; + u.of = offset; + return (STRUCT *) ((__SIZE_TYPE__) bp - u.i); +} + + +struct S +{ + int i; +}; + +int main() +{ + S s; + + S* sp = setback (&s.i, &S::i); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup1.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup1.C new file mode 100644 index 000000000..81417fe63 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup1.C @@ -0,0 +1,14 @@ +// { dg-do assemble } + +template + struct __vector_alloc_base +{ + typedef int allocator_type; +}; + +template + struct vector : __vector_alloc_base +{ + typedef short allocator_type; + explicit vector(const allocator_type& a = allocator_type()) {} +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup10.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup10.C new file mode 100644 index 000000000..1c04250fc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup10.C @@ -0,0 +1,20 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation +// Contributed by Nathan Sidwell 3 July 2000 +// We'd get confused entering a namespace via an alias + +namespace Outer { + namespace Render_Real { + typedef void Type; + } + + namespace Core_Real {} + namespace Core = Core_Real; + + namespace Core_Real { + template void Foo (T *) {} // { dg-error "definition" } + } + + template<> void Core::Foo<> (Render_Real::Type *) {} // { dg-error "" } +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup2.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup2.C new file mode 100644 index 000000000..3d9f0605a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup2.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// { dg-options "-fpermissive" } + +class A +{ +protected: + void f1() {}; +}; + +template class B : private A { +protected: + using A::f1; +}; + +template class D : private B +{ +public: + void f2() { f1(); }; // { dg-warning "" } +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup3.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup3.C new file mode 100644 index 000000000..5a7a03722 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup3.C @@ -0,0 +1,18 @@ +// { dg-do run } +template +class A { +public: + void f() { } +}; + +class B : public A { +public: + void f(); +}; + +int main() +{ + B b; + B& b1 = b; + b1.A::f(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup4.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup4.C new file mode 100644 index 000000000..3fd447cee --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup4.C @@ -0,0 +1,24 @@ +// { dg-do assemble } + +void h(int); + +template +class i {}; + +struct B +{ + int i; +}; + +template +struct D : public B +{ + void f(); + void g() { h(i); } +}; + +template +void D::f() +{ + h(i); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup5.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup5.C new file mode 100644 index 000000000..f3a5d0059 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup5.C @@ -0,0 +1,14 @@ +// { dg-do assemble } + +struct B { + int i; +}; + +struct D: public B { + int i; +}; + +template +struct D2 : public D { + void f() { i = 3; } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup6.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup6.C new file mode 100644 index 000000000..001fedd3d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup6.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +// Based on bug report by Miniussi + +class t {}; + +template struct A { typedef T t; typedef T u; }; + +template struct B : public A { + // according to [temp.dep.type], `t' and `u' cannot be dependent types, + // and so there's no reason to delay lookup to specialization time. + void f(t p); // this is ::t [temp.dep]/3 + void f(typename A::t p); // { dg-bogus "" } redefinition + void g(u p); // { dg-error "" } unknown type name +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup7.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup7.C new file mode 100644 index 000000000..eacdc8972 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup7.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// Origin: Jason Merrill + +struct A { typedef int B; }; +template struct C : public A { + B b; + void f(); +}; + + +template +void C::f() { + B b; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup8.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup8.C new file mode 100644 index 000000000..1662f68c7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup8.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +class X{}; + +class Y : public X +{ + void f(); +}; + +void Y::f() +{ + X x; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup9.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup9.C new file mode 100644 index 000000000..683182c38 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup9.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// Origin: "Artem Hodyush" + +struct B { int m; }; + +template< class T > +void +q( T& t ) { + t.T::m=1; +} + +void f() { + B b; + b.B::m=1; + q( b ); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/m1.C b/gcc/testsuite/g++.old-deja/g++.pt/m1.C new file mode 100644 index 000000000..ac60535b9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/m1.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +int f1 () { + struct A { + A() : b (2) { } + int fred () { return b.hi_mom; } + struct B { + int hi_mom; + B (int a) { hi_mom = a; } + }; + B b; + }; + A aa; + return aa.fred(); +} +/* crashes with signal 11 */ diff --git a/gcc/testsuite/g++.old-deja/g++.pt/m2.C b/gcc/testsuite/g++.old-deja/g++.pt/m2.C new file mode 100644 index 000000000..75346739a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/m2.C @@ -0,0 +1,9 @@ +// { dg-do assemble } + +struct A { A() { a = 2; } int a; }; + +int f1 () { + struct A { A() { a = 2; } int a; }; + A aa; + return aa.a; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/m3.C b/gcc/testsuite/g++.old-deja/g++.pt/m3.C new file mode 100644 index 000000000..788a021ce --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/m3.C @@ -0,0 +1,9 @@ +// { dg-do assemble } + +struct A { A() { a = 2; } int a; }; + +struct B { + struct A { A() { a = 2; } int a; }; + A aa; +}; +char xx[]="../tests/m3.cc:4: redefinition of `struct A'"; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/m4.C b/gcc/testsuite/g++.old-deja/g++.pt/m4.C new file mode 100644 index 000000000..19d5bc638 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/m4.C @@ -0,0 +1,7 @@ +// { dg-do assemble } + +struct A1 { struct B { B(); } b; }; +struct A2 { struct B { ~B(); } b; }; +char xx[] ="../tests/m4.cc:1: warning: return type specification for constructor invalid"; + + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/m5.C b/gcc/testsuite/g++.old-deja/g++.pt/m5.C new file mode 100644 index 000000000..7a78cbe74 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/m5.C @@ -0,0 +1,6 @@ +// { dg-do assemble } + +struct B { struct A { A(); int a; } aa; }; +struct A { A(); int a; }; +B::A::A () { a = 37; } +char xx[]="../tests/m5.cc:3: Segmentation violation"; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/m6.C b/gcc/testsuite/g++.old-deja/g++.pt/m6.C new file mode 100644 index 000000000..24c65b22a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/m6.C @@ -0,0 +1,14 @@ +// { dg-do assemble } + +struct B { struct A { A(); int a; } aa; }; +B::A::A () { a = 37; } +const char* xx[] = { +"../tests/m6.cc:1: warning: return type specification for constructor invalid", +"../tests/m6.cc:2: semicolon missing after declaration of `A'", +"../tests/m6.cc:2: warning: empty declaration", +"../tests/m6.cc: In function int A ():", +"../tests/m6.cc:2: `a' undeclared (first use this function)", +"../tests/m6.cc:2: (Each undeclared identifier is reported only once", +"../tests/m6.cc:2: for each function it appears in.)", +"../tests/m6.cc:2: warning: control reaches end of non-void function" }; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/m7.C b/gcc/testsuite/g++.old-deja/g++.pt/m7.C new file mode 100644 index 000000000..4c7fdd5e9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/m7.C @@ -0,0 +1,13 @@ +// { dg-do assemble } + +struct B { struct A { A(); int a; }; A aa; }; +B::A::A () { a = 37; } +const char *xx[]= {"/*", +"../tests/m7.cc:1: warning: return type specification for constructor invalid", +"../tests/m7.cc: In function struct A A ():", +"../tests/m7.cc:2: `a' undeclared (first use this function)", +"../tests/m7.cc:2: (Each undeclared identifier is reported only once", +"../tests/m7.cc:2: for each function it appears in.)", +"../tests/m7.cc:2: warning: control reaches end of non-void function", + "*/" }; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/m8.C b/gcc/testsuite/g++.old-deja/g++.pt/m8.C new file mode 100644 index 000000000..f87623339 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/m8.C @@ -0,0 +1,22 @@ +// { dg-do assemble } + +class A { + int a; + public: + A (int aa = 3); +}; + +class B { + class A { + public: + A (int, int); + }; + A aa; + public: + B (int); +}; + +extern void foo(); +B::B (int z) : aa (1, z) { + foo (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/m9.C b/gcc/testsuite/g++.old-deja/g++.pt/m9.C new file mode 100644 index 000000000..1fd5a3adb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/m9.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +struct A { A() { a = 1; } int a; }; +struct Q { + struct A { A() { a = 2; } int a; }; + struct R { + struct A { A() { a = 3; } int a; }; + A aaz; + }; + R rrr; + A aay; +} +; + +Q qqq; +A aav; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/m9a.C b/gcc/testsuite/g++.old-deja/g++.pt/m9a.C new file mode 100644 index 000000000..05d2484c9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/m9a.C @@ -0,0 +1,5 @@ +// { dg-do assemble } + +struct A { A() { a = 1; } int a; }; // { dg-error "" } +struct A { A() { a = 2; } int a; }; // { dg-error "" } +A aavv; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/mangle1.C b/gcc/testsuite/g++.old-deja/g++.pt/mangle1.C new file mode 100644 index 000000000..d7be4fbf0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/mangle1.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +typedef enum {} i; + +template +class Bar {}; + +void f (Bar<21>, int) {} +void f (Bar<2>, i) {} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/mangle2.C b/gcc/testsuite/g++.old-deja/g++.pt/mangle2.C new file mode 100644 index 000000000..1bd0e1330 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/mangle2.C @@ -0,0 +1,40 @@ +// { dg-do assemble } +// +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 25 April 2001 +// Origin:pcarlini@unitus.it + +// Bug 2559. We hadn't implemented code to mangle numbers bigger than +// HOST_WIDE_INT. + +template +class integer_traits_base +{ +public: +static const bool is_integral = true; +}; + +template +class integer_traits +{ +public: +static const bool is_integral = false; +}; + +template<> +class integer_traits +: public integer_traits_base +{ }; + +integer_traits f; + +template T foo () +{ + return value; +} + +void x () +{ + foo (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass1.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass1.C new file mode 100644 index 000000000..e1d748a3c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass1.C @@ -0,0 +1,14 @@ +// { dg-do run } +template struct A { + template struct B { + template void f (V) { } + void g () { } + }; +}; + +int main () +{ + A::B b; + b.f (42); + b.g (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass10.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass10.C new file mode 100644 index 000000000..92bd3d383 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass10.C @@ -0,0 +1,10 @@ +// { dg-do assemble } + +struct S1 +{ + template + struct S2 {}; // { dg-error "" } previous definition + + template + struct S2 {}; // { dg-error "" } redefinition +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass11.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass11.C new file mode 100644 index 000000000..47e52c498 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass11.C @@ -0,0 +1,14 @@ +// { dg-do assemble } + +struct S1 +{ + template + struct S2; + + template + struct S2 { + enum E { a }; + }; +}; + +int i = (int) S1::S2::a; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass12.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass12.C new file mode 100644 index 000000000..330416a59 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass12.C @@ -0,0 +1,6 @@ +// { dg-do assemble } + +struct outer { + template struct inner; +} o; +template struct outer::inner {}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass13.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass13.C new file mode 100644 index 000000000..39a3d97b8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass13.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +template +struct Inner; + +template +struct S +{ + template + struct Inner + { + }; +}; + + +S::Inner si; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass14.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass14.C new file mode 100644 index 000000000..d6dc5e0a5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass14.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +template +struct Inner; + +struct S +{ + template + struct Inner + { + }; +}; + + +S::Inner si; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass15.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass15.C new file mode 100644 index 000000000..fd68256aa --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass15.C @@ -0,0 +1,27 @@ +// { dg-do assemble } + +template +struct S1 +{ + template + struct S2 {}; + + template + void f(X, Y, Z) + { + S2 s2z; + } + + template + void g(X, Z) + { + S2 s2z; + } +}; + + +void h() +{ + S1 si; + si.g(3, 4); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass16.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass16.C new file mode 100644 index 000000000..9528a2ceb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass16.C @@ -0,0 +1,13 @@ +// { dg-do assemble } + +template +class A { +public: + + typedef enum { X, Y } B; + template class Traits{ }; +}; + + +template class A; +template class A::Traits::X>; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass17.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass17.C new file mode 100644 index 000000000..0750ded61 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass17.C @@ -0,0 +1,22 @@ +// { dg-do assemble } + +template struct S +{ + template struct I + { + }; + + S(); + S(S& s); + S(I); + + template operator I(); +}; + +S f(); +void g(S); + +void h() +{ + g(f()); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass18.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass18.C new file mode 100644 index 000000000..df9a12976 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass18.C @@ -0,0 +1,9 @@ +// { dg-do assemble } + +template struct A { + template struct B; +}; + +template template struct A::B { }; + +A::B b; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass19.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass19.C new file mode 100644 index 000000000..d345e5814 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass19.C @@ -0,0 +1,9 @@ +// { dg-do assemble } + +template struct A { + template struct B; +}; + +template template struct A::B { }; + +A::B b; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass2.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass2.C new file mode 100644 index 000000000..bfad59687 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass2.C @@ -0,0 +1,19 @@ +// { dg-do run } +template struct A { + template struct B { + template void f (V) { } + void g () { } + }; + template struct B { + void h () { } + }; +}; + +int main () +{ + A::B b; + b.f (42); + b.g (); + A::B b2; + b2.h (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass20.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass20.C new file mode 100644 index 000000000..f543be6af --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass20.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S{}; + +template +struct S { + template + struct I {}; +}; + +template +void f() { + typename S::template I si; +} + +template void f(); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass21.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass21.C new file mode 100644 index 000000000..7ac87a785 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass21.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// Origin: kosak@cs.cmu.edu + +struct moo { + template struct cow {}; + + template + struct moo2 { + void func(cow &c) { } + }; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass3.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass3.C new file mode 100644 index 000000000..d2f0449fa --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass3.C @@ -0,0 +1,22 @@ +// { dg-do run } +template struct A { + template struct B { + template struct C { + template struct D { + template struct E { + template struct F { + template void f (Z) { } + void g () { } + }; + }; + }; + }; + }; +}; + +int main () +{ + A::B::C::D::E::F b; + b.f (42); + b.g (); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass4.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass4.C new file mode 100644 index 000000000..04e3acef9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass4.C @@ -0,0 +1,24 @@ +// { dg-do run } +#include + +template +struct allocator { + typedef T* pointer; + + template struct rebind { + typedef allocator other; + }; +}; + +template +struct alloc_traits +{ + typedef typename Allocator::template rebind::other allocator_type; +}; + +int main () +{ + typedef alloc_traits >::allocator_type at; + + return typeid (at) != typeid (allocator ); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass5.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass5.C new file mode 100644 index 000000000..95dffba5b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass5.C @@ -0,0 +1,23 @@ +// { dg-do run } +template struct A { + template struct B { + template static void f () { } + void g () { } + }; +}; + +template +void f () +{ + A::template B::template f (); + typename A::template B b; + typename A::template B b2; + b.A::template B::~B(); +} + +template struct C: public A::template B { }; + +int main () +{ + f(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass6.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass6.C new file mode 100644 index 000000000..b462b920f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass6.C @@ -0,0 +1,19 @@ +// { dg-do run } +// Compiler: egcs-2.91.12 980302 +// Error: compiler error in ctor of 'foo::bar::bar(T const &)' + +struct foo +{ + template + struct bar + { + bar(T const &t) : tt(t) {} + T tt; + }; +}; + +int main() +{ + foo::bar fb(3); + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass7.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass7.C new file mode 100644 index 000000000..ec9c58cc0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass7.C @@ -0,0 +1,20 @@ +// { dg-do run } +// { dg-options "-ansi -pedantic-errors -w" } +struct S +{ + template + struct Y { + template + void foo(T t); + }; +}; + +template <> +template <> +void S::Y::foo(int i) { } + +int main() +{ + S::Y s; + s.foo(3.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass8.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass8.C new file mode 100644 index 000000000..1e757e7ca --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass8.C @@ -0,0 +1,11 @@ +// { dg-do assemble } + +template +class S +{ + template + struct S2 { + S2(const S2& s2u) {} + }; +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass9.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass9.C new file mode 100644 index 000000000..0795d69bf --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass9.C @@ -0,0 +1,32 @@ +// { dg-do assemble } + +template +struct S1 +{ + template + struct S2 + { + S2(U); + + void g() + { + S2 s2u (u); + } + + U& u; + }; + + template + void f(U u) + { + S2 s2u(u); + s2u.g(); + } +}; + +void g() +{ + S1 s1; + s1.f(3.0); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp1.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp1.C new file mode 100644 index 000000000..5aa83dd42 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp1.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +struct S { + template + void foo(T&); +}; + + +template +void S::foo(T&) +{ +} + + + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp10.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp10.C new file mode 100644 index 000000000..d97f949de --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp10.C @@ -0,0 +1,24 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +struct S { + template + operator T*(); +}; + + +template +S::operator T*() +{ + printf("Hello, world.\n"); + return 0; +} + + +int main() +{ + S s; + + char* cp = s.operator char*(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C new file mode 100644 index 000000000..c0495233a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C @@ -0,0 +1,40 @@ +// { dg-do assemble } +// { dg-options "" } +// Origin: philippeb@videotron.ca + +#include + +using namespace std; + +template struct traits +{ + typedef long next; +}; + + +template +struct c1 +{ + template + struct c2 + { + c2() + { + cout << __PRETTY_FUNCTION__ << endl; + } + }; +}; + + +template +void foo() +{ + cout << __PRETTY_FUNCTION__ << endl; + typename c1::next>::template c2(); +} + + +int main() +{ + foo(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp11.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp11.C new file mode 100644 index 000000000..8e8c3c1ac --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp11.C @@ -0,0 +1,27 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +struct S +{ + template + S(U u, int i) {} + + template + T foo(T t) + { + printf("Hello, world.\n"); + return t; + } +}; + + +int main() +{ + S s(3, 4); + int i = s.foo(3); + s.foo("hello"); + s.foo(s); + + S s2("hello", 5); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp12.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp12.C new file mode 100644 index 000000000..b390becb9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp12.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct S +{ + template + void foo(U); +}; + +void f() +{ + S s; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp13.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp13.C new file mode 100644 index 000000000..3a19f65e7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp13.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct S +{ + template + void foo(U); +}; + +void f() +{ + S s; + s.foo(3); + s.foo("hello"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp14.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp14.C new file mode 100644 index 000000000..015aa25dc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp14.C @@ -0,0 +1,30 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf (const char *, ...); + +template +struct S +{ + template + void foo(U, V); +}; + + +template +template +void S::foo(U, V) +{ + printf("Hello, world.\n"); +} + + +int main() +{ + S s; + s.foo(3, 3); + s.foo("hello", s); + + S s2; + s2.foo(3, 3); + s2.foo("hello", s); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp15.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp15.C new file mode 100644 index 000000000..b9b69873a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp15.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct S +{ + template + void foo(U) {} +}; + + +void f() +{ + S s; + s.foo(3); + s.foo("hello"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp16.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp16.C new file mode 100644 index 000000000..c5597eab7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp16.C @@ -0,0 +1,30 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +template +struct S { + template + void operator+(T); +}; + +template +template +void S::operator+(T) +{ + printf("Hello, world.\n"); +} + + +int main() +{ + S s; + s + 3; + s + s; + s.operator+("Hi"); + + S > s2; + s2 + 3; + s2 + s; + s2.operator+("Hi"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp17.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp17.C new file mode 100644 index 000000000..4e8442457 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp17.C @@ -0,0 +1,26 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +template +struct S { + template + S(T, U, T); +}; + + +template +template +S::S(T t1, U u1, T t2) +{ + printf("Hello, world.\n"); +} + + +int main() +{ + S s1(3, "abc", 3); + S s2('a', s1, 'a'); + + S s3("abc", 3, "abc"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp18.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp18.C new file mode 100644 index 000000000..b51f4dbe7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp18.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +struct S +{ + template + void foo(T) {} +}; + +template void S::foo(int); + +int main() +{ + S s; + s.foo(3); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp19.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp19.C new file mode 100644 index 000000000..2f9dec9ae --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp19.C @@ -0,0 +1,25 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +struct S { + template + operator T(); +}; + +template +S::operator T() +{ + printf("Hello, world.\n"); + return T(); +} + + +template S::operator int(); + +int main() +{ + S s; + + int i = s.operator int(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp2.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp2.C new file mode 100644 index 000000000..5c870fe52 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp2.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +struct S { + template + void foo(T&); +}; + + +template +void S::foo(U&) +{ +} + + + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp20.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp20.C new file mode 100644 index 000000000..0295c9786 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp20.C @@ -0,0 +1,43 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +struct S +{ + template + void foo(T t, U u); + + template + void foo(char*, U); + + void foo(int i); +}; + +template +void S::foo(T t, U u) +{ + printf ("T,U version\n"); +} + + +template +void S::foo(char*, U u) +{ + printf ("char*,U version\n"); +} + + +void S::foo(int i) +{ + printf ("int version\n"); +} + + +int main() +{ + S s; + s.foo(3); + s.foo(3, 3); + s.foo("abc", s); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C new file mode 100644 index 000000000..3111f41b5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C @@ -0,0 +1,24 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +template +struct S +{ + S() + { printf ("In S::S()\n"); f(3); } + + S(char) + { printf ("In S::S(char)\n"); f(*this); } + + template + void f(U u) + { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } + + int c[16]; +}; + +int main() +{ + S s; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C new file mode 100644 index 000000000..4e81d015d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C @@ -0,0 +1,25 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +template +struct S +{ + S() + { printf ("In S::S()\n"); f(3); } + + S(char) + { printf ("In S::S(char)\n"); f(*this); } + + template + void f(U u) + { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } + + int c[16]; +}; + +int main() +{ + S s; + S s2('a'); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C new file mode 100644 index 000000000..6c196f5d4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C @@ -0,0 +1,20 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +template +struct S +{ + template + void f(U u) { printf ("%d\n", sizeof (U)); } + + int i[4]; +}; + + +int main() +{ + S s; + s.f(3); + s.f(s); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C new file mode 100644 index 000000000..3eb5f287d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C @@ -0,0 +1,28 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +template +struct S +{ + template + void f(U u); + + int i[4]; +}; + + +template +template +void S::f(U u) +{ + printf ("%d\n", sizeof (U)); +} + + +int main() +{ + S s; + s.f(3); + s.f(s); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp28.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp28.C new file mode 100644 index 000000000..4be565a04 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp28.C @@ -0,0 +1,28 @@ +// { dg-do run } +extern "C" void abort(); + +int k; + +template +struct S +{ + template + void f(U u) + { ++k; g(u); } + + template + void g(U u) + { ++k; } + + int c[16]; +}; + +int main() +{ + S s; + s.f(3); + s.f("adf"); + + if (k != 4) + abort(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp29.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp29.C new file mode 100644 index 000000000..808f233c6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp29.C @@ -0,0 +1,32 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +template +struct S +{ + template + void f(U u); + + template + void g(U u); + + int c[16]; +}; + +template +template +void S::f(U u) + { printf ("In S::f(U)\n"); g(u); } + +template +template +void S::g(U u) + { printf ("In S::g(U)\n"); } + +int main() +{ + S s; + s.f(3); + s.f("adf"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp3.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp3.C new file mode 100644 index 000000000..c3b78533f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp3.C @@ -0,0 +1,24 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +struct S { + template + void foo(T); +}; + + +template +void S::foo(T) +{ + printf("Hello, world.\n"); +} + + + +int main() +{ + S s; + s.foo(3); + s.foo(s); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp30.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp30.C new file mode 100644 index 000000000..6a24d2e25 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp30.C @@ -0,0 +1,17 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +template +struct S +{ + template + void g(U u) { this; } +}; + + +int main() +{ + S s; + s.g(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp31.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp31.C new file mode 100644 index 000000000..ad6688718 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp31.C @@ -0,0 +1,16 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +struct S +{ + template + void g(U u) + { this; } +}; + +int main() +{ + S s; + s.g(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp32.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp32.C new file mode 100644 index 000000000..6dca7e5a0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp32.C @@ -0,0 +1,18 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +struct S +{ + template + void g(U u) + { i = 3; } + + int i; +}; + +int main() +{ + S s; + s.g(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp33.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp33.C new file mode 100644 index 000000000..917da1ef2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp33.C @@ -0,0 +1,19 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +template +struct S +{ + template + void g(U u) + { i; } + + int i; +}; + +int main() +{ + S s; + s.g(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp34.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp34.C new file mode 100644 index 000000000..178baceb9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp34.C @@ -0,0 +1,16 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +template +struct S +{ + template + static void f(U u) + {} +}; + +int main() +{ + S::f(3); + S::f("abc"); + S::f("abc"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp35.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp35.C new file mode 100644 index 000000000..11cc223ad --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp35.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct S +{ + S(const S& s) {} + + template + S(S& s) + { + S s2(s); + } +}; + + +extern S& si; + +void foo() +{ + S sc(si); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp36.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp36.C new file mode 100644 index 000000000..ab035a700 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp36.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct R +{ +}; + + +template +struct S +{ + template + S(R r); +}; + + +void foo() +{ + R r; + S s(r); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp37.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp37.C new file mode 100644 index 000000000..6299b0da7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp37.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct S +{ + template + void f(U u); +}; + + +template +template +void S::f(U) +{ +} + +enum +{ + a = 3 +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp39.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp39.C new file mode 100644 index 000000000..f74deb49d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp39.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct S +{ + template + void f(U u) { g(u); } + + template + void g(U u) { f(u); } +}; + +void foo() +{ + S si; + si.f(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp4.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp4.C new file mode 100644 index 000000000..9dca76a3a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp4.C @@ -0,0 +1,12 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +struct S { + template + void operator+(T); +}; + + +template +void S::operator+(T) +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp40.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp40.C new file mode 100644 index 000000000..40ae3e6ea --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp40.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct R +{ + template + void g(U u) {} +}; + +template +struct S +{ + template + void f(U u) { R r; r.g(u); } +}; + +void foo() +{ + S si; + si.f("abc"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp41.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp41.C new file mode 100644 index 000000000..539b8451c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp41.C @@ -0,0 +1,7 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct S +{ + static void foo() {} +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp42.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp42.C new file mode 100644 index 000000000..ea68f49fd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp42.C @@ -0,0 +1,22 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +template +class Foo { + +public: + template + Foo operator=(const Foo& z) + { + return Foo(); + } +}; + +int main() +{ + Foo x; + Foo y; + x = y; + + return 0; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp43.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp43.C new file mode 100644 index 000000000..417317118 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp43.C @@ -0,0 +1,16 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +template +class A +{ +public: + template + void operator=(A const & a) { return; } +}; + +int main() +{ + A a; + A b; + a = b; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp44.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp44.C new file mode 100644 index 000000000..a4a37df91 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp44.C @@ -0,0 +1,20 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +template +class A +{ +}; + +template<> +class A +{ +public: + template + void func(U v1) {} +}; + +int main() +{ + A a; + a.func(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp45.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp45.C new file mode 100644 index 000000000..935e8621d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp45.C @@ -0,0 +1,20 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +template +class A +{ +}; + +template<> +class A +{ +public: + template + void func(U v1 = 0) {} +}; + +int main() +{ + A a; + a.func(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp46.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp46.C new file mode 100644 index 000000000..6afbc6541 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp46.C @@ -0,0 +1,20 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +template +class A +{ +}; + +template +class A +{ +public: + template + void func(V v1 = 0) {} +}; + +int main() +{ + A a; + a.func("abc"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp47.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp47.C new file mode 100644 index 000000000..7ed5a2492 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp47.C @@ -0,0 +1,29 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +template +struct S +{ + template + void g(U u) + { printf ("In S::g(U)\n"); } + + int c[16]; +}; + + +template +struct T : public S +{ + template + void f(U u) + { printf ("In T::f(U)\n"); g(u); } +}; + +int main() +{ + T t; + t.f(3); + t.f("adf"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp48.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp48.C new file mode 100644 index 000000000..619ca66cd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp48.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +struct S +{ + template + void f(T t1, T t = T()) + {} +}; + + +void foo() +{ + S si; + si.f(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp49.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp49.C new file mode 100644 index 000000000..381510b15 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp49.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct S +{ + template + void f(T t1, T t = T()) + {} +}; + + +void foo() +{ + S si; + si.f(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp5.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp5.C new file mode 100644 index 000000000..faff68714 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp5.C @@ -0,0 +1,25 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +struct S { + template + void operator+(T); +}; + + +template +void S::operator+(T) +{ + printf("Hello, world.\n"); +} + + + +int main() +{ + S s; + s + 3; + s + s; + s.operator+("Hi"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp52.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp52.C new file mode 100644 index 000000000..f8ae90618 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp52.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +class A { }; + +template +struct X { + template + void f(A&, A&) + { } +}; + + +void foo() +{ + X<3> x; + A a1; + A a2; + x.f(a1, a2); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp53.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp53.C new file mode 100644 index 000000000..688f480d0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp53.C @@ -0,0 +1,36 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +template +struct I { +}; + +template +struct A { + + int r; + + template + void operator()(T1, T2) + { r = 0; } + + template + void operator()(I, I) + { r = 1; } +}; + +int main() +{ + A x; + I<0> a; + I<1> b; + + x(a,b); + if (x.r != 1) + return 1; + + x(float(), double()); + if (x.r != 0) + return 1; + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp55.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp55.C new file mode 100644 index 000000000..5c799198b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp55.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template class _bz_update { }; + +template +struct S { +template +void foo() { _bz_update(); } +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp56.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp56.C new file mode 100644 index 000000000..2000a351c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp56.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +class TinyVector {}; + +template +struct Array +{ + template + Array() {} + + template + P_numtype operator()(const TinyVector& index) const {} +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C new file mode 100644 index 000000000..78111c710 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C @@ -0,0 +1,30 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct B { +}; + +template +struct D { + struct E { + template + static void f(B) + { } + }; +}; + +template +struct A { + template + static void f(B, B b) + { + typedef typename D::E E; + E::f(b); + } +}; + +void foo() +{ + A<5>::f(B<5,float>(),B<3,float>()); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp59.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp59.C new file mode 100644 index 000000000..4ac85f5ee --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp59.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +template +struct IndexPlaceholder {}; + +template +struct ArrayIndexMapping {}; + +template +struct Array +{ + template + ArrayIndexMapping + f(IndexPlaceholder, IndexPlaceholder); +}; + + +template +void foo(T_numtype) +{ + Array t; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp6.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp6.C new file mode 100644 index 000000000..d7675cb8e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp6.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +struct S { + template + S(T, U, T); +}; + + +template +S::S(T, U, T) +{ +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp60.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp60.C new file mode 100644 index 000000000..d0d5b0b65 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp60.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// GROUPS passed membertemplates +template +struct S +{ + S(const S& x) {} + + template + S(const S& x) {} +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp61.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp61.C new file mode 100644 index 000000000..2e65e817b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp61.C @@ -0,0 +1,20 @@ +// { dg-do link } +// GROUPS passed membertemplates +struct S +{ + template + void foo(T t); +}; + + +template <> +void S::foo(int i) +{ +} + + +int main() +{ + S s; + s.foo(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp62.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp62.C new file mode 100644 index 000000000..d25ddfa9a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp62.C @@ -0,0 +1,20 @@ +// { dg-do link } +// GROUPS passed membertemplates +struct S +{ + template + void foo(T t); +}; + + +template <> +void S::foo(int i) +{ +} + + +int main() +{ + S s; + s.foo(3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp63.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp63.C new file mode 100644 index 000000000..62a52a16d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp63.C @@ -0,0 +1,14 @@ +// { dg-do run } +template struct A { + template void f (U u); +}; + +A a; + +template template void A::f (U u) { } + +int main() +{ + a.f (24); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C new file mode 100644 index 000000000..dda0a63b4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C @@ -0,0 +1,21 @@ +// { dg-do assemble } + +template +struct S1 {}; + +template +void f(T); + +template +struct S2 +{ + template + void f >(T) {} // { dg-error "" } bad specialization. +}; + + +template +struct S3 +{ + friend class S2; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp65.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp65.C new file mode 100644 index 000000000..76eab7f1f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp65.C @@ -0,0 +1,23 @@ +// { dg-do assemble } + +template struct PartialDotProduct { + template + static T Expand(T* a, T* b) { return T(); } +}; + +const int N = 10; + +template +void +dot(In1 f1, In2 f2) +{ + PartialDotProduct::Expand(f1, f2); + +} + +int main() +{ + double a[N], b[N]; + + dot(&a[0], &b[0]); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp66.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp66.C new file mode 100644 index 000000000..b6e8b6ff4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp66.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +template +struct S +{ + template + void f(U u) { this->template f<>(3); } +}; + + +void g() +{ + S s; + s.f(1.0); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp67.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp67.C new file mode 100644 index 000000000..1f25dcd4d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp67.C @@ -0,0 +1,20 @@ +// { dg-do run } +template +struct A +{ + template + operator A() const { return A(); } +}; + +int main() +{ + A a1; + A a2; + A a3; + A a4; + + a2 = a1.operator A(); + a3 = (A) a1; + a4 = a1; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp68.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp68.C new file mode 100644 index 000000000..63a7014a4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp68.C @@ -0,0 +1,9 @@ +// { dg-do assemble } + + struct locale + { + template + locale (const locale&, _Facet*); + locale(int*) throw(); + }; + void f(int* p) { locale keep (p); } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp69.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp69.C new file mode 100644 index 000000000..9b47d441e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp69.C @@ -0,0 +1,36 @@ +// { dg-do run } +struct S +{ + template + void f(T (&i)[7]) + {} + + void g() + { + int i[] = {1, 2, 3, 4, 5, 6, 7}; + f(i); + int j[7]; + f(j); + } +}; + +struct foo { + template + static T* array_end(T(&array)[N]) { return &array[N]; } +}; + +struct X +{ + template + void f(const T1&) {} +}; + +int main(int ac, char* av[]) { + S s; + s.g(); + int i[] = {1,2,3,4,5}; + int* e = foo::array_end(i); + X x; + x.f("hello"); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp7.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp7.C new file mode 100644 index 000000000..02b1fc6bd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp7.C @@ -0,0 +1,22 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +struct S { + template + S(T, U, T); +}; + + +template +S::S(T t1, U u1, T t2) +{ + printf("Hello, world.\n"); +} + + +int main() +{ + S s1(3, "abc", 3); + S s2('a', s1, 'a'); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C new file mode 100644 index 000000000..8873a3954 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C @@ -0,0 +1,24 @@ +// { dg-do assemble } + +template +class X { +public: + T x; +}; + +class Y { +public: + template static void f(X& a) {} + + void g(void); +}; + +void +Y::g(void) +{ + X a; + + f(a); +} + + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp71.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp71.C new file mode 100644 index 000000000..74149a005 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp71.C @@ -0,0 +1,6 @@ +// { dg-do assemble } + +class A +{ + templateT epsilon; // { dg-error "" } invalid member template +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp72.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp72.C new file mode 100644 index 000000000..26bd4bc18 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp72.C @@ -0,0 +1,17 @@ +// { dg-do assemble } + +template struct B +{ + template void f(T& t) { t = T(); } +}; + +enum ptype { t1, t2}; + +struct D : public B +{ + void g(double& d) { f(d); } +}; + + +D d; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp73.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp73.C new file mode 100644 index 000000000..5580d9063 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp73.C @@ -0,0 +1,19 @@ +// { dg-do run } +template struct A { + template void f(U); +}; + +template struct B { }; + +template template +void A::f (U) +{ + enum { foo }; + B b; +} + +int main () +{ + A a; + a.f (42); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp74.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp74.C new file mode 100644 index 000000000..1b64a6509 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp74.C @@ -0,0 +1,21 @@ +// { dg-do assemble } + +template +class S +{ +protected: + template + void f(U); // { dg-error "" } is protected + +private: + template + void g(U); // { dg-error "" } is private +}; + + +void f() +{ + S s; + s.f(3); // { dg-error "" } within this context + s.g(2.0); // { dg-error "" } within this context +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp75.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp75.C new file mode 100644 index 000000000..54e8bc7bb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp75.C @@ -0,0 +1,25 @@ +// { dg-do assemble } + +void +print(const int& i) +{ +} + +template +class bar +{ +public: + template + void doit(const A& a) + { + B(a); + } +}; + + +int +main() +{ + bar b; + b.doit(2); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp76.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp76.C new file mode 100644 index 000000000..e11fe02b3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp76.C @@ -0,0 +1,17 @@ +// { dg-do assemble } + +class base +{ +public: + virtual void method()=0; +}; + +class der: public base +{ +public: + template + void method() + { + C foo; + } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C new file mode 100644 index 000000000..e3ca5298d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C @@ -0,0 +1,26 @@ +// { dg-do run } +extern "C" int strcmp(const char*, const char*); + +template +struct S3 +{ + template + static const char* h(U); +}; + +template <> +template <> +const char* S3::h(int) { return __PRETTY_FUNCTION__; } + +template <> +template <> +const char* S3::h(int) { return __PRETTY_FUNCTION__; } + +int main() +{ + if (strcmp (S3::h(7), + "static const char* S3::h(U) [with U = int, T = double]") == 0) + return 0; + else + return 1; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp78.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp78.C new file mode 100644 index 000000000..73348351f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp78.C @@ -0,0 +1,56 @@ +// { dg-do assemble } + +struct A +{ + void f() {} + + template + void f() {} +}; + + +template +struct B +{ + void f() {} + + template + void f() {} +}; + +template struct B; + +struct C +{ + template + void f() {} // { dg-error "with" } redeclaration + + template + void f() {} // { dg-error "overloaded" } redeclaration +}; + + +template +struct D +{ + void f(T); + void f(U); +}; + +template struct D; + +template +struct D2 +{ + void f(T); // { dg-error "with" } redeclaration + void f(U); // { dg-error "overloaded" } redeclaration +}; + +template struct D2; + +struct E +{ + void f(); // { dg-error "with" } redeclaration + void f(); // { dg-error "overloaded" } redeclaration +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp79.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp79.C new file mode 100644 index 000000000..7d31184aa --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp79.C @@ -0,0 +1,6 @@ +// { dg-do assemble } + +struct foo { + template static void bar( foo* ); + template void bar() const; // { dg-bogus "" } quals +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp8.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp8.C new file mode 100644 index 000000000..d2b0e8670 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp8.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed templates membertemplates +struct S { + template + operator T(); +}; + + +template +S::operator T() +{ +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp80.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp80.C new file mode 100644 index 000000000..878a3dfa0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp80.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +template T baz() { return 0; } + +struct foo { + template static T staticbar() { return 0; } + template T bar() { return 0; } +}; + +void f() +{ + foo t; + int i = baz(); + int j = foo::staticbar(); + int k = t.bar(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp81.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp81.C new file mode 100644 index 000000000..37a3417bf --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp81.C @@ -0,0 +1,24 @@ +// { dg-do assemble } + +template class a +{ +public : +int k; + +template int f() const { return this->f(); } + +int g() const { return f(); } +}; + +template <> +template <> +int a<2>::f<0>() const { + return 0; +} + +int main() +{ +a<2> x; +return x.g(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C new file mode 100644 index 000000000..2bb6552f2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C @@ -0,0 +1,12 @@ +// { dg-do assemble } + +struct foo { + template T bar() { return staticbar( this ); } + template static T staticbar( foo* ) { return 0; } +}; + +void f() +{ + foo t; + int k = t.bar(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp83.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp83.C new file mode 100644 index 000000000..f73436c90 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp83.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// Origin: Corey Kosak + +struct cow_t { + template + static void tfunc(cow_t *cowp) {} + + void moo() { + cow_t *cowp; + tfunc(cowp); + } +}; + + +int main() +{ + cow_t *cowp; + cow_t::tfunc(cowp); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp84.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp84.C new file mode 100644 index 000000000..6ebade28d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp84.C @@ -0,0 +1,18 @@ +// { dg-do assemble } + +// Copyright (C) 1999 Free Software Foundation + +// by Alexandre Oliva +// simplified from bug report by redleaf + +struct B { + template void bar(); +} b; + +template void foo() { + b.bar(); // { dg-bogus "" } bar undeclared + b.template bar(); // { dg-bogus "" } ditto + b.B::bar(); +} + +template void foo(); // { dg-bogus "" } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp85.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp85.C new file mode 100644 index 000000000..03e3d4675 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp85.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +// by Paul Burchard , Level Set Systems, Inc. +// Copyright (C) 1999 Free Software Foundation + +struct Q { + template + class X { + }; +}; +template class> +class Y { +}; +Y y1; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp86.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp86.C new file mode 100644 index 000000000..382590683 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp86.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +// by Paul Burchard , Level Set Systems, Inc. +// Copyright (C) 1999 Free Software Foundation + +struct Q { + template + class X { + }; +}; +template class> +class Y { +}; +Y y; // { dg-error "" } typename out of template context + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp87.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp87.C new file mode 100644 index 000000000..99b4cd384 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp87.C @@ -0,0 +1,16 @@ +// { dg-do assemble } + +// by Paul Burchard , Level Set Systems, Inc. +// Copyright (C) 1999, 2002 Free Software Foundation + +class Q { +public: + template + class X { + }; +}; +template class> +class Y { +}; +Q::template X x; // { dg-error "" } template syntax + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp88.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp88.C new file mode 100644 index 000000000..98de9aa4d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp88.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +// by Paul Burchard , Level Set Systems, Inc. +// Copyright (C) 1999 Free Software Foundation + +struct Q { + template + class X { + }; + template class XX = X> // { dg-bogus "" } (original definition appeared here) + class Y { + }; // { dg-bogus "" } redefinition of default argument for `template XX' + Y<> y; +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp89.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp89.C new file mode 100644 index 000000000..d4d560eed --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp89.C @@ -0,0 +1,15 @@ +// { dg-do assemble } + +// by Paul Burchard , Level Set Systems, Inc. +// Copyright (C) 1999, 2000 Free Software Foundation + +class Q { + template + class X { // { dg-error "" } Q::X private + }; +}; +template class XX> +class Y { + XX x_; +}; +Y y; // { dg-error "" } instantiated from here diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp9.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp9.C new file mode 100644 index 000000000..5522d94f9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp9.C @@ -0,0 +1,22 @@ +// { dg-do link } +// GROUPS passed templates membertemplates +extern "C" int printf(const char*, ...); + +struct S { + template + operator T(); +}; + +template +S::operator T() +{ + printf("Hello, world.\n"); + return T(); +} + +int main() +{ + S s; + + int i = s.operator int(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp90.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp90.C new file mode 100644 index 000000000..3e24a6879 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp90.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// regression test - + +// by Paul Burchard , Level Set Systems, Inc. +// Copyright (C) 1999 Free Software Foundation +// related to bug report by Leon Bottou + +struct A { + template + struct B { + }; + template + struct C { + B b; // { dg-bogus "" } B is not a template + // but removing wrapper A gets rid of complaint + // also, replacing B with A::B also gets rid of complaint + }; +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp91.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp91.C new file mode 100644 index 000000000..18b52a433 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp91.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// regression test - + +// simplified from bug report by Leon Bottou +// by Paul Burchard , Level Set Systems, Inc. +// Copyright (C) 1999 Free Software Foundation + +struct A { + template + struct B { + T x; + }; + template + struct C : B { + C() {} + }; +}; + + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp92.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp92.C new file mode 100644 index 000000000..ad86f79af --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp92.C @@ -0,0 +1,30 @@ +// { dg-do assemble } +// Origin: "Adam J. Richter" + +template +class theme_map { +}; + +class QWidget { +protected: + virtual void *harmony_get_list_for_signal(const char *) const; + +public: + static theme_map ContentsThemes; + +protected: + virtual void updateDrawingObjects (void) + { + update_dro (QWidget::ContentsThemes); + } + + template + void update_dro (theme_map& themes) + { + } +}; + +void *QWidget::harmony_get_list_for_signal(const char *sig) const +{ + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp93.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp93.C new file mode 100644 index 000000000..d5cba8cfa --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp93.C @@ -0,0 +1,16 @@ +// { dg-do link } +// Origin: Mark Mitchell + +template struct A { + template A (T t); + template int f(T t) const; +}; + +template <> template int A<1>::f(T t) const {return 1;} +template <> template A<1>::A (T t) {} + +int main() { + A<1> a (3); + a.f(1); + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp94.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp94.C new file mode 100644 index 000000000..b933a73ef --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp94.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// Origin: Theodore Papadopoulo + +struct H { + template void k() const { } + typedef void (H::*pmf)() const; + + pmf f() const { return &H::k; } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp95.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp95.C new file mode 100644 index 000000000..ea70393a5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp95.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// Origin: Mark Mitchell + +template +struct S +{ +}; + +template +struct S +{ + template + void f (U); +}; + +template +template +void S::f (U) +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp96.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp96.C new file mode 100644 index 000000000..52519fad6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp96.C @@ -0,0 +1,34 @@ +// { dg-do run } +// Test for partial specialization of a member function template. +// Origin: Jason Merrill + +template struct A { + template int f(U) { return 42; } +}; + +template <> +template +int A::f(U); + +template <> +template +int A::f(U) { return 24; } + +int main () +{ + A ai; + if (ai.f(0) != 42) + return 1; + + A ad; + if (ad.f(0) != 24) + return 1; + + A ac; + if (ac.f(0) != 36) + return 1; +} + +template <> +template +int A::f(U) { return 36; } diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp97.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp97.C new file mode 100644 index 000000000..e00c3bb28 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp97.C @@ -0,0 +1,17 @@ +// { dg-do run } +// Origin: Mark Mitchell + +template struct A { + template int f(U) { return 1; } +}; + +template <> +template +int A::f(U) { return 0; } + +A a; + +int main () +{ + return a.f (3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp98.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp98.C new file mode 100644 index 000000000..e8e977070 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp98.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +//Purpose: +// Test nested template as template template arg. +//Result: +// Before the patch, got: +// `C' is not a template + +template