ChangeLog-2019 318 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218
  1. 2019-12-30 Corentin Gay <gay@adacore.com>
  2. * acinclude.m4 (vxworks*): New entry. Set ac_has_nanosleep=yes.
  3. * configure: Regenerate.
  4. 2019-12-30 Jerome Lambourg <lambourg@adacore.com>
  5. Olivier Hainque <hainque@adacore.com>
  6. * config/os/vxworks/os_defines.h
  7. (NOMINMAX): Always redefine to 1.
  8. (_NO_CPP_INLINES): Likewise.
  9. (_GLIBCXX_USE_WEAK_REF): Define to 1 for RTP on
  10. VxWorks >= 7, to 0 otherwise.
  11. (_GLIBCXX_HAVE_TLS): Define to 1.
  12. For VxWorks >= 7:
  13. (_GLIBCXX_USE_C99_MATH): Define to 1.
  14. (_GLIBCXX_USE_C99_MATH_FP_MACROS_DYNAMIC): Define to 0.
  15. (_HAS_TR1_DECLARATIONS): Redefine to 0.
  16. For VxWorks < 7, RTP:
  17. (_GLIBCXX_INCLUDE_NEXT_C_HEADERS): Define to 1.
  18. (_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC): Redefine to 1.
  19. (__CORRECT_ISO_CPP11_MATH_H_PROTO_FP): Define.
  20. For VxWorks < 7, kernel: #include <vxWorks.h>
  21. 2019-12-25 Alexandre Oliva <oliva@adacore.com>
  22. * crossconfig.m4 (GLIBCXX_CROSSCONFIG) [*-vxworks*]: Define
  23. long double functions as available if declared by math.h.
  24. (GLIBCXX_CHECK_MATH_DECL, GLIBCXX_CHECK_MATH_DECLS): New.
  25. * configure: Rebuild.
  26. 2019-12-20 Jonathan Wakely <jwakely@redhat.com>
  27. PR libstdc++/92927
  28. * include/bits/alloc_traits.h (__alloc_on_copy, __alloc_on_move)
  29. (__alloc_on_swap): Add inline specifier.
  30. 2019-12-20 Jerome Lambourg <lambourg@adacore.com>
  31. * acinclude.m4 (GLIBCXX_CHECK_SETRLIMIT): Test with AC_LANG_CPLUSPLUS.
  32. * configure: Regenerate.
  33. 2019-12-20 François Dumont <fdumont@gcc.gnu.org>
  34. * testsuite/23_containers/map/48101_neg.cc: Add versioned namespace
  35. pattern to tested error message.
  36. * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
  37. * testsuite/30_threads/headers/stop_token/synopsis.cc: Add
  38. dg-require-normal-namepace.
  39. * python/libstdcxx/v6/printers.py (lookup_node_type): Remove redundant
  40. call to lookup_node_type.
  41. * testsuite/libstdc++-prettyprinters/80276.cc: Define
  42. _GLIBCXX_USE_CXX11_ABI to 0.
  43. * testsuite/libstdc++-prettyprinters/91997.cc: Use regexp-test to check
  44. 'a' content.
  45. 2019-12-20 Jerome Lambourg <lambourg@adacore.com>
  46. * acinclude.m4 (_GLIBCXX_USE_PTHREAD_RWLOCK_T): Checks that _PTHREADS
  47. is defined after including gthr.h.
  48. * configure: Regenerate.
  49. 2019-12-12 Jonathan Wakely <jwakely@redhat.com>
  50. * libsupc++/compare (common_comparison_category): Define without using
  51. concepts and optimise for compilation time.
  52. (__detail::__cmp_cat_ids): Remove.
  53. (__detail::__common_cmp_cat): Replace class template and
  54. specializations with constexpr function.
  55. 2019-12-12 François Dumont <fdumont@gcc.gnu.org>
  56. * include/tr1/cctype: Add _GLIBCXX_BEGIN_VERSION_NAMESPACE and
  57. _GLIBCXX_END_VERSION_NAMESPACE.
  58. * include/tr1/cfenv: Likewise.
  59. * include/tr1/cinttypes: Likewise.
  60. * include/tr1/cstdint: Likewise.
  61. * include/tr1/cstdio: Likewise.
  62. * include/tr1/cstdlib: Likewise.
  63. * include/tr1/cwchar: Likewise.
  64. * include/tr1/cwctype: Likewise.
  65. * src/c++11/random.cc: Include <cctype>.
  66. (random_devise::_M_init_pretr1): Qualify isdigit call.
  67. 2019-12-10 Thomas Rodgers <trodgers@redhat.com>
  68. * include/pstl/glue_numeric_defs.h: Restore enable_if lost during
  69. original import of pstl.
  70. * include/pstl/glue_numeric_impl.h: Likewise.
  71. 2019-12-10 Jonathan Wakely <jwakely@redhat.com>
  72. (span(ContiguousIterator, Sentinel)): Add conditional noexcept.
  73. * include/std/span (span(ContiguousIterator, size_type)): Change
  74. noexcept to be unconditionally true.
  75. * testsuite/23_containers/span/nothrow_cons.cc: New test.
  76. 2019-12-10 François Dumont <fdumont@gcc.gnu.org>
  77. * include/bits/stl_algobase.h
  78. (__copy_move_a1<>(_II, _II, _OI)): New.
  79. (__copy_move_a1<>(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
  80. (__copy_move_a1<>(_Deque_iterator<>, _Deque_iterator<>,
  81. _Deque_iterator<>)): New.
  82. (__copy_move_a1<>(_II, _II, _Deque_iterator<>)): New.
  83. (__copy_move_a<>(_II, _II, _OI)): Adapt, call __copy_move_a1<>.
  84. (__copy_move_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
  85. _OI)): New.
  86. (__copy_move_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
  87. const _Safe_iterator<>&)): New.
  88. (__copy_move_a<>(_II, _II, const _Safe_iterator<>&)): New.
  89. (copy, move): Adapt, call __copy_move_a.
  90. (__copy_move_backward_a1<>(_II, _II, _OI)): New,
  91. call __copy_move_backward_a2.
  92. (__copy_move_backward_a1<>(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
  93. (__copy_move_backward_a1<>(_Deque_iterator<>, _Deque_iterator<>,
  94. _Deque_iterator<>)): New.
  95. (__copy_move_backward_a1<>(_II, _II, _Deque_iterator<>)): New.
  96. (__copy_move_backward_a<>(_II, _II, _OI)): Adapt, call
  97. __copy_move_backward_a1<>.
  98. (__copy_move_backward_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
  99. _OI)): New.
  100. (__copy_move_backward_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
  101. const _Safe_iterator<>&)): New.
  102. (__copy_move_backward_a<>(_II, _II, const _Safe_iterator<>&)): New.
  103. (copy_backward, move_backward): Adapt, call __copy_move_backward_a<>.
  104. (__fill_a): Rename into...
  105. (__fill_a1): ... this.
  106. (__fill_a1(__normal_iterator<>, __normal_iterator<>, const _Tp&)): New.
  107. (__fill_a1(const _Deque_iterator<>&, const _Deque_iterator<>&, _VTp)):
  108. New.
  109. (__fill_a(_FIte, _FIte, const _Tp&)): New, call __fill_a1.
  110. (__fill_a(const _Safe_iterator<>&, const _Safe_iterator<>&,
  111. const _Tp&)): New.
  112. (fill): Adapt, remove __niter_base usage.
  113. (__fill_n_a): Rename into...
  114. (__fill_n_a1): ...this.
  115. (__fill_n_a(const _Safe_iterator<>&, _Size, const _Tp&,
  116. input_iterator_tag)): New.
  117. (__fill_n_a(_OI, _Size, const _Tp&, output_iterator_tag)): New, call
  118. __fill_n_a1.
  119. (__fill_n_a(_OI, _Size, const _Tp&, random_access_iterator_tag)): New,
  120. call __fill_a.
  121. (__equal_aux): Rename into...
  122. (__equal_aux1): ...this.
  123. (__equal_aux1(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
  124. (__equal_aux1(_Deque_iterator<>, _Deque_iterator<>,
  125. _Deque_iterator<>)): New.
  126. (__equal_aux1(_II, _II, _Deque_iterator<>)): New.
  127. (__equal_aux(_II1, _II1, _II2)): New, call __equal_aux1.
  128. (__equal_aux(const _Safe_iterator<>&, const _Safe_iterator<>&,
  129. _OI)): New.
  130. (__equal_aux(const _Safe_iterator<>&, const _Safe_iterator<>&,
  131. const _Safe_iterator<>&)): New.
  132. (__equal_aux(_II, _II, const _Safe_iterator<>&)): New.
  133. (equal(_II1, _II1, _II2)): Adapt.
  134. * include/bits/stl_deque.h
  135. (fill, copy, copy_backward, move, move_backward): Remove.
  136. * include/bits/deque.tcc: Include <bits/stl_algobase.h>.
  137. (__fill_a1): New.
  138. (__copy_move_dit): New.
  139. (__copy_move_a1): New, use latter.
  140. (__copy_move_a1(_II, _II, _Deque_iterator<>)): New.
  141. (__copy_move_backward_dit): New.
  142. (__copy_move_backward_a1): New, use latter.
  143. (__copy_move_backward_a1(_II, _II, _Deque_iterator<>)): New.
  144. (__equal_dit): New.
  145. (__equal_aux1): New, use latter.
  146. (__equal_aux1(_II, _II, _Deque_iterator<>)): New.
  147. * include/std/numeric (__is_random_access_iter): Move...
  148. * include/bits/stl_iterator_base_types.h (__is_random_access_iter): ...
  149. here. Provide pre-C++11 definition.
  150. * include/debug/debug.h (_Safe_iterator<>): New declaration.
  151. * include/debug/safe_iterator.h (_Safe_iterator<>::_M_can_advance): Add
  152. __strict parameter.
  153. * include/debug/safe_iterator.tcc: Include <bits/stl_algobase.h>.
  154. (_Safe_iterator<>::_M_can_advance): Adapt.
  155. (std::__copy_move_a, std::__copy_move_backward_a, __fill_a): New.
  156. (__fill_n_a, __equal_aux): New.
  157. * include/debug/stl_iterator.h (__niter_base): Remove.
  158. * include/debug/vector (__niter_base): Remove.
  159. * testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc:
  160. Include <vector> and <list>. Add benches.
  161. * testsuite/performance/25_algorithms/copy_deque_iterators.cc: Likewise.
  162. * testsuite/performance/25_algorithms/equal_deque_iterators.cc: Likewise.
  163. * testsuite/25_algorithms/copy/debug/1_neg.cc: New.
  164. * testsuite/25_algorithms/copy/deque_iterators/2.cc: New.
  165. * testsuite/25_algorithms/copy/deque_iterators/31.cc: New.
  166. * testsuite/25_algorithms/copy/deque_iterators/32.cc: New.
  167. * testsuite/25_algorithms/copy/deque_iterators/33.cc: New.
  168. * testsuite/25_algorithms/copy/deque_iterators/41.cc: New.
  169. * testsuite/25_algorithms/copy/deque_iterators/42.cc: New.
  170. * testsuite/25_algorithms/copy/deque_iterators/43.cc: New.
  171. * testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc (test02):
  172. New.
  173. * testsuite/25_algorithms/copy_backward/deque_iterators/2.cc: New.
  174. * testsuite/25_algorithms/equal/deque_iterators/1.cc: New.
  175. * testsuite/25_algorithms/fill/deque_iterators/1.cc: New.
  176. * testsuite/25_algorithms/move/deque_iterators/2.cc: New.
  177. * testsuite/25_algorithms/move_backward/deque_iterators/2.cc: New.
  178. 2019-12-10 Jonathan Wakely <jwakely@redhat.com>
  179. PR libstdc++/92886
  180. * include/bits/ios_base.h (std::ios_base::trunc): Fix comment.
  181. * include/std/complex (__cpp_lib_constexpr_complex): Define.
  182. * include/std/version (__cpp_lib_constexpr_complex): Likewise.
  183. * testsuite/26_numerics/complex/1.cc: New test.
  184. * testsuite/26_numerics/complex/2.cc: New test.
  185. * include/std/span: Do not include <tuple> and <utility>.
  186. (tuple_size, tuple_element): Declare.
  187. * include/bits/iterator_concepts.h (indirect_result_t): Do not apply
  188. iter_reference_t to parameter pack.
  189. * testsuite/24_iterators/indirect_callable/projected.cc: New test.
  190. 2019-12-09 Jonathan Wakely <jwakely@redhat.com>
  191. * include/bits/range_access.h (ranges::enable_safe_range): Define.
  192. (ranges::begin, ranges::end, ranges::rbegin, ranges::rend): Constrain
  193. to only accept types satisfying safe_range and treat argument as an
  194. lvalue when calling a member of performing ADL.
  195. (ranges::__detail::__range_impl, ranges::__detail::__forwarding_range):
  196. Remove.
  197. (ranges::range): Adjust definition.
  198. (ranges::safe_range): Define.
  199. (ranges::iterator_t, ranges::range_difference_t): Reorder definitions
  200. to match the synopsis in the working draft.
  201. (ranges::disable_sized_range): Remove duplicate definition.
  202. * include/experimental/string_view (ranges::enable_safe_range): Add
  203. partial specialization for std::experimental::basic_string_view.
  204. * include/std/ranges (ranges::viewable_range, ranges::subrange)
  205. (ranges::empty_view, ranges::iota_view): Use safe_range. Specialize
  206. enable_safe_range.
  207. (ranges::safe_iterator_t, ranges::safe_subrange_t): Define.
  208. * include/std/span (ranges::enable_safe_range): Add partial
  209. specialization for std::span.
  210. * include/std/string_view (ranges::enable_safe_range): Likewise for
  211. std::basic_string_view.
  212. * testsuite/std/ranges/access/begin.cc: Adjust expected results.
  213. * testsuite/std/ranges/access/cbegin.cc: Likewise.
  214. * testsuite/std/ranges/access/cdata.cc: Likewise.
  215. * testsuite/std/ranges/access/cend.cc: Likewise.
  216. * testsuite/std/ranges/access/crbegin.cc: Likewise.
  217. * testsuite/std/ranges/access/crend.cc: Likewise.
  218. * testsuite/std/ranges/access/data.cc: Likewise.
  219. * testsuite/std/ranges/access/end.cc: Likewise.
  220. * testsuite/std/ranges/access/rbegin.cc: Likewise.
  221. * testsuite/std/ranges/access/rend.cc: Likewise.
  222. * testsuite/std/ranges/empty_view.cc: Test ranges::begin and
  223. ranges::end instead of unqualified calls to begin and end.
  224. * testsuite/std/ranges/safe_range.cc: New test.
  225. * testsuite/std/ranges/safe_range_types.cc: New test.
  226. * testsuite/util/testsuite_iterators.h: Add comment about safe_range.
  227. * testsuite/27_io/filesystem/path/concat/strings.cc: Test more cases.
  228. PR libstdc++/92853
  229. * src/c++17/fs_path.cc (filesystem::path::operator+=(const path&)):
  230. Do not process a trailing directory separator twice.
  231. * testsuite/27_io/filesystem/path/concat/92853.cc: New test.
  232. * testsuite/27_io/filesystem/path/concat/path.cc: Test more cases.
  233. 2019-12-09 François Dumont <fdumont@gcc.gnu.org>
  234. * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
  235. Fix static_assert line number.
  236. * testsuite/23_containers/array/tuple_interface/
  237. tuple_element_debug_neg.cc: Likewise.
  238. 2019-12-07 Andrew Pinski <apinski@marvell.com>
  239. * config/cpu/aarch64/opt/ext/opt_random.h: Wrap around with check
  240. for little-endian like ext/random is done.
  241. 2019-12-05 Jonathan Wakely <jwakely@redhat.com>
  242. * testsuite/23_containers/span/lwg3255.cc: Fix test. Constructing a
  243. span of non-const elements should not be possible from a const array
  244. or an array of const elements.
  245. 2019-12-05 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
  246. Implement P1872R0 and P1394R0 for std::span
  247. * include/bits/range_access.h (__adl_begin, __adl_end): Remove.
  248. (sentinel_t, range_value_t, range_reference_t)
  249. (range_rvalue_reference_t, __forwarding_range, disable_sized_range)
  250. (output_range, input_range, forward_range, bidirectional_range)
  251. (random_access_range, contiguous_range, common_range): Move here from
  252. <ranges>, to make this the "ranges lite" internal header.
  253. * include/std/ranges: Move basic aliases and concepts to
  254. <bits/range_access.h>.
  255. * include/std/span: Use concepts and ranges:: calls instead of
  256. enable_if and friends.
  257. * include/std/type_traits: Add __is_array_convertible trait.
  258. 2019-12-05 Jonathan Wakely <jwakely@redhat.com>
  259. * include/bits/stl_algobase.h (lexicographical_compare_three_way):
  260. Define for C++20.
  261. * testsuite/25_algorithms/lexicographical_compare_three_way/1.cc: New
  262. test.
  263. * testsuite/25_algorithms/lexicographical_compare_three_way/
  264. constexpr.cc: New test.
  265. * python/libstdcxx/v6/printers.py (StdCmpCatPrinter): New printer.
  266. * testsuite/libstdc++-prettyprinters/cxx20.cc: New test.
  267. * include/bits/cpp_type_traits.h (__is_byte<char8_t>): Add
  268. specialization.
  269. * include/std/array (operator<=>): Likewise.
  270. * testsuite/23_containers/array/comparison_operators/constexpr.cc:
  271. Test three-way comparisons and arrays of unsigned char.
  272. * testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust
  273. dg-error line numbers.
  274. 2019-12-03 Jonathan Wakely <jwakely@redhat.com>
  275. * include/bits/stl_pair.h [__cpp_lib_three_way_comparison]
  276. (operator<=>): Define for C++20.
  277. * libsupc++/compare (__cmp2way_res_t): Rename to __cmp3way_res_t,
  278. move into __detail namespace. Do not turn argument types into lvalues.
  279. (__cmp3way_helper): Rename to __cmp3way_res_impl, move into __detail
  280. namespace. Constrain with concepts instead of using void_t.
  281. (compare_three_way_result): Adjust name of base class.
  282. (compare_three_way_result_t): Use __cmp3way_res_impl directly.
  283. (__detail::__3way_cmp_with): Add workaround for PR 91073.
  284. (compare_three_way): Use workaround.
  285. (__detail::__synth3way, __detail::__synth3way_t): Define new helpers
  286. implementing synth-three-way and synth-three-way-result semantics.
  287. * testsuite/20_util/pair/comparison_operators/constexpr_c++20.cc: New
  288. test.
  289. * include/bits/stl_pair.h (pair): Remove stray Doxygen closing marker.
  290. * testsuite/util/slow_clock.h: Fix copyright date.
  291. 2019-12-02 Mike Crowe <mac@mcrowe.com>
  292. Fix try_lock_until and try_lock_shared_until on arbitrary clock
  293. * include/std/shared_mutex (shared_timed_mutex::try_lock_until)
  294. (shared_timed_mutex::try_lock_shared_until): Loop until the absolute
  295. timeout time is reached as measured against the appropriate clock.
  296. * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
  297. file. Test try_lock_until and try_lock_shared_until timeouts against
  298. various clocks.
  299. * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
  300. file. Test try_lock_until and try_lock_shared_until timeouts against
  301. various clocks.
  302. Add full steady_clock support to shared_timed_mutex
  303. * acinclude.m4 (GLIBCXX_CHECK_PTHREAD_RWLOCK_CLOCKLOCK): Define
  304. to check for the presence of both pthread_rwlock_clockrdlock and
  305. pthread_rwlock_clockwrlock.
  306. * config.h.in: Regenerate.
  307. * configure.ac: Call GLIBCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK.
  308. * configure: Regenerate.
  309. * include/std/shared_mutex (shared_timed_mutex): Define __clock_t as
  310. the best clock to use for relative waits.
  311. (shared_timed_mutex::try_lock_for) Round up wait duration if necessary.
  312. (shared_timed_mutex::try_lock_shared_for): Likewise.
  313. (shared_timed_mutex::try_lock_until): Use existing try_lock_until
  314. implementation for system_clock (which matches __clock_t when
  315. _GLIBCCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK is not defined). Add new
  316. overload for steady_clock that uses pthread_rwlock_clockwrlock if it
  317. is available. Simplify overload for non-standard clock to just call
  318. try_lock_for with a relative timeout.
  319. (shared_timed_mutex::try_lock_shared_until): Likewise.
  320. PR libstdc++/91906 Fix timed_mutex::try_lock_until on arbitrary clock
  321. * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Loop
  322. until the absolute timeout time is reached as measured against the
  323. appropriate clock.
  324. * testsuite/util/slow_clock.h: New file. Move implementation of
  325. slow_clock test class.
  326. * testsuite/30_threads/condition_variable/members/2.cc: Include
  327. slow_clock from header.
  328. * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Convert
  329. existing test to templated function so that it can be called with
  330. both system_clock and steady_clock.
  331. * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Also run test
  332. using slow_clock to test above fix.
  333. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
  334. Likewise.
  335. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/4.cc: Add
  336. new test that try_lock_until behaves as try_lock if the timeout has
  337. already expired or exactly matches the current time.
  338. PR libstdc++/78237 Add full steady_clock support to timed_mutex
  339. * acinclude.m4 (GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK): Define to
  340. detect presence of pthread_mutex_clocklock function.
  341. * config.h.in: Regenerate.
  342. * configure: Regenerate.
  343. * configure.ac: Call GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK.
  344. * include/std/mutex (__timed_mutex_impl): Remove unnecessary __clock_t.
  345. (__timed_mutex_impl::_M_try_lock_for): Use best clock to turn relative
  346. timeout into absolute timeout.
  347. (__timed_mutex_impl::_M_try_lock_until): Keep existing implementation
  348. for system_clock. Add new implementation for steady_clock that calls
  349. _M_clocklock. Modify overload for user-defined clock to use a relative
  350. wait so that it automatically uses the best clock.
  351. [_GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK] (timed_mutex::_M_clocklock):
  352. New member function.
  353. (recursive_timed_mutex::_M_clocklock): Likewise.
  354. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
  355. New test. Ensure that timed_mutex::try_lock_until actually times out
  356. after the specified time when using both system_clock and
  357. steady_clock.
  358. * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: New test.
  359. Likewise but for recursive_timed_mutex.
  360. * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Template
  361. test functions and use them to test both steady_clock and system_clock.
  362. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. Wrap call
  363. to timed_mutex::try_lock_until in VERIFY macro to check its return
  364. value.
  365. 2019-11-30 Jonathan Wakely <jwakely@redhat.com>
  366. * acinclude.m4 (GLIBCXX_ENABLE_FILESYSTEM_TS): Enable by default for
  367. mingw targets.
  368. * configure: Regenerate.
  369. * include/bits/fs_path.h (u8path(InputIterator, InputIterator))
  370. (u8path(const Source&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Simplify
  371. conditions.
  372. * include/experimental/bits/fs_path.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
  373. (__u8path(const Source&, char)): Add overloads for std::string and
  374. types convertible to std::string.
  375. (_Cvt::_S_wconvert): Add a new overload for char8_t strings and use
  376. codecvt_utf8_utf16 to do the correct conversion.
  377. 2019-11-29 Jonathan Wakely <jwakely@redhat.com>
  378. * include/bits/fs_path.h (path::operator/=): Change template-head to
  379. use typename instead of class.
  380. * include/experimental/bits/fs_path.h (path::operator/=): Likewise.
  381. * include/std/ostream (operator<<): Likewise.
  382. 2019-11-29 Tom Honermann <tom@honermann.net>
  383. New tests
  384. * testsuite/27_io/basic_ostream/inserters_character/char/deleted.cc:
  385. New test to validate deleted overloads of character and string
  386. inserters for narrow ostreams.
  387. * testsuite/27_io/basic_ostream/inserters_character/wchar_t/deleted.cc:
  388. New test to validate deleted overloads of character and string
  389. inserters for wide ostreams.
  390. * testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc: New test
  391. to validate u8path invocations with sequences of char8_t.
  392. * testsuite/experimental/filesystem/path/factory/u8path-char8_t.cc:
  393. New test to validate u8path invocations with sequences of char8_t.
  394. Updates to existing tests
  395. * testsuite/experimental/feat-char8_t.cc: Updated the expected
  396. __cpp_lib_char8_t feature test macro value.
  397. * testsuite/27_io/filesystem/path/factory/u8path.cc: Added testing of
  398. u8path invocation with std::string, std::string_view, and iterators
  399. thereof.
  400. * testsuite/experimental/filesystem/path/factory/u8path.cc: Added
  401. testing of u8path invocation with std::string, std::string_view, and
  402. iterators thereof.
  403. Update feature test macro, add deleted operators, update u8path
  404. * include/bits/c++config: Bumped the value of the __cpp_lib_char8_t
  405. feature test macro.
  406. * include/bits/fs_path.h (u8path): Modified u8path to accept sequences
  407. of char8_t.
  408. * include/experimental/bits/fs_path.h (u8path): Modified u8path to
  409. accept sequences of char8_t.
  410. * include/std/ostream: Added deleted overloads of wchar_t, char8_t,
  411. char16_t, and char32_t for ordinary and wide formatted character and
  412. string inserters.
  413. Decouple constraints for u8path from path constructors
  414. * include/bits/fs_path.h: Moved helper utilities out of
  415. std::filesystem::path into a detail namespace to make them
  416. available for use by u8path.
  417. * include/experimental/bits/fs_path.h: Moved helper utilities out
  418. of std::experimental::filesystem::v1::path into a detail
  419. namespace to make them available for use by u8path.
  420. 2019-11-29 Jonathan Wakely <jwakely@redhat.com>
  421. PR libstdc++/91997
  422. * python/libstdcxx/v6/printers.py (find_type): Fail more gracefully
  423. if we run out of base classes to look at.
  424. (lookup_templ_spec, lookup_node_type): New utilities to find node
  425. types for node-based containers.
  426. (StdListPrinter.children, NodeIteratorPrinter.__init__)
  427. (NodeIteratorPrinter.to_string, StdSlistPrinter.children)
  428. (StdSlistIteratorPrinter.to_string, StdRbtreeIteratorPrinter.__init__)
  429. (StdMapPrinter.children, StdSetPrinter.children)
  430. (StdForwardListPrinter.children): Use lookup_node_type instead of
  431. find_type.
  432. (StdListIteratorPrinter.__init__, StdFwdListIteratorPrinter.__init__):
  433. Pass name of node type to NodeIteratorPrinter constructor.
  434. (Tr1HashtableIterator.__init__): Rename argument.
  435. (StdHashtableIterator.__init__): Likewise. Use lookup_templ_spec
  436. instead of find_type.
  437. * testsuite/libstdc++-prettyprinters/59161.cc: Remove workaround for
  438. _Node typedef not being present in debuginfo.
  439. * testsuite/libstdc++-prettyprinters/91997.cc: New test.
  440. 2019-11-26 François Dumont <fdumont@gcc.gnu.org>
  441. * include/debug/helper_functions.h (__valid_range_aux): Use C++98
  442. std::input_iterator_tag default constructor invocation.
  443. * include/debug/array (array<>::fill): Add C++20 constexpr.
  444. (array<>::swap): Likewise.
  445. * include/debug/safe_iterator.h
  446. [__cpp_lib_concepts](_Safe_iterator<>::iterator_concept): Define for
  447. C++20.
  448. 2019-11-25 Jonathan Wakely <jwakely@redhat.com>
  449. * include/bits/iterator_concepts.h (ranges::iter_swap): Fix parameter
  450. types of poison pill overload. Use remove_reference_t when checking
  451. constraints.
  452. * include/bits/stl_iterator.h (move_sentinel): Define for C++20.
  453. (move_iterator): Adjust definitions of nested types for C++20. Add
  454. hidden friends for move_sentinel operations, iter_move and iter_swap.
  455. (common_iterator, counted_iterator): Define for C++20.
  456. * testsuite/24_iterators/move_iterator/cust.cc: New test.
  457. * testsuite/24_iterators/move_iterator/sentinel.cc: New test.
  458. * testsuite/24_iterators/common_iterator/1.cc: New test.
  459. * testsuite/24_iterators/counted_iterator/1.cc: New test.
  460. PR libstdc++/91786
  461. * include/bits/fs_path.h (filesystem_error): Move definition before
  462. the use in u8path.
  463. 2019-11-24 François Dumont <fdumont@gcc.gnu.org>
  464. * include/debug/functions.h: Remove <bits/move.h> include.
  465. (__check_singular_aux, __check_singular): Move...
  466. * include/debug/helper_functions.h:
  467. (__check_singular_aux, __check_singular): ...here.
  468. (__valid_range_aux): Adapt to use latter.
  469. * testsuite/25_algorithms/copy/debug/2_neg.cc: New.
  470. 2019-11-20 Janne Blomqvist <jb@gcc.gnu.org>
  471. * doc/html/api.html: Use https for gcc.gnu.org.
  472. * doc/xml/api.xml: Likewise.
  473. 2019-11-19 Jonathan Wakely <jwakely@redhat.com>
  474. * include/bits/regex.h (ranges::__detail::__enable_view_impl): Fix
  475. declaration.
  476. * include/bits/stl_multiset.h (ranges::__detail::__enable_view_impl):
  477. Likewise.
  478. * include/bits/stl_set.h (ranges::__detail::__enable_view_impl):
  479. Likewise.
  480. * include/bits/unordered_set.h (ranges::__detail::__enable_view_impl):
  481. Likewise.
  482. * include/debug/multiset.h (ranges::__detail::__enable_view_impl):
  483. Likewise.
  484. * include/debug/set.h (ranges::__detail::__enable_view_impl): Likewise.
  485. * include/debug/unordered_set (ranges::__detail::__enable_view_impl):
  486. Likewise.
  487. 2019-11-18 Jonathan Wakely <jwakely@redhat.com>
  488. * include/std/thread: Reduce header dependencies.
  489. (jthread::get_id()): Add missing return.
  490. (jthread::get_stop_token()): Avoid unnecessary stop_source temporary.
  491. (jthread::_S_create): Check is_invocable using decayed types. Add
  492. static assertion.
  493. * testsuite/30_threads/jthread/1.cc: Add dg-require-gthreads.
  494. * testsuite/30_threads/jthread/2.cc: Likewise.
  495. * testsuite/30_threads/jthread/3.cc: New test.
  496. * testsuite/30_threads/jthread/jthread.cc: Add missing directives for
  497. pthread and gthread support. Use VERIFY instead of assert.
  498. * include/bits/alloc_traits.h (allocator_traits::construct)
  499. (allocator_traits::destroy, allocator_traits::max_size): Add unused
  500. attributes to parameters that are not used in C++20.
  501. * include/std/bit (__ceil2): Add braces around assertion to avoid
  502. -Wmissing-braces warning.
  503. 2019-11-16 Edward Smith-Rowland <3dw4rd@verizon.net>
  504. Repair the <tuple> part of C++20 p1032 Misc constexpr bits.
  505. * include/bits/uses_allocator.h (__uses_alloc0::_Sink::operaror=)
  506. (__use_alloc(const _Alloc&)) : Constexpr.
  507. 2019-11-17 Jonathan Wakely <jwakely@redhat.com>
  508. * include/std/string_view (basic_string_view(It, End)): Add range
  509. constructor and deduction guide from P1391R4.
  510. * testsuite/21_strings/basic_string_view/cons/char/range.cc: New test.
  511. * include/bits/regex.h (match_results): Specialize __enable_view_impl.
  512. * include/bits/stl_set.h (set): Likewise.
  513. * include/bits/unordered_set.h (unordered_set, unordered_multiset):
  514. Likewise.
  515. * include/debug/multiset.h (__debug::multiset): Likewise.
  516. * include/debug/set.h (__debug::set): Likewise.
  517. * include/debug/unordered_set (__debug::unordered_set)
  518. (__debug::unordered_multiset): Likewise.
  519. * include/std/ranges (ranges::view, ranges::enable_view)
  520. (ranges::view_interface, ranges::subrange, ranges::empty_view)
  521. (ranges::single_view, ranges::views::single, ranges::iota_view)
  522. (ranges::views::iota): Define for C++20.
  523. * testsuite/std/ranges/empty_view.cc: New test.
  524. * testsuite/std/ranges/iota_view.cc: New test.
  525. * testsuite/std/ranges/single_view.cc: New test.
  526. * testsuite/std/ranges/view.cc: New test.
  527. 2019-11-16 Jonathan Wakely <jwakely@redhat.com>
  528. * include/std/ranges: Revert accidentally committed changes.
  529. * include/std/thread (jthread::jthread()): Use nostopstate constant.
  530. (jthread::jthread(Callable&&, Args&&...)): Use helper function to
  531. create std::thread instead of indirection through a lambda. Use
  532. remove_cvref_t instead of decay_t.
  533. (jthread::joinable(), jthread::get_id(), jthread::native_handle())
  534. (jthread::hardware_concurrency()): Add nodiscard attribute.
  535. (swap(jthread&. jthread&)): Define hidden friend.
  536. (jthread::_S_create): New helper function for constructor.
  537. 2019-11-15 Edward Smith-Rowland <3dw4rd@verizon.net>
  538. Implement the <tuple> part of C++20 p1032 Misc constexpr bits.
  539. * include/std/tuple (_Head_base, _Tuple_impl(allocator_arg_t,...)
  540. (_M_assign, tuple(allocator_arg_t,...), _Inherited, operator=, _M_swap)
  541. (swap, pair(piecewise_construct_t,): Constexpr.
  542. * (__uses_alloc0::_Sink::operator=, __uses_alloc_t): Constexpr.
  543. * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: New test.
  544. * testsuite/20_util/tuple/constexpr_swap.cc : New test.
  545. * testsuite/20_util/uses_allocator/69293_neg.cc: Extra error for C++20.
  546. * testsuite/20_util/uses_allocator/cons_neg.cc: : Extra error for C++20.
  547. 2019-11-15 Jonathan Wakely <jwakely@redhat.com>
  548. * include/std/stop_token: Reduce header dependencies by including
  549. internal headers.
  550. (stop_token::swap(stop_token&), swap(stop_token&, stop_token&)):
  551. Define.
  552. (operator!=(const stop_token&, const stop_token&)): Fix return value.
  553. (stop_token::_Stop_cb::_Stop_cb(Cb&&)): Use std::forward instead of
  554. (stop_token::_Stop_state_t) [_GLIBCXX_HAS_GTHREADS]: Use lock_guard
  555. instead of unique_lock.
  556. [!_GLIBCXX_HAS_GTHREADS]: Do not use mutex.
  557. (stop_token::stop_token(_Stop_state)): Change parameter to lvalue
  558. reference.
  559. (stop_source): Remove unnecessary using-declarations for names only
  560. used once.
  561. (swap(stop_source&, stop_source&)): Define.
  562. (stop_callback(const stop_token&, _Cb&&))
  563. (stop_callback(stop_token&&, _Cb&&)): Replace lambdas with a named
  564. function. Use std::forward instead of std::move. Run callbacks if a
  565. stop request has already been made.
  566. (stop_source::_M_execute()): Remove.
  567. (stop_source::_S_execute(_Stop_cb*)): Define.
  568. * include/std/version (__cpp_lib_jthread): Define conditionally.
  569. * testsuite/30_threads/stop_token/stop_callback.cc: New test.
  570. * testsuite/30_threads/stop_token/stop_source.cc: New test.
  571. * testsuite/30_threads/stop_token/stop_token.cc: Enable test for
  572. immediate execution of callback.
  573. 2019-11-15 Edward Smith-Rowland <3dw4rd@verizon.net>
  574. Implement the default_searcher part of C++20 p1032 Misc constexpr bits.
  575. * include/std/functional
  576. (default_searcher, default_searcher::operator()): Constexpr.
  577. * testsuite/20_util/function_objects/constexpr_searcher.cc: New.
  578. 2019-11-15 Jonathan Wakely <jwakely@redhat.com>
  579. * include/bits/iterator_concepts.h (weakly_incrementable): Adjust.
  580. * include/std/concepts (default_constructible): Rename to
  581. default_initializable and require default-list-initialization and
  582. default-initialization to be valid (LWG 3149).
  583. (semiregular): Adjust to new name.
  584. * testsuite/std/concepts/concepts.lang/concept.defaultconstructible/
  585. 1.cc: Rename directory to concept.defaultinitializable and adjust to
  586. new name.
  587. * testsuite/std/concepts/concepts.lang/concept.defaultinitializable/
  588. lwg3149.cc: New test.
  589. * testsuite/util/testsuite_iterators.h (test_range): Adjust.
  590. * src/c++17/fs_path.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
  591. (is_disk_designator): New helper function.
  592. (path::_Parser::root_path()): Use is_disk_designator.
  593. (path::lexically_relative(const path&)): Implement resolution of
  594. LWG 3070.
  595. * testsuite/27_io/filesystem/path/generation/relative.cc: Check with
  596. path components that look like a root-name.
  597. * doc/doxygen/user.cfg.in: Add <stop_token>.
  598. * include/precompiled/stdc++.h: Likewise.
  599. * include/std/stop_token: Fix definition of std::nostopstate.
  600. * testsuite/30_threads/headers/stop_token/synopsis.cc: New test.
  601. * testsuite/30_threads/headers/thread/types_std_c++20.cc: New test.
  602. * testsuite/30_threads/stop_token/stop_source.cc: New test.
  603. * testsuite/30_threads/stop_token/stop_token.cc: Remove unnecessary
  604. dg-require directives. Remove I/O and inclusion of <iostream>.
  605. 2019-11-14 Thomas Rodgers <trodgers@redhat.com>
  606. * include/Makefile.am: Add <stop_token> header.
  607. * include/Makefile.in: Regenerate.
  608. * include/std/condition_variable: Add overloads for stop_token support
  609. to condition_variable_any.
  610. * include/std/stop_token: New file.
  611. * include/std/thread: Add jthread type.
  612. * include/std/version (__cpp_lib_jthread): New value.
  613. * testsuite/30_threads/condition_variable_any/stop_token/1.cc: New test.
  614. * testsuite/30_threads/condition_variable_any/stop_token/2.cc: New test.
  615. * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
  616. New test.
  617. * testsuite/30_threads/jthread/1.cc: New test.
  618. * testsuite/30_threads/jthread/2.cc: New test.
  619. * testsuite/30_threads/jthread/jthread.cc: New test.
  620. * testsuite/30_threads/stop_token/1.cc: New test.
  621. * testsuite/30_threads/stop_token/2.cc: New test.
  622. * testsuite/30_threads/stop_token/stop_token.cc: New test.
  623. 2019-11-14 Edward Smith-Rowland <3dw4rd@verizon.net>
  624. Implement the <array> part of C++20 p1032 Misc constexpr bits.
  625. * include/std/array (fill, swap): Make constexpr.
  626. * testsuite/23_containers/array/requirements/constexpr_fill.cc: New.
  627. * testsuite/23_containers/array/requirements/constexpr_swap.cc: New.
  628. 2019-11-14 Jonathan Wakely <jwakely@redhat.com>
  629. * include/bits/iterator_concepts.h (__iter_concept_impl): Add
  630. comments.
  631. (indirect_relation): Rename to indirect_binary_predicate and adjust
  632. definition as per P1716R3.
  633. (indirect_equivalence_relation): Define.
  634. (indirectly_comparable): Adjust definition.
  635. * include/std/concepts (equivalence_relation): Define.
  636. * testsuite/std/concepts/concepts.callable/relation.cc: Add tests for
  637. equivalence_relation.
  638. * include/bits/iterator_concepts.h (disable_sized_sentinel): Rename to
  639. disable_sized_sentinel_for.
  640. * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust.
  641. 2019-11-13 Jonathan Wakely <jwakely@redhat.com>
  642. * libsupc++/compare (strong_order, weak_order, partial_order)
  643. (compare_strong_order_fallback, compare_weak_order_fallback)
  644. (compare_partial_order_fallback): Define customization point objects
  645. for C++20.
  646. * testsuite/18_support/comparisons/algorithms/partial_order.cc: New
  647. test.
  648. * testsuite/18_support/comparisons/algorithms/strong_order.cc: New
  649. test.
  650. * testsuite/18_support/comparisons/algorithms/weak_order.cc: New test.
  651. 2019-11-11 Gerald Pfeifer <gerald@pfeifer.com>
  652. * doc/xml/gnu/gpl-3.0.xml: Adjust link to "Why not LGPL".
  653. 2019-11-10 Gerald Pfeifer <gerald@pfeifer.com>
  654. * doc/xml/manual/using.xml: Switch www.hboehm.info to https.
  655. 2019-11-07 Jonathan Wakely <jwakely@redhat.com>
  656. * doc/doxygen/user.cfg.in (INPUT): Add <compare> header.
  657. * include/precompiled/stdc++.h: Include <compare> header.
  658. * libsupc++/compare (common_comparison_category)
  659. (common_comparison_category_t): Define for C++20.
  660. * testsuite/18_support/comparisons/common/1.cc: New test.
  661. * include/bits/stl_algo.h (for_each_n): Handle negative count.
  662. * testsuite/25_algorithms/for_each/for_each_n_debug.cc: New test.
  663. 2019-11-07 Jason Merrill <jason@redhat.com>
  664. * libsupc++/compare: Remove strong_equality and weak_equality.
  665. 2019-11-06 Jonathan Wakely <jwakely@redhat.com>
  666. * include/Makefile.in: Regenerate.
  667. * libsupc++/Makefile.in: Regenerate.
  668. * libsupc++/compare (__3way_builtin_ptr_cmp): Define helper.
  669. (compare_three_way): Add missing implementation.
  670. * include/bits/iterator_concepts.h (unreachable_sentinel_t): Remove
  671. redundant equality operators.
  672. * testsuite/util/testsuite_iterators.h (test_range::sentinel):
  673. Likewise.
  674. 2019-11-05 Jonathan Wakely <jwakely@redhat.com>
  675. * libsupc++/compare: New header.
  676. * libsupc++/Makefile.am (std_HEADERS): Add compare.
  677. * include/std/version: Define __cpp_lib_three_way_comparison.
  678. * include/std/functional: #include <compare>.
  679. * include/std/version [!_GLIBCXX_HOSTED]: Do not define feature test
  680. macros for features that are only present in hosted builds.
  681. * include/bits/iterator_concepts.h (__iter_without_nested_types):
  682. Remove incorrect comment.
  683. 2019-10-31 Jonathan Wakely <jwakely@redhat.com>
  684. * doc/html/*: Regenerate.
  685. * include/bits/refwrap.h (reference_wrapper, ref, cref): Add constexpr
  686. specifiers for C++20.
  687. * include/std/functional (_Mem_fn, mem_fn, _Bind, _Bind_result, bind)
  688. (bind_front, _Not_fn, not_fn): Likewise.
  689. * testsuite/20_util/bind/constexpr.cc: New test.
  690. * testsuite/20_util/function_objects/bind_front/constexpr.cc: New test.
  691. * testsuite/20_util/function_objects/mem_fn/constexpr.cc: New test.
  692. * testsuite/20_util/function_objects/not_fn/constexpr.cc: New test.
  693. * testsuite/20_util/reference_wrapper/constexpr.cc: New test.
  694. * doc/doxygen/user.cfg.in: Add new header.
  695. * include/Makefile.am: Add new header.
  696. * include/Makefile.in: Regenerate.
  697. * include/precompiled/stdc++.h: Include new header.
  698. * include/std/ranges: New header.
  699. (ranges::sentinel_t, ranges::range_value_t, ranges::range_reference_t)
  700. (ranges::range_rvalue_reference_t, ranges::sized_range)
  701. (ranges::output_range, ranges::input_ranges, ranges::forward_range)
  702. (ranges::bidirectional_range, ranges::random_access_range)
  703. (ranges::contiguous_range, ranges::common::range): Define.
  704. * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Check
  705. that disabled_sized_sentinel can be specialized.
  706. * testsuite/std/ranges/access/begin.cc: Include <ranges> instead of
  707. <iterator>.
  708. * testsuite/std/ranges/access/cbegin.cc: Likewise.
  709. * testsuite/std/ranges/access/cdata.cc: Likewise.
  710. * testsuite/std/ranges/access/cend.cc: Likewise.
  711. * testsuite/std/ranges/access/crbegin.cc: Likewise.
  712. * testsuite/std/ranges/access/crend.cc: Likewise.
  713. * testsuite/std/ranges/access/data.cc: Likewise.
  714. * testsuite/std/ranges/access/empty.cc: Likewise.
  715. * testsuite/std/ranges/access/end.cc: Likewise.
  716. * testsuite/std/ranges/access/end_neg.cc: Likewise.
  717. * testsuite/std/ranges/access/rbegin.cc: Likewise.
  718. * testsuite/std/ranges/access/rend.cc: Likewise.
  719. * testsuite/std/ranges/access/size.cc: Likewise.
  720. * testsuite/std/ranges/access/size_neg.cc: Likewise.
  721. * testsuite/std/ranges/headers/ranges/synopsis.cc: New test.
  722. * testsuite/std/ranges/range.cc: New test.
  723. * testsuite/std/ranges/refinements.cc: New test.
  724. * testsuite/std/ranges/sized.cc: New test.
  725. * testsuite/util/testsuite_iterators.h: Add aliases for range types.
  726. (output_iterator_wrapper::WritableObject::operator=): Add const
  727. qualifier so that output_iterator_wrapper satisfies writable.
  728. * testsuite/20_util/add_pointer/value.cc: Check void types.
  729. * include/bits/range_access.h (__sizable): Rename to __sentinel_size.
  730. Remove workaround for PR c++/92268 and remove redundant requirements
  731. that are already checked by sized_sentinel_for.
  732. * testsuite/std/ranges/access/cend.cc: Fix failures.
  733. * testsuite/std/ranges/access/end.cc: Likewise.
  734. * include/bits/range_access.h (ranges::begin): Combine array and
  735. non-array overloads into one function template. Only use ADL for
  736. classes and enums.
  737. (ranges::end, ranges::size): Likewise. Make unbounded arrays
  738. ill-formed.
  739. (ranges::rbegin, ranges::rend): Only use ADL for classes and enums.
  740. Reformat _S_noexcept() functions to mirror operator() structure.
  741. * testsuite/std/ranges/access/begin.cc: Check incomplete array.
  742. * testsuite/std/ranges/access/end_neg.cc: New test.
  743. * testsuite/std/ranges/access/size.cc: Check array of incomplete type.
  744. * testsuite/std/ranges/access/size_neg.cc: New test.
  745. * testsuite/24_iterators/range_access*.cc: Move to ...
  746. * testsuite/24_iterators/range_access/range_access*.cc: ... here.
  747. * testsuite/24_iterators/range_access/range_access_cpp20_neg.cc: New
  748. test.
  749. 2019-10-30 Jonathan Wakely <jwakely@redhat.com>
  750. * include/std/concepts (std::ranges::swap): Use a single overload for
  751. the non-array cases, and switch using if-constexpr.
  752. * include/bits/stl_iterator.h (__normal_iterator::iterator_concept):
  753. Guard with __cpp_lib_concepts macro.
  754. * include/std/bit (__cpp_lib_bitops): Define.
  755. * include/std/version (__cpp_lib_constexpr): Remove.
  756. (__cpp_lib_bitops, __cpp_lib_constexpr_dynamic_alloc): Define.
  757. * testsuite/26_numerics/bit/header.cc: New test.
  758. * testsuite/26_numerics/bit/header-2.cc: New test.
  759. * testsuite/20_util/allocator_traits/header.cc: New test.
  760. * testsuite/20_util/allocator_traits/header-2.cc: New test.
  761. * include/bits/stl_iterator.h (namespace __gnu_cxx): Remove
  762. using-declarations for std::iterator and std::iterator_traits.
  763. (__gnu_cxx::__normal_iterator): Qualify iterator_traits.
  764. * include/ext/algorithm (namespace __gnu_cxx): Remove
  765. using-declarations for std names and qualify those names when used.
  766. Also refer to std::min in parentheses to protect against function-like
  767. macros.
  768. * include/ext/rc_string_base.h: Qualify iterator_traits.
  769. * include/ext/sso_string_base.h: Qualify iterator_traits.
  770. PR libstdc++/92272
  771. * include/bits/stl_bvector.h (_Bit_iterator::pointer)
  772. (_Bit_const_iterator::pointer): Define as void for C++20.
  773. * include/bits/stl_iterator.h (reverse_iterator::operator->()): Add
  774. constraints for C++20.
  775. (__normal_iterator::iterator_concept): Define for C++20.
  776. * include/bits/streambuf_iterator.h (istreambuf_iterator::pointer):
  777. Define as void for C++20.
  778. (ostreambuf_iterator::difference_type): Define as ptrdiff_t for C++20.
  779. (ostreambuf_iterator::ostreambuf_iterator()): Add default constructor
  780. for C++20.
  781. * testsuite/23_containers/vector/bool/iterator_c++20.cc: New test.
  782. * testsuite/24_iterators/bidirectional/concept.cc: New test.
  783. * testsuite/24_iterators/bidirectional/tag.cc: New test.
  784. * testsuite/24_iterators/contiguous/concept.cc: New test.
  785. * testsuite/24_iterators/contiguous/tag.cc: New test.
  786. * testsuite/24_iterators/forward/concept.cc: New test.
  787. * testsuite/24_iterators/forward/tag.cc: New test.
  788. * testsuite/24_iterators/input/concept.cc: New test.
  789. * testsuite/24_iterators/input/tag.cc: New test.
  790. * testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc:
  791. New test.
  792. * testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc:
  793. New test.
  794. * testsuite/24_iterators/output/concept.cc: New test.
  795. * testsuite/24_iterators/output/tag.cc: New test.
  796. * testsuite/24_iterators/random_access/concept.cc: New test.
  797. * testsuite/24_iterators/random_access/tag.cc: New test.
  798. * testsuite/24_iterators/range_operations/advance_debug_neg.cc: New
  799. test.
  800. * testsuite/24_iterators/random_access_iterator/26020.cc: Move to ...
  801. * testsuite/24_iterators/operations/26020.cc: ... here.
  802. * testsuite/24_iterators/random_access_iterator/
  803. string_vector_iterators.cc: Move to ...
  804. * testsuite/24_iterators/random_access/string_vector_iterators.cc: ...
  805. here.
  806. * testsuite/util/testsuite_iterators.h: Fix typo in __cplusplus check.
  807. 2019-10-29 Jonathan Wakely <jwakely@redhat.com>
  808. * include/bits/range_access.h (ranges::disable_sized_range)
  809. (ranges::begin, ranges::end, ranges::cbegin, ranges::cend)
  810. (ranges::rbegin, ranges::rend, ranges::crbegin, ranges::crend)
  811. (ranges::size, ranges::empty, ranges::data, ranges::cdata)
  812. (ranges::range, ranges::sized_range, ranges::advance, ranges::distance)
  813. (ranges::next, ranges::prev): Guard with __cpp_lib_concepts.
  814. * include/bits/stl_iterator.h (disable_sized_sentinel): Likewise.
  815. * include/bits/alloc_traits.h (__cpp_lib_constexpr_dynamic_alloc):
  816. Define.
  817. (allocator_traits::_S_construct, allocator_traits::_S_destroy)
  818. (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Use
  819. _GLIBCXX14_CONSTEXPR instead of constexpr.
  820. * include/bits/stl_construct.h (_Destroy): Likewise.
  821. * include/Makefile.am: Add new header.
  822. * include/Makefile.in: Regenerate.
  823. * include/bits/iterator_concepts.h: New header.
  824. (contiguous_iterator_tag, iter_reference_t, ranges::iter_move)
  825. (iter_rvalue_reference_t, incrementable_traits, iter_difference_t)
  826. (readable_traits, iter_value_t, readable, iter_common_reference_t)
  827. (writable, waekly_incrementable, incrementable)
  828. (input_or_output_iterator, sentinel_for, disable_sized_sentinel)
  829. (sized_sentinel_for, input_iterator, output_iterator)
  830. (forward_iterator, bidirectional_iterator, random_access_iterator)
  831. (contiguous_iterator, indirectly_unary_invocable)
  832. (indirectly_regular_unary_invocable, indirect_unary_predicate)
  833. (indirect_relation, indirect_strict_weak_order, indirect_result_t)
  834. (projected, indirectly_movable, indirectly_movable_storable)
  835. (indirectly_copyable, indirectly_copyable_storable, ranges::iter_swap)
  836. (indirectly_swappable, indirectly_comparable, permutable, mergeable)
  837. (sortable, unreachable_sentinel_t, unreachable_sentinel)
  838. (default_sentinel_t, default_sentinel): Define.
  839. (__detail::__cpp17_iterator, __detail::__cpp17_input_iterator)
  840. (__detail::__cpp17_fwd_iterator, __detail::__cpp17_bidi_iterator)
  841. (__detail::__cpp17_randacc_iterator): Define.
  842. (__iterator_traits): Define constrained specializations.
  843. * include/bits/move.h (move): Only use old concept check for C++98.
  844. * include/bits/range_access.h (ranges::disable_sized_range)
  845. (ranges::begin, ranges::end, ranges::cbegin, ranges::cend)
  846. (ranges::rbegin, ranges::rend, ranges::crbegin, ranges::crend)
  847. (ranges::size, ranges::empty, ranges::data, ranges::cdata): Define
  848. new customization points for C++20.
  849. (ranges::range, ranges::sized_range): Define new concepts for C++20.
  850. (ranges::advance, ranges::distance, ranges::next, ranges::prev):
  851. Define new functions for C++20.
  852. (__adl_end, __adl_cdata, __adl_cbegin, __adl_cend, __adl_rbegin)
  853. (__adl_rend, __adl_crbegin, __adl_crend, __adl_cdata, __adl_size)
  854. (__adl_empty): Remove.
  855. * include/bits/stl_iterator.h (disable_sized_sentinel): Specialize
  856. for reverse_iterator.
  857. * include/bits/stl_iterator_base_types.h (contiguous_iterator_tag):
  858. Define new struct for C++20.
  859. (iterator_traits<_Tp*>): Constrain partial specialization in C++20.
  860. * include/std/concepts (__is_class_or_enum): Move to __detail
  861. namespace.
  862. * testsuite/20_util/forward/c_neg.cc: Adjust dg-error line number.
  863. * testsuite/20_util/forward/f_neg.cc: Likewise.
  864. * testsuite/24_iterators/associated_types/incrementable.traits.cc: New
  865. test.
  866. * testsuite/24_iterators/associated_types/readable.traits.cc: New test.
  867. * testsuite/24_iterators/contiguous/concept.cc: New test.
  868. * testsuite/24_iterators/contiguous/tag.cc: New test.
  869. * testsuite/24_iterators/customization_points/iter_move.cc: New test.
  870. * testsuite/24_iterators/customization_points/iter_swap.cc: New test.
  871. * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: New test.
  872. * testsuite/24_iterators/range_operations/advance.cc: New test.
  873. * testsuite/24_iterators/range_operations/distance.cc: New test.
  874. * testsuite/24_iterators/range_operations/next.cc: New test.
  875. * testsuite/24_iterators/range_operations/prev.cc: New test.
  876. * testsuite/26_numerics/adjacent_difference/requirements/
  877. explicit_instantiation/2.cc: Rename types that conflict with C++20
  878. concepts.
  879. * testsuite/26_numerics/adjacent_difference/requirements/
  880. explicit_instantiation/pod.cc: Likewise.
  881. * testsuite/26_numerics/partial_sum/requirements/
  882. explicit_instantiation/2.cc: Likewise.
  883. * testsuite/26_numerics/partial_sum/requirements/
  884. explicit_instantiation/pod.cc: Likewise.
  885. * testsuite/experimental/iterator/requirements.cc: Likewise.
  886. * testsuite/std/ranges/access/begin.cc: New test.
  887. * testsuite/std/ranges/access/cbegin.cc: New test.
  888. * testsuite/std/ranges/access/cdata.cc: New test.
  889. * testsuite/std/ranges/access/cend.cc: New test.
  890. * testsuite/std/ranges/access/crbegin.cc: New test.
  891. * testsuite/std/ranges/access/crend.cc: New test.
  892. * testsuite/std/ranges/access/data.cc: New test.
  893. * testsuite/std/ranges/access/empty.cc: New test.
  894. * testsuite/std/ranges/access/end.cc: New test.
  895. * testsuite/std/ranges/access/rbegin.cc: New test.
  896. * testsuite/std/ranges/access/rend.cc: New test.
  897. * testsuite/std/ranges/access/size.cc: New test.
  898. * testsuite/util/testsuite_iterators.h (contiguous_iterator_wrapper)
  899. (test_range, test_sized_range): New test utilities.
  900. * testsuite/util/testsuite_iterators.h (BoundsContainer::size()): Add
  901. new member function.
  902. (WritableObject::operator=): Constrain with enable_if when available.
  903. (remove_cv): Use std::remove_if when available.
  904. (test_container::it(int)): Use size().
  905. (test_container::size()): Use BoundsContainer::size().
  906. PR libstdc++/92267
  907. * include/bits/stl_deque.h (_Deque_iterator(const _Deque_iterator&)):
  908. Do not define as defaulted.
  909. * testsuite/23_containers/deque/types/92267.cc: New test.
  910. 2019-10-26 Gerald Pfeifer <gerald@pfeifer.com>
  911. * doc/xml/manual/codecvt.xml: Switch pubs.opengroup.org to https.
  912. * doc/xml/manual/locale.xml (LC_ALL): Ditto.
  913. * doc/xml/manual/messages.xml: Ditto.
  914. 2019-10-26 John David Anglin <danglin@gcc.gnu.org>
  915. * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
  916. 2019-10-25 Jonathan Wakely <jwakely@redhat.com>
  917. * testsuite/util/testsuite_iterators.h (output_iterator_wrapper)
  918. (input_iterator_wrapper, forward_iterator_wrapper)
  919. bidirectional_iterator_wrapper, random_access_iterator_wrapper): Remove
  920. user-provided copy constructors and copy assignment operators so they
  921. are defined implicitly.
  922. (input_iterator_wrapper): Initialize members in default constructor.
  923. (forward_iterator_wrapper): Remove assignments to members of base.
  924. * include/bits/allocator.h: Check __cpp_constexpr_dynamic_alloc
  925. before making the std::allocator destructor constexpr.
  926. * testsuite/20_util/allocator/requirements/constexpr.cc: New test.
  927. * include/bits/range_cmp.h: Check __cpp_lib_concepts before defining
  928. concepts. Fix comment.
  929. * include/bits/allocator.h
  930. 2019-10-25 Gerald Pfeifer <gerald@pfeifer.com>
  931. * doc/xml/manual/policy_data_structures_biblio.xml: Switch
  932. pubs.opengroup.org to https.
  933. 2019-10-25 Gerald Pfeifer <gerald@pfeifer.com>
  934. * doc/xml/gnu/gpl-3.0.xml: Switch www.gnu.org to https.
  935. 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
  936. * doc/xml/manual/status_cxx2020.xml: Add rows and update status.
  937. 2019-10-24 Jonathan Wakely <jwakely@redhat.com>
  938. * include/bits/allocator.h (allocator<void>): Restore the explicit
  939. specialization for C++20, but make its API consistent with the primary
  940. template.
  941. (allocator::~allocator()): Restore the destructor for C++20, but make
  942. it constexpr.
  943. * testsuite/20_util/allocator/rebind_c++20.cc: Check allocator<void>.
  944. * testsuite/20_util/allocator/requirements/typedefs_c++20.cc: Likewise.
  945. * testsuite/20_util/allocator/void.cc: Check that constructors and
  946. destructors are trivial. Check for converting constructor in C++20.
  947. * testsuite/ext/malloc_allocator/variadic_construct.cc: Simplify
  948. dejagnu target selector.
  949. * testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
  950. * include/experimental/executor (__use_future_ct, use_future_t):
  951. Define partial specializations for std::allocator.
  952. (__use_future_ch): Overload constructor for completion tokens using
  953. std::allocator.
  954. PR libstdc++/88338 Implement P0898R3, C++20 concepts library
  955. * doc/xml/manual/status_cxx2020.xml: Update status.
  956. * doc/html/*: Regenerate.
  957. * testsuite/std/concepts/1.cc: New test.
  958. * testsuite/std/concepts/2.cc: New test.
  959. * include/bits/random.h (uniform_random_bit_generator): Define for
  960. C++20.
  961. * testsuite/26_numerics/random/concept.cc: New test.
  962. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
  963. 2019-10-23 Jonathan Wakely <jwakely@redhat.com>
  964. * include/std/functional (invoke): Add constexpr for C++20.
  965. * include/std/version (__cpp_lib_constexpr_invoke): Define.
  966. * testsuite/20_util/function_objects/invoke/constexpr.cc: New test.
  967. PR c++/91369 Implement P0784R7 changes to allocation and construction
  968. * include/bits/alloc_traits.h: Include <bits/stl_construct.h>.
  969. (allocator_traits::_S_allocate, allocator_traits::_S_construct)
  970. (allocator_traits::_S_destroy, allocator_traits::_S_max_size)
  971. (allocator_traits::_S_select, allocator_traits::allocate)
  972. (allocator_traits::deallocate, allocator_traits::construct)
  973. (allocator_traits::destroy, allocator_traits::max_size)
  974. (allocator_traits::select_on_container_copy_construction)
  975. (allocator_traits<allocator<T>>): Add constexpr specifier for C++20.
  976. (allocator_traits<allocator<T>>::construct): Use construct_at.
  977. (allocator_traits<allocator<T>>::destroy): Use destroy_at.
  978. (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Add constexpr
  979. specifier.
  980. (_Destroy(ForwardIterator, ForwardIterator, Alloc&))
  981. (_Destroy(ForwardIterator, ForwardIterator, allocator<T>&)): Move here
  982. from <bits/stl_construct.h>.
  983. * include/bits/allocator.h (allocator::~allocator): Remove for C++20.
  984. (allocator::allocate, allocate::deallocate): Define for C++20 and up.
  985. (operator==, operator!=): Add constexpr specifier for C++20.
  986. * include/bits/stl_construct.h: Don't include <ext/alloc_traits.h>.
  987. (destroy_at): For C++20 add constexpr specifier and support for
  988. destroying arrays.
  989. (construct_at): Define new function for C++20.
  990. (_Construct): Return result of placement new-expression. For C++11 and
  991. up add constexpr. For C++20 dispatch to std::construct_at during
  992. constant evaluation.
  993. (_Destroy(pointer)): Add constexpr specifier. For C++20 dispatch to
  994. std::destroy_at during constant evaluation.
  995. (_Destroy_aux::__destroy, _Destroy_n_aux::__destroy_n): Add constexpr
  996. specifier for C++20.
  997. (_Destroy(ForwardIterator, ForwardIterator))
  998. (_Destroy(ForwardIterator, Size)): Likewise. Do not elide trivial
  999. destructors during constant evaluation.
  1000. (destroy, destroy_n): Add constexpr specifier for C++20.
  1001. (_Destroy(ForwardIterator, ForwardIterator, Alloc&))
  1002. (_Destroy(ForwardIterator, ForwardIterator, allocator<T>&)): Move to
  1003. <bits/alloc_traits.h>, to remove dependency on allocators.
  1004. * include/bits/stl_uninitialized.h: Include <ext/alloc_traits.h>.
  1005. Include <bits/stl_pair.h> instead of <utility>.
  1006. * include/ext/alloc_traits.h: Always include <bits/alloc_traits.h>.
  1007. (__alloc_traits::construct, __alloc_traits::destroy)
  1008. (__alloc_traits::_S_select_on_copy, __alloc_traits::_S_on_swap): Add
  1009. constexpr specifier.
  1010. * include/ext/malloc_allocator.h (operator==, operator!=): Add
  1011. constexpr specifier for C++20.
  1012. * include/ext/new_allocator.h (operator==, operator!=): Likewise.
  1013. * testsuite/20_util/headers/memory/synopsis.cc: Add constexpr.
  1014. * testsuite/20_util/scoped_allocator/69293_neg.cc: Ignore additional
  1015. errors due to constexpr function called after failed static_assert.
  1016. * testsuite/20_util/specialized_algorithms/construct_at/1.cc: New test.
  1017. * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
  1018. Ignore additional errors due to constexpr function called after failed
  1019. static_assert.
  1020. * testsuite/23_containers/vector/cons/destructible_neg.cc: Likewise.
  1021. * testsuite/20_util/bind/91371.cc: Fix test to compile as C++11.
  1022. * include/debug/helper_functions.h (__valid_range): Change
  1023. _GLIBCXX_CONSTEXPR to _GLIBCXX14_CONSTEXPR.
  1024. * include/ext/throw_allocator.h (throw_allocator_base): Qualify
  1025. size_t and ptrdiff_t.
  1026. * include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp:
  1027. Use detail::rebind_traits.
  1028. * include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp:
  1029. Likewise.
  1030. * include/ext/pb_ds/detail/bin_search_tree_/traits.hpp: Likewise.
  1031. * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Likewise.
  1032. * include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp: Likewise.
  1033. * include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp: Likewise.
  1034. * include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp:
  1035. Likewise.
  1036. * include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp:
  1037. Likewise.
  1038. * include/ext/pb_ds/detail/branch_policy/branch_policy.hpp: Likewise.
  1039. * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Likewise.
  1040. * include/ext/pb_ds/detail/cond_dealtor.hpp: Likewise.
  1041. * include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp (has_eq_fn): Likewise.
  1042. * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Likewise.
  1043. * include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Likewise.
  1044. * include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Likewise.
  1045. * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
  1046. left_child_next_sibling_heap_.hpp: Likewise.
  1047. * include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp:
  1048. Likewise.
  1049. * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
  1050. point_const_iterator.hpp: Likewise.
  1051. * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Likewise.
  1052. * include/ext/pb_ds/detail/ov_tree_map_/
  1053. constructors_destructor_fn_imps.hpp: Likewise.
  1054. * include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Likewise.
  1055. * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Likewise.
  1056. * include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Likewise.
  1057. * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Likewise.
  1058. * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: Likewise.
  1059. * include/ext/pb_ds/detail/rb_tree_map_/node.hpp: Likewise.
  1060. * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Likewise.
  1061. * include/ext/pb_ds/detail/splay_tree_/node.hpp: Likewise.
  1062. * include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Likewise.
  1063. * include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp:
  1064. Likewise.
  1065. * include/ext/pb_ds/detail/type_utils.hpp: Fix typo in comment.
  1066. * include/ext/pb_ds/detail/types_traits.hpp (stored_value): Add
  1067. bool parameter to control whether the hash value is stored.
  1068. (select_base_type): New class template and partial specialization.
  1069. (maybe_null_type): Likewise.
  1070. (rebind_traits): New class template.
  1071. (type_base): Remove four nearly identical specializations.
  1072. (type_dispatch): Remove.
  1073. (type_traits): Use select_base_type and maybe_null_type instead of
  1074. type_base to control differences between specializations.
  1075. * include/ext/pb_ds/list_update_policy.hpp: Use detail::rebind_traits.
  1076. * include/ext/pb_ds/priority_queue.hpp: Likewise.
  1077. * include/ext/pb_ds/tree_policy.hpp: Likewise.
  1078. * include/ext/pb_ds/trie_policy.hpp: Likewise.
  1079. * include/backward/hash_set (hash_set): Use __alloc_traits.
  1080. * include/backward/hashtable.h (_Hashtable): Likewise.
  1081. * include/ext/alloc_traits.h (__alloc_traits::allocate): Add overload
  1082. taking a hint.
  1083. * include/ext/extptr_allocator.h (_ExtPtr_allocator::allocate): Ignore
  1084. hint.
  1085. * include/ext/slist (_Slist_base): Use __alloc_traits.
  1086. * include/tr1/hashtable.h (_Hashtable): Likewise.
  1087. * include/tr1/regex (match_results): Use vector::const_reference
  1088. instead of assuming the allocator defines it.
  1089. * testsuite/backward/hash_map/23528.cc: Use allocator_traits in C++11.
  1090. * testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc: Use
  1091. __gnu_test::max_size.
  1092. * testsuite/tr1/6_containers/unordered_multimap/capacity/
  1093. 29134-multimap.cc: Likewise.
  1094. * testsuite/tr1/6_containers/unordered_multiset/capacity/
  1095. 29134-multiset.cc: Likewise.
  1096. * testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc:
  1097. Likewise.
  1098. 2019-10-22 Jonathan Wakely <jwakely@redhat.com>
  1099. * testsuite/util/testsuite_abi.h: Restore use of tr1/unordered_map
  1100. when compiled as C++98.
  1101. * include/bits/memoryfwd.h (uses_allocator): Do not declare for C++98.
  1102. * testsuite/17_intro/names.cc: Check uses_allocator in C++98.
  1103. * include/bits/alloc_traits.h
  1104. (allocator_traits<allocator<T>>::allocate): Ignore hint for C++20.
  1105. (allocator_traits<allocator<T>>::construct): Perform placement new
  1106. directly for C++20, instead of calling allocator<T>::construct.
  1107. (allocator_traits<allocator<T>>::destroy): Call destructor directly
  1108. for C++20, instead of calling allocator<T>::destroy.
  1109. (allocator_traits<allocator<T>>::max_size): Return value directly
  1110. for C++20, instead of calling std::allocator<T>::max_size().
  1111. (__do_alloc_on_copy, __do_alloc_on_move, __do_alloc_on_swap): Do not
  1112. define for C++17 and up.
  1113. (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Use if-constexpr
  1114. for C++17 and up, instead of tag dispatching.
  1115. * include/bits/allocator.h (allocator<void>): Remove for C++20.
  1116. (allocator::pointer, allocator::const_pointer, allocator::reference)
  1117. (allocator::const_reference, allocator::rebind): Remove for C++20.
  1118. * include/bits/basic_string.h (basic_string): Use __alloc_traits to
  1119. rebind allocator.
  1120. * include/bits/memoryfwd.h (allocator<void>): Remove for C++20.
  1121. * include/ext/debug_allocator.h: Use __alloc_traits for rebinding.
  1122. * include/ext/malloc_allocator.h (malloc_allocator::~malloc_allocator)
  1123. (malloc_allocator::pointer, malloc_allocator::const_pointer)
  1124. (malloc_allocator::reference, malloc_allocator::const_reference)
  1125. (malloc_allocator::rebind, malloc_allocator::max_size)
  1126. (malloc_allocator::construct, malloc_allocator::destroy): Do not
  1127. define for C++20.
  1128. (malloc_allocator::_M_max_size): Define new function.
  1129. * include/ext/new_allocator.h (new_allocator::~new_allocator)
  1130. (new_allocator::pointer, new_allocator::const_pointer)
  1131. (new_allocator::reference, new_allocator::const_reference)
  1132. (new_allocator::rebind, new_allocator::max_size)
  1133. (new_allocator::construct, new_allocator::destroy): Do not
  1134. define for C++20.
  1135. (new_allocator::_M_max_size): Define new function.
  1136. * include/ext/rc_string_base.h (__rc_string_base::_Rep): Use
  1137. __alloc_traits to rebind allocator.
  1138. * include/ext/rope (_Rope_rep_base, _Rope_base): Likewise.
  1139. (rope::rope(CharT, const allocator_type&)): Use __alloc_traits
  1140. to construct character.
  1141. * include/ext/slist (_Slist_base): Use __alloc_traits to rebind
  1142. allocator.
  1143. * include/ext/sso_string_base.h (__sso_string_base::_M_max_size):
  1144. Use __alloc_traits.
  1145. * include/ext/throw_allocator.h (throw_allocator): Do not use optional
  1146. members of std::allocator, use __alloc_traits members instead.
  1147. * include/ext/vstring.h (__versa_string): Use __alloc_traits.
  1148. * include/ext/vstring_util.h (__vstring_utility): Likewise.
  1149. * include/std/memory: Include <bits/alloc_traits.h>.
  1150. * testsuite/20_util/allocator/8230.cc: Use __gnu_test::max_size.
  1151. * testsuite/20_util/allocator/rebind_c++20.cc: New test.
  1152. * testsuite/20_util/allocator/requirements/typedefs.cc: Do not check
  1153. for pointer, const_pointer, reference, const_reference or rebind in
  1154. C++20.
  1155. * testsuite/20_util/allocator/requirements/typedefs_c++20.cc: New test.
  1156. * testsuite/23_containers/deque/capacity/29134.cc: Use
  1157. __gnu_test::max_size.
  1158. * testsuite/23_containers/forward_list/capacity/1.cc: Likewise.
  1159. * testsuite/23_containers/list/capacity/29134.cc: Likewise.
  1160. * testsuite/23_containers/map/capacity/29134.cc: Likewise.
  1161. * testsuite/23_containers/multimap/capacity/29134.cc: Likewise.
  1162. * testsuite/23_containers/multiset/capacity/29134.cc: Likewise.
  1163. * testsuite/23_containers/set/capacity/29134.cc: Likewise.
  1164. * testsuite/23_containers/vector/capacity/29134.cc: Likewise.
  1165. * testsuite/ext/malloc_allocator/variadic_construct.cc: Do not run
  1166. test for C++20.
  1167. * testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
  1168. * testsuite/ext/vstring/capacity/29134.cc: Use __gnu_test::max_size.
  1169. * testsuite/util/replacement_memory_operators.h: Do not assume
  1170. Alloc::pointer exists.
  1171. * testsuite/util/testsuite_allocator.h (__gnu_test::max_size): Define
  1172. helper to call max_size for any allocator.
  1173. 2019-10-22 Andreas Schwab <schwab@suse.de>
  1174. * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
  1175. 2019-10-18 Jonathan Wakely <jwakely@redhat.com>
  1176. PR libstdc++/92143
  1177. * libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment
  1178. to at least sizeof(void*).
  1179. * include/bits/range_cmp.h (ranges::less::operator()): Inline the
  1180. logic from std::less::operator() to remove the dependency on it.
  1181. 2019-10-17 Jonathan Wakely <jwakely@redhat.com>
  1182. * doc/doxygen/user.cfg.in (INPUT): Add new C++17 and C++20 headers.
  1183. * include/Makefile.am: Add new header.
  1184. * include/Makefile.in: Regenerate.
  1185. * include/bits/range_cmp.h: New header for C++20 function objects.
  1186. * include/std/functional: Include new header.
  1187. * testsuite/20_util/function_objects/identity/1.cc: New test.
  1188. * testsuite/20_util/function_objects/range.cmp/equal_to.cc: New test.
  1189. * testsuite/20_util/function_objects/range.cmp/greater.cc: New test.
  1190. * testsuite/20_util/function_objects/range.cmp/greater_equal.cc: New
  1191. test.
  1192. * testsuite/20_util/function_objects/range.cmp/less.cc: New test.
  1193. * testsuite/20_util/function_objects/range.cmp/less_equal.cc: New test.
  1194. * testsuite/20_util/function_objects/range.cmp/not_equal_to.cc: New
  1195. test.
  1196. PR libstdc++/92124
  1197. * include/bits/forward_list.h
  1198. (_M_move_assign(forward_list&&, false_type)): Do not use
  1199. __make_move_if_noexcept, instead move unconditionally.
  1200. * include/bits/stl_deque.h (_M_move_assign2(deque&&, false_type)):
  1201. Likewise.
  1202. * include/bits/stl_list.h (_M_move_assign(list&&, false_type)):
  1203. Likewise.
  1204. * include/bits/stl_vector.h (_M_move_assign(vector&&, false_type)):
  1205. Likewise.
  1206. * testsuite/23_containers/vector/92124.cc: New test.
  1207. 2019-10-16 Jonathan Wakely <jwakely@redhat.com>
  1208. * include/bits/c++config (_GLIBCXX_BUILTIN_IS_SAME_AS): Define to
  1209. one of __is_same_as or __is_same when available.
  1210. * include/std/concepts (__detail::__same_as): Use std::is_same_v.
  1211. * include/std/type_traits (is_same) [_GLIBCXX_BUILTIN_IS_SAME_AS]:
  1212. Use new macro instead of __is_same_as.
  1213. (is_same) [!_GLIBCXX_BUILTIN_IS_SAME_AS]: Restore partial
  1214. specialization.
  1215. (is_same_v) [_GLIBCXX_BUILTIN_IS_SAME_AS]: Use new macro.
  1216. (is_same_v) [!_GLIBCXX_BUILTIN_IS_SAME_AS]: Use std::is_same.
  1217. 2019-10-16 François Dumont <fdumont@gcc.gnu.org>
  1218. * src/c++11/debug.cc (print_field): Replace constness_names <unknown>
  1219. entry with <unknown constness>. Replace state_names <unknown> entry with
  1220. <unknown state>.
  1221. 2019-10-11 Jonathan Wakely <jwakely@redhat.com>
  1222. * include/Makefile.am: Add new header.
  1223. * include/Makefile.in: Regenerate.
  1224. * include/precompiled/stdc++.h: Include <concepts>.
  1225. * include/std/concepts: New header for C++20.
  1226. * include/std/version (__cpp_lib_concepts): Define.
  1227. * scripts/create_testsuite_files: Look for test files in new std
  1228. directory.
  1229. * testsuite/libstdc++-dg/conformance.exp: Likewise.
  1230. * testsuite/std/concepts/concepts.callable/invocable.cc: New test.
  1231. * testsuite/std/concepts/concepts.callable/regular_invocable.cc: New
  1232. test.
  1233. * testsuite/std/concepts/concepts.callable/relation.cc: New test.
  1234. * testsuite/std/concepts/concepts.callable/strictweakorder.cc: New
  1235. test.
  1236. * testsuite/std/concepts/concepts.lang/concept.arithmetic/
  1237. floating_point.cc: New test.
  1238. * testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc:
  1239. New test.
  1240. * testsuite/std/concepts/concepts.lang/concept.arithmetic/
  1241. signed_integral.cc: New test.
  1242. * testsuite/std/concepts/concepts.lang/concept.arithmetic/
  1243. unsigned_integral.cc: New test.
  1244. * testsuite/std/concepts/concepts.lang/concept.assignable/1.cc: New
  1245. test.
  1246. * testsuite/std/concepts/concepts.lang/concept.common/1.cc: New test.
  1247. * testsuite/std/concepts/concepts.lang/concept.commonref/1.cc: New
  1248. test.
  1249. * testsuite/std/concepts/concepts.lang/concept.constructible/1.cc:
  1250. New test.
  1251. * testsuite/std/concepts/concepts.lang/concept.convertible/1.cc:
  1252. New test.
  1253. * testsuite/std/concepts/concepts.lang/concept.copyconstructible/1.cc:
  1254. New test.
  1255. * testsuite/std/concepts/concepts.lang/concept.defaultconstructible/
  1256. 1.cc: New test.
  1257. * testsuite/std/concepts/concepts.lang/concept.derived/1.cc:
  1258. New test.
  1259. * testsuite/std/concepts/concepts.lang/concept.destructible/1.cc:
  1260. New test.
  1261. * testsuite/std/concepts/concepts.lang/concept.moveconstructible/1.cc:
  1262. New test.
  1263. * testsuite/std/concepts/concepts.lang/concept.same/1.cc:
  1264. New test.
  1265. * testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
  1266. New test.
  1267. * testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc:
  1268. New test.
  1269. * testsuite/std/concepts/concepts.lang/concept.swappable/
  1270. swappable_with.cc: New test.
  1271. * testsuite/std/concepts/concepts.object/copyable.cc: New test.
  1272. * testsuite/std/concepts/concepts.object/movable.cc: New test.
  1273. * testsuite/std/concepts/concepts.object/regular.cc: New test.
  1274. * testsuite/std/concepts/concepts.object/semiregular.cc: New test.
  1275. * include/std/type_traits (is_same): Replace partial specialization
  1276. by using __is_same_as built-in in primary template.
  1277. (is_same_v): Use __is_same_as built-in instead of instantiating the
  1278. is_same trait.
  1279. PR libstdc++/92059
  1280. * include/tr2/dynamic_bitset (__dynamic_bitset_base): Define all
  1281. special member functions as defaulted. Add noexcept to most members.
  1282. (__dynamic_bitset_base(size_t, unsigned long long, const _Alloc&)):
  1283. Mask off unwanted bits in the __val parameter. Avoid undefined left
  1284. shifts.
  1285. (__dynamic_bitset_base::_M_assign): Remove.
  1286. (__dynamic_bitset_base::_M_do_reset): Use std::fill.
  1287. (__dynamic_bitset_base::_M_are_all_aux): Avoid integer promotion when
  1288. block_type has lower rank than int.
  1289. (dynamic_bitset): Add noexcept to most members. Use injected-class-name
  1290. in return types and parameter types.
  1291. (dynamic_bitset::_M_Nb): Add default member initializer.
  1292. (dynamic_bitset(), dynamic_bitset(const dynamic_bitset&)): Define as
  1293. defaulted.
  1294. (dynamic_bitset(dynamic_bitset&&)): Clear source object after move.
  1295. (dynamic_bitset::operator=(const dynamic_bitset&)): Define as
  1296. defaulted.
  1297. (dynamic_bitset::operator=(dynamic_bitset&&)): Add noexcept-specifier.
  1298. Define without using swap, to propagate allocator correctly.
  1299. (dynamic_bitset(const char*, const _Alloc&)): Use strlen.
  1300. (dynamic_bitset::_M_do_sanitize, dynamic_bitset::_M_do_fill): Use
  1301. casts to avoid unwanted integer promotions.
  1302. (dynamic_bitset::_M_copy_from_ptr): Rearrange template parameters and
  1303. add default template arguments and default argument to simplify usage.
  1304. (dynamic_bitset::_M_copy_from_string): Adjust call to _M_copy_from_ptr.
  1305. (operator==(const dynamic_bitset&, const dynamic_bitset&))
  1306. (operator<(const dynamic_bitset&, const dynamic_bitset&)): Use _M_Nb.
  1307. * include/tr2/dynamic_bitset.tcc (dynamic_bitset::_M_copy_from_ptr):
  1308. Adjust template parameters to match declaration.
  1309. * testsuite/tr2/dynamic_bitset/cmp.cc: New test.
  1310. * testsuite/tr2/dynamic_bitset/cons.cc: New test.
  1311. * testsuite/tr2/dynamic_bitset/copy.cc: New test.
  1312. * testsuite/tr2/dynamic_bitset/move.cc: New test.
  1313. * testsuite/tr2/dynamic_bitset/pr92059.cc: New test.
  1314. * include/bits/charconv.h (__to_chars_len): Avoid -Wsign-compare
  1315. warnings.
  1316. 2019-10-10 Jonathan Wakely <jwakely@redhat.com>
  1317. PR libstdc++/91057
  1318. * src/c++98/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]
  1319. (find_ldbl_sync_facet): Fix parameter type and missing return.
  1320. 2019-10-09 Marek Polacek <polacek@redhat.com>
  1321. PR c++/91364 - P0388R4: Permit conversions to arrays of unknown bound.
  1322. PR c++/69531 - DR 1307: Differently bounded array parameters.
  1323. PR c++/88128 - DR 330: Qual convs and pointers to arrays of pointers.
  1324. * testsuite/23_containers/span/lwg3255.cc: Adjust test to match the
  1325. post-P0388R4 behavior.
  1326. 2019-10-09 Jonathan Wakely <jwakely@redhat.com>
  1327. PR libstdc++/91057
  1328. * src/c++98/locale.cc (locale::id::_M_id()) [__GTHREADS]: Use atomic
  1329. compare-exchange or double-checked lock to ensure only one thread sets
  1330. the _M_index variable.
  1331. [_GLIBCXX_LONG_DOUBLE_COMPAT]: Call find_ldbl_sync_facet to detect
  1332. facets that share another facet's ID.
  1333. [_GLIBCXX_LONG_DOUBLE_COMPAT] (find_ldbl_sync_facet): New function.
  1334. PR libstdc++/78552
  1335. * src/c++98/locale_init.cc (locale::classic()): Do not construct a new
  1336. locale object for every call.
  1337. (locale::_S_initialize_once()): Construct C locale here.
  1338. 2019-10-08 Jonathan Wakely <jwakely@redhat.com>
  1339. * doc/Makefile.am (doc-html-docbook-regenerate): New target.
  1340. (${docbook_outdir}/html): Do not create unused 'html/ext' directory.
  1341. * doc/Makefile.in: Regenerate.
  1342. * doc/xml/manual/documentation_hacking.xml: Document new target.
  1343. * doc/html/*: Regenerate.
  1344. * doc/xml/manual/allocator.xml: Use archived copy of CUJ article.
  1345. * doc/html/*: Regenerate.
  1346. 2019-10-06 François Dumont <fdumont@gcc.gnu.org>
  1347. * include/bits/stl_algo.h
  1348. (__copy_n_a(_IIte, _Size, _OIte)): New.
  1349. (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New declaration.
  1350. (__copy_n(_IIte, _Size, _OIte, input_iterator_tag)): Adapt to use
  1351. latter.
  1352. * include/bits/streambuf_iterator.h (istreambuf_iterator<>): Declare
  1353. std::__copy_n_a friend.
  1354. (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New.
  1355. * testsuite/25_algorithms/copy_n/istreambuf_iterator/1.cc: New.
  1356. * testsuite/25_algorithms/copy_n/istreambuf_iterator/1_neg.cc: New.
  1357. * testsuite/25_algorithms/copy_n/istreambuf_iterator/2_neg.cc: New.
  1358. * include/bits/stl_iterator_base_types.h (__iterator_category_t): Define
  1359. for C++11.
  1360. (_RequireInputIte): Likewise and use __enable_if_t.
  1361. * include/std/numeric
  1362. (__is_random_access_iter): Use __iterator_category_t.
  1363. * include/bits/stl_algo.h (copy_n): Add __glibcxx_requires_can_increment
  1364. debug checks.
  1365. * testsuite/25_algorithms/copy_n/debug/1_neg.cc: New.
  1366. * testsuite/25_algorithms/copy_n/debug/2_neg.cc: New.
  1367. 2019-10-04 François Dumont <fdumont@gcc.gnu.org>
  1368. * include/debug/forward_list
  1369. (_Sequence_traits<__debug::forward_list<>>::_S_size): Returns __dp_sign
  1370. distance when not empty.
  1371. * include/debug/list (_Sequence_traits<__debug::list<>>::_S_size):
  1372. Likewise.
  1373. * include/debug/helper_functions.h (__dp_sign_max_size): New
  1374. _Distance_precision enum entry.
  1375. (__valid_range_aux(_IIte, _IIte, _Distance_traits<>::__type,
  1376. __false_type)): Adapt.
  1377. * include/debug/safe_iterator.tcc
  1378. (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator&)): Review
  1379. distance computation.
  1380. 2019-10-04 Jonathan Wakely <jwakely@redhat.com>
  1381. PR libstdc++/81091
  1382. PR libstdc++/91947
  1383. * configure.ac: Use AC_SYS_LARGEFILE to enable 64-bit file APIs.
  1384. * config.h.in: Regenerate:
  1385. * configure: Regenerate:
  1386. * include/Makefile.am (${host_builddir}/largefile-config.h): New
  1387. target to generate config header for filesystem library.
  1388. (${host_builddir}/c++config.h): Rename macros for large file support.
  1389. * include/Makefile.in: Regenerate.
  1390. * src/c++17/fs_dir.cc: Include new config header.
  1391. * src/c++17/fs_ops.cc: Likewise.
  1392. (filesystem::file_size): Use uintmax_t for size.
  1393. * src/filesystem/dir.cc: Include new config header.
  1394. * src/filesystem/ops.cc: Likewise.
  1395. (experimental::filesystem::file_size): Use uintmax_t for size.
  1396. * testsuite/util/testsuite_abi.h: Use std::unordered_map instead of
  1397. std::tr1::unordered_map.
  1398. * testsuite/util/testsuite_allocator.h: Likewise.
  1399. * include/tr1/hashtable.h: Add header for __gnu_cxx::__alloc_traits.
  1400. * include/tr1/hashtable.h (tr1::_Hashtable::_M_allocate_node): Use
  1401. __gnu_cxx::__alloc_traits for allocator construct function.
  1402. (tr1::_Hashtable::_M_deallocate_node): Likewise for destroy function.
  1403. * include/precompiled/stdc++.h: Include <span> for C++20.
  1404. * testsuite/17_intro/names.cc: Do not define 'e' for C++20.
  1405. 2019-10-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
  1406. * include/parallel/multiway_merge.h (_RAIter3): Replace _C by _Cp.
  1407. 2019-10-02 Jonathan Wakely <jwakely@redhat.com>
  1408. * config/abi/pre/gnu.ver: Tighten up greedy wildcards.
  1409. * doc/xml/manual/parallel_mode.xml: Add caveat about support for
  1410. recent standards.
  1411. * doc/html/*: Regenerate.
  1412. 2019-10-01 Jonathan Wakely <jwakely@redhat.com>
  1413. * include/experimental/algorithm (experimental::sample): Qualify call
  1414. to __sample correctly.
  1415. * include/parallel/algo.h (sample, for_each_n): Add using-declarations
  1416. for algorithms that don't have parallel implementations.
  1417. * include/parallel/algobase.h (equal, lexicographical_compare): Add
  1418. _GLIBCXX20_CONSTEXPR and dispatch to sequential algorithm when being
  1419. constant evaluated.
  1420. * include/parallel/algorithmfwd.h (equal, lexicographical_compare):
  1421. Add _GLIBCXX20_CONSTEXPR.
  1422. * testsuite/17_intro/using_namespace_std_tr1_neg.cc: Skip test for
  1423. parallel mode.
  1424. * testsuite/20_util/hash/84998.cc: Likewise.
  1425. * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: Likewise.
  1426. * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: Likewise.
  1427. * testsuite/23_containers/list/pmr_typedefs_debug.cc: Likewise.
  1428. * testsuite/23_containers/map/pmr_typedefs_debug.cc: Likewise.
  1429. * testsuite/23_containers/multimap/pmr_typedefs_debug.cc: Likewise.
  1430. * testsuite/23_containers/multiset/pmr_typedefs_debug.cc: Likewise.
  1431. * testsuite/23_containers/set/pmr_typedefs_debug.cc: Likewise.
  1432. * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc:
  1433. Likewise.
  1434. * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
  1435. Likewise.
  1436. * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
  1437. Likewise.
  1438. * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc:
  1439. Likewise.
  1440. * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
  1441. Likewise.
  1442. * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: Likewise.
  1443. * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
  1444. * testsuite/25_algorithms/copy/86658.cc: Likewise.
  1445. * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
  1446. * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
  1447. * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
  1448. * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
  1449. * include/parallel/algo.h: Replace non-reserved names.
  1450. * include/parallel/multiway_merge.h: Likewise.
  1451. * include/parallel/multiway_mergesort.h: Likewise.
  1452. * include/parallel/numericfwd.h: Likewise.
  1453. * testsuite/17_intro/names.cc: Add RAI to test macros.
  1454. 2019-09-30 François Dumont <fdumont@gcc.gnu.org>
  1455. * include/debug/array: Add C++20 constexpr to comparison operators.
  1456. * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: Adapt
  1457. dg-error line numbers.
  1458. * testsuite/23_containers/array/tuple_interface/
  1459. tuple_element_debug_neg.cc: Likewise.
  1460. 2019-09-30 Andreas Tobler <andreast@gcc.gnu.org>
  1461. * include/experimental/internet: Include netinet/in.h if we have
  1462. _GLIBCXX_HAVE_NETINET_IN_H defined.
  1463. * testsuite/ext/special_functions/airy_ai/check_nan.cc: Ignore the
  1464. FreeBSD warning about lower advertised precision of tgammal.
  1465. * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
  1466. * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc: Likewise.
  1467. * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc: Likewise.
  1468. * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc: Likewise.
  1469. * testsuite/special_functions/10_cyl_neumann/check_nan.cc: Likewise.
  1470. * testsuite/special_functions/19_sph_bessel/check_nan.cc: Likewise.
  1471. * testsuite/special_functions/21_sph_neumann/check_nan.cc: Likewise.
  1472. * testsuite/tr1/5_numerical_facilities/special_functions/
  1473. 08_cyl_bessel_i/check_nan.cc: Likewise.
  1474. * testsuite/tr1/5_numerical_facilities/special_functions/
  1475. 09_cyl_bessel_j/check_nan.cc: Likewise.
  1476. * testuite/tr1/5_numerical_facilities/special_functions/
  1477. 10_cyl_bessel_k/check_nan.cc: Likewise.
  1478. * testsuite/tr1/5_numerical_facilities/special_functions/
  1479. 11_cyl_neumann/check_nan.cc: Likewise.
  1480. * testsuite/tr1/5_numerical_facilities/special_functions/
  1481. 21_sph_bessel/check_nan.cc: Likewise.
  1482. * testsuite/tr1/5_numerical_facilities/special_functions/
  1483. 23_sph_neumann/check_nan.cc: Likewise.
  1484. 2019-09-30 Jonathan Wakely <jwakely@redhat.com>
  1485. * include/std/span (span(element_type(&)[N]))
  1486. (span(array<value_type, N>&), span(const array<value_type, N>&)):
  1487. Deduce array element type to allow safe const conversions (LWG 3255).
  1488. [!_GLIBCXX_P1394] (span(Container&), span(const Container&)): Use
  1489. remove_cv_t on arguments to __is_std_span and __is_std_array.
  1490. * testsuite/23_containers/span/lwg3255.cc: New test.
  1491. PR libstdc++/77936
  1492. * include/parallel/checkers.h (__is_sorted): Remove unused variable.
  1493. 2019-09-28 François Dumont <fdumont@gcc.gnu.org>
  1494. * include/bits/stl_algo.h (merge): Fix documentation.
  1495. * include/debug/functions.h (__check_sorted_aux): Add C++20 constexpr.
  1496. (__check_sorted): Likewise and remove nested irreflexive check.
  1497. (__check_sorted_set_aux, __check_sorted_set): Add C++20 constexpr.
  1498. (__check_partitioned_lower, __check_partitioned_upper): Likewise.
  1499. (_Irreflexive_checker::_S_is_valid): Likewise.
  1500. (__is_irreflexive, __is_irreflexive_pred): Likewise.
  1501. * include/debug/helper_functions.h (__get_distance): Add constexpr.
  1502. (__valid_range_aux): Add C++20 constexpr.
  1503. (__valid_range(_Iter, _Iter, _Distance_traits<_Iter>::__type&)):
  1504. Likewise and add std::is_constant_evaluated check.
  1505. (__valid_range_aux(_Iter, _Iter, std::input_iterator_tag)): New.
  1506. (__valid_range_aux(_Iter, _Iter, std::random_accss_iterator_tag)): New.
  1507. (__valid_range_aux(_Integral, _Integral, std::__true_type)): New,
  1508. use latter.
  1509. (__valid_range(_Iter, _Iter)): Adapt to use latter, add constexpr and
  1510. __builtin_is_contant_evaludated check..
  1511. (__can_advance, __base): Add constexpr.
  1512. * include/debug/macros.h [_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED]
  1513. (_GLIBCXX_DEBUG_VERIFY_COND_AT): New.
  1514. (__glibcxx_check_sorted): Use __glibcxx_check_irreflexive.
  1515. (__glibcxx_check_sorted_pred): Use __glibcxx_check_irreflexive_pred.
  1516. * testsuite/25_algorithms/binary_search/constexpr.cc: Use irreflexive
  1517. std::less.
  1518. * testsuite/25_algorithms/is_sorted/constexpr.cc: Likewise.
  1519. * testsuite/25_algorithms/merge/constexpr.cc: Fix order in camm. Fix
  1520. lambda to be irreflexive.
  1521. 2019-09-27 Maciej W. Rozycki <macro@wdc.com>
  1522. * configure: Regenerate.
  1523. 2019-09-27 Jonathan Wakely <jwakely@redhat.com>
  1524. PR libstdc++/91910
  1525. * src/c++11/debug.cc (_Safe_iterator_base::_M_detach()): Load pointer
  1526. atomically and lock the mutex before accessing the sequence.
  1527. (_Safe_local_iterator_base::_M_detach()): Likewise.
  1528. (_Safe_iterator_base::_M_reset()): Clear _M_sequence atomically.
  1529. 2019-09-26 Jonathan Wakely <jwakely@redhat.com>
  1530. * include/debug/array (to_array): Define for debug mode.
  1531. * include/bits/stl_pair.h (pair): Add _GLIBCXX20_CONSTEXPR to
  1532. piecewise construction constructor, assignment operators, and swap.
  1533. * include/std/tuple (pair::pair(piecewise_construct_t, tuple, tuple)):
  1534. Add _GLIBCXX20_CONSTEXPR.
  1535. (pair::pair(tuple, tuple, _Index_tuple, _Index_tuple)): Likewise.
  1536. * testsuite/20_util/pair/constexpr_assign.cc: New test.
  1537. * testsuite/20_util/pair/constexpr_swap.cc: New test.
  1538. * include/experimental/internet (operator==, operator<): Fix loop
  1539. condition to avoid reading past the end of the array.
  1540. * include/std/array: Remove references to profile mode.
  1541. * include/std/bitset: Likewise.
  1542. * include/std/deque: Likewise.
  1543. * include/std/forward_list: Likewise.
  1544. * include/std/list: Likewise.
  1545. * include/std/map: Likewise.
  1546. * include/std/set: Likewise.
  1547. * include/std/unordered_map: Likewise.
  1548. * include/std/unordered_set: Likewise.
  1549. * include/std/vector: Likewise.
  1550. * testsuite/17_intro/headers/c++1998/profile_mode.cc: New test.
  1551. * testsuite/17_intro/headers/c++2011/profile_mode.cc: New test.
  1552. 2019-09-25 Jonathan Wakely <jwakely@redhat.com>
  1553. * include/bits/regex.h
  1554. (basic_regex::assign(const C*, size_t, flag_type)): Add default
  1555. argument (LWG 3296).
  1556. * testsuite/28_regex/basic_regex/assign/char/lwg3296.cc: New test.
  1557. * testsuite/28_regex/basic_regex/assign/wchar_t/lwg3296.cc: New test.
  1558. 2019-09-24 Jonathan Wakely <jwakely@redhat.com>
  1559. * include/std/variant (variant::index()): Remove impossible case.
  1560. PR libstdc++/91871
  1561. * testsuite/util/testsuite_hooks.h
  1562. (conversion::iterator_to_const_iterator()): Do not return an invalid
  1563. iterator. Test direct-initialization and direct-list-initialization
  1564. as well as implicit conversion.
  1565. 2019-09-23 Jonathan Wakely <jwakely@redhat.com>
  1566. PR libstdc++/91788 (partial)
  1567. * include/std/variant (variant::index()): Improve codegen for cases
  1568. where conversion to size_t already works correctly.
  1569. 2019-09-23 Andreas Schwab <schwab@suse.de>
  1570. * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
  1571. 2019-09-12 Jonathan Wakely <jwakely@redhat.com>
  1572. PR libstdc++/91748
  1573. * include/bits/stl_algo.h (for_each_n): Fix random access iterator
  1574. case.
  1575. * testsuite/25_algorithms/for_each/for_each_n.cc: Test with random
  1576. access iterators.
  1577. 2019-09-11 Jonathan Wakely <jwakely@redhat.com>
  1578. * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker.__call__):
  1579. Fix syntax error.
  1580. * testsuite/20_util/result_of/sfinae_friendly_1.cc: Add -Wno-volatile
  1581. for C++2a and up. Define HAS_52748_FIXED and fix incorrect tests.
  1582. * testsuite/tr1/3_function_objects/result_of.cc: Add -Wno-volatile
  1583. for C++2a and up.
  1584. 2019-09-10 Jonathan Wakely <jwakely@redhat.com>
  1585. * include/std/type_traits (__do_common_type_impl): Implement
  1586. additional COND-RES(CREF(D1), CRED(D2)) condition for C++20.
  1587. (basic_common_reference, common_reference, common_reference_t): Define
  1588. for C++20.
  1589. * testsuite/20_util/common_reference/requirements/alias_decl.cc: New
  1590. test.
  1591. * testsuite/20_util/common_reference/requirements/
  1592. explicit_instantiation.cc: New test.
  1593. * testsuite/20_util/common_reference/requirements/typedefs.cc: New
  1594. test.
  1595. * include/std/charconv (to_chars): Rename to __to_chars_i. Define
  1596. non-template overloads for each signed and unsigned integer type and
  1597. char. Define deleted overload for bool (LWG 3266).
  1598. * testsuite/20_util/to_chars/1_neg.cc: Remove.
  1599. * testsuite/20_util/to_chars/3.cc: New test.
  1600. * testsuite/20_util/to_chars/lwg3266.cc: New test.
  1601. 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
  1602. * acinclude.m4: Handle uclinux*.
  1603. * configure: Regenerate.
  1604. * configure.host: Handle uclinux*
  1605. 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
  1606. Mickaël Guêné <mickael.guene@st.com>
  1607. * libsupc++/eh_personality.cc (get_ttype_entry): Add FDPIC
  1608. support.
  1609. 2019-09-10 Jonathan Wakely <jwakely@redhat.com>
  1610. PR libstdc++/91711
  1611. * testsuite/23_containers/span/get_neg.cc: Avoid ambiguity due to
  1612. 0ul being a valid null pointer constant.
  1613. * include/std/type_traits (__remove_cv_t): New alias template.
  1614. (is_void, is_integral, is_floating_point, is_pointer)
  1615. (is_member_object_pointer, is_member_function_pointer, is_null_pointer)
  1616. (is_member_point), __is_signed_integer, __is_unsigned_integer)
  1617. (__make_unsigned_selector, __make_signed_selector, remove_pointer)
  1618. (__decay_selector): Use __remove_cv_t.
  1619. (remove_cv): Add partial specializations for cv-qualified types.
  1620. (__decay_t): New alias template.
  1621. (__decay_and_strip, __common_type_impl, __result_of_impl): Use
  1622. __decay_t.
  1623. (__enable_if_t): Move earlier in the file.
  1624. (_Require): Use __enable_if_t.
  1625. (swap(T&, T&)): Use _Require.
  1626. (swap(T(&)[N])): Use __enable_if_t.
  1627. 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
  1628. Implement C++20 p1424 - 'constexpr' feature macro concerns,
  1629. Issue 3256 - Feature testing macro for constexpr algorithms,
  1630. and Issue 3257 - Missing feature testing macro update from P0858.
  1631. * include/std/version (__cpp_lib_constexpr_algorithms): Bump value.
  1632. * include/bits/algorithmfwd.h: Ditto.
  1633. * include/std/utility: Ditto.
  1634. * testsuite/25_algorithms/constexpr_macro.cc: Ditto.
  1635. * testsuite/25_algorithms/cpp_lib_constexpr.cc: New check for
  1636. __cpp_lib_constexpr macro in <algorith>.
  1637. * testsuite/20_util/exchange/constexpr.cc: Add check for
  1638. __cpp_lib_constexpr macro in <utility>.
  1639. * testsuite/25_algorithms/adjacent_find/constexpr.cc: Remove check for
  1640. __cpp_lib_constexpr_algorithms.
  1641. * testsuite/25_algorithms/all_of/constexpr.cc: Ditto.
  1642. * testsuite/25_algorithms/any_of/constexpr.cc: Ditto.
  1643. * testsuite/25_algorithms/binary_search/constexpr.cc: Ditto.
  1644. * testsuite/25_algorithms/copy/constexpr.cc: Ditto.
  1645. * testsuite/25_algorithms/copy_backward/constexpr.cc: Ditto.
  1646. * testsuite/25_algorithms/copy_if/constexpr.cc: Ditto.
  1647. * testsuite/25_algorithms/copy_n/constexpr.cc: Ditto.
  1648. * testsuite/25_algorithms/count/constexpr.cc: Ditto.
  1649. * testsuite/25_algorithms/count_if/constexpr.cc: Ditto.
  1650. * testsuite/25_algorithms/equal/constexpr.cc: Ditto.
  1651. * testsuite/25_algorithms/equal_range/constexpr.cc: Ditto.
  1652. * testsuite/25_algorithms/fill/constexpr.cc: Ditto.
  1653. * testsuite/25_algorithms/fill_n/constexpr.cc: Ditto.
  1654. * testsuite/25_algorithms/find/constexpr.cc: Ditto.
  1655. * testsuite/25_algorithms/find_end/constexpr.cc: Ditto.
  1656. * testsuite/25_algorithms/find_first_of/constexpr.cc: Ditto.
  1657. * testsuite/25_algorithms/find_if/constexpr.cc: Ditto.
  1658. * testsuite/25_algorithms/find_if_not/constexpr.cc: Ditto.
  1659. * testsuite/25_algorithms/for_each/constexpr.cc: Ditto.
  1660. * testsuite/25_algorithms/generate/constexpr.cc: Ditto.
  1661. * testsuite/25_algorithms/generate_n/constexpr.cc: Ditto.
  1662. * testsuite/25_algorithms/is_heap/constexpr.cc: Ditto.
  1663. * testsuite/25_algorithms/is_heap_until/constexpr.cc: Ditto.
  1664. * testsuite/25_algorithms/is_partitioned/constexpr.cc: Ditto.
  1665. * testsuite/25_algorithms/is_permutation/constexpr.cc: Ditto.
  1666. * testsuite/25_algorithms/is_sorted/constexpr.cc: Ditto.
  1667. * testsuite/25_algorithms/is_sorted_until/constexpr.cc: Ditto.
  1668. * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: Ditto.
  1669. * testsuite/25_algorithms/lower_bound/constexpr.cc: Ditto.
  1670. * testsuite/25_algorithms/merge/constexpr.cc: Ditto.
  1671. * testsuite/25_algorithms/mismatch/constexpr.cc: Ditto.
  1672. * testsuite/25_algorithms/none_of/constexpr.cc: Ditto.
  1673. * testsuite/25_algorithms/partition_copy/constexpr.cc: Ditto.
  1674. * testsuite/25_algorithms/partition_point/constexpr.cc: Ditto.
  1675. * testsuite/25_algorithms/remove/constexpr.cc: Ditto.
  1676. * testsuite/25_algorithms/remove_copy/constexpr.cc: Ditto.
  1677. * testsuite/25_algorithms/remove_copy_if/constexpr.cc: Ditto.
  1678. * testsuite/25_algorithms/remove_if/constexpr.cc: Ditto.
  1679. * testsuite/25_algorithms/replace_copy/constexpr.cc: Ditto.
  1680. * testsuite/25_algorithms/replace_copy_if/constexpr.cc: Ditto.
  1681. * testsuite/25_algorithms/replace_if/constexpr.cc: Ditto.
  1682. * testsuite/25_algorithms/reverse_copy/constexpr.cc: Ditto.
  1683. * testsuite/25_algorithms/rotate_copy/constexpr.cc: Ditto.
  1684. * testsuite/25_algorithms/search/constexpr.cc: Ditto.
  1685. * testsuite/25_algorithms/search_n/constexpr.cc: Ditto.
  1686. * testsuite/25_algorithms/set_difference/constexpr.cc: Ditto.
  1687. * testsuite/25_algorithms/set_intersection/constexpr.cc: Ditto.
  1688. * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: Ditto.
  1689. * testsuite/25_algorithms/set_union/constexpr.cc: Ditto.
  1690. * testsuite/25_algorithms/transform/constexpr.cc: Ditto.
  1691. * testsuite/25_algorithms/unique/constexpr.cc: Ditto.
  1692. * testsuite/25_algorithms/unique_copy/constexpr.cc: Ditto.
  1693. * testsuite/25_algorithms/upper_bound/constexpr.cc: Ditto.
  1694. 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
  1695. Update docs for recent <span> and constexpr lib changes.
  1696. * doc/xml/manual/status_cxx2020.xml: Update p0202r3, p0858r0, p0879r0,
  1697. p1023r0, p1085r2 status.
  1698. * doc/html/manual/status.html: Regenerate.
  1699. 2019-09-09 Antony Polukhin <antoshkka@gmail.com>
  1700. * include/bits/charconv.h (__detail::__to_chars_10_impl): Replace
  1701. final offsets with constants.
  1702. 2019-09-09 Jonathan Wakely <jwakely@redhat.com>
  1703. * include/bits/range_access.h (__adl_to_address): Remove.
  1704. * include/std/span (__is_base_derived_safe_convertible_v): Replace
  1705. with span::__is_compatible.
  1706. (__is_std_array_v): Replace with __is_std_array class template and
  1707. partial specializations.
  1708. (__is_std_array, __is_std_span): New class templates and partial
  1709. specializations.
  1710. (span::__is_compatible): New alias template for SFINAE constraints.
  1711. (span::span(element_type (&)[N])): Remove redundant constraints. Do
  1712. not use __adl_data to obtain a pointer.
  1713. (span::span(array<value_type, N>&)): Likewise.
  1714. (span::span(const array<value_type, N>&)): Likewise.
  1715. [_GLIBCXX_P1394] (span::iter_reference_t, span::iterator_t)
  1716. (span::iter_value_t, span::derived_from): New alias templates for
  1717. SFINAE constraints, until the equivalents are supported in <concepts>
  1718. and <iterator>.
  1719. [_GLIBCXX_P1394] (span::__is_compatible_iterator): New alias template
  1720. for SFINAE constraints.
  1721. [_GLIBCXX_P1394] (span::is_compatible_range): New class template for
  1722. SFINAE constraints.
  1723. [_GLIBCXX_P1394] (span::span(Range&&)): Improve constraints.
  1724. [_GLIBCXX_P1394] (span::span(ContiguousIterator, Sentinel)): Likewise.
  1725. Use std::to_address instead of __adl_to_address.
  1726. [_GLIBCXX_P1394] (span::span(ContiguousIterator, size_type)): Likewise.
  1727. [!_GLIBCXX_P1394] (span::__is_compatible_container): New alias
  1728. template for SFINAE constraints.
  1729. [!_GLIBCXX_P1394] (span::span(Container&))
  1730. (span::span(const Container&)): Improve constraints.
  1731. [!_GLIBCXX_P1394] (span::span(pointer, size_type))
  1732. (span::span(pointer, pointer)): Remove redundant cast of pointer.
  1733. (span(const span<OType, OExtent>&)): New constructor.
  1734. 2019-09-06 Jonathan Wakely <jwakely@redhat.com>
  1735. * include/bits/range_access.h (ssize): Define for C++20.
  1736. * testsuite/24_iterators/range_access_cpp20.cc: New test.
  1737. * doc/xml/manual/status_cxx2020.xml: Update P1227R2 status.
  1738. * doc/html/*: Regenerate.
  1739. 2019-09-06 Florian Weimer <fweimer@redhat.com>
  1740. * configure: Regenerate.
  1741. 2019-09-05 Jonathan Wakely <jwakely@redhat.com>
  1742. * doc/xml/manual/status_cxx2020.xml: Update status for P0122R7 and
  1743. P1024R3. Remove entry for P0920R2.
  1744. * include/std/span (__cpp_lib_span): Change value.
  1745. (__extent_storage, __extent_storage<dynamic_extent>): Remove default
  1746. constructor.
  1747. (span): Replace __extent_storage base class with data member.
  1748. (span::_S_subspan_extent): New function.
  1749. (span::empty()): Add nodiscard attribute.
  1750. (span::front, span::back, span::operator[]): Check preconditions.
  1751. (span::first, span::last, span::subspan): Add noexcept. Improve
  1752. precondition checks (LWG 3103).
  1753. (get): Remove redundant condition from static_assert.
  1754. (tuple_element<I, span<T, E>>): Fix static_assert message and simplify.
  1755. (as_writable_bytes): Add inline specifier.
  1756. * include/std/version (__cpp_lib_span): Change value.
  1757. * testsuite/23_containers/span/back_neg.cc: Remove stray semi-colon.
  1758. * testsuite/23_containers/span/front_neg.cc: Likewise.
  1759. * testsuite/23_containers/span/index_op_neg.cc: Likewise.
  1760. * testsuite/23_containers/span/last_neg.cc: Improve test.
  1761. * testsuite/23_containers/span/subspan_neg.cc: Likewise.
  1762. * testsuite/23_containers/span/1.cc: New test.
  1763. * testsuite/23_containers/span/2.cc: New test.
  1764. * testsuite/23_containers/span/back_assert_neg.cc: New test.
  1765. * testsuite/23_containers/span/first_2_assert_neg.cc: New test.
  1766. * testsuite/23_containers/span/first_assert_neg.cc: New test.
  1767. * testsuite/23_containers/span/first_neg.cc: New test.
  1768. * testsuite/23_containers/span/front_assert_neg.cc: New test.
  1769. * testsuite/23_containers/span/index_op_assert_neg.cc: New test.
  1770. * testsuite/23_containers/span/last_2_assert_neg.cc: New test.
  1771. * testsuite/23_containers/span/last_assert_neg.cc: New test.
  1772. * testsuite/23_containers/span/subspan_2_assert_neg.cc: New test.
  1773. * testsuite/23_containers/span/subspan_3_assert_neg.cc: New test.
  1774. * testsuite/23_containers/span/subspan_4_assert_neg.cc: New test.
  1775. * testsuite/23_containers/span/subspan_5_assert_neg.cc: New test.
  1776. * testsuite/23_containers/span/subspan_6_assert_neg.cc: New test.
  1777. * testsuite/23_containers/span/subspan_assert_neg.cc: New test.
  1778. 2019-09-05 JeanHeyd Meneide <phdofthehouse@gmail.com>
  1779. * include/Makefile.am: Add <span> header.
  1780. * include/Makefile.in: Regenerate.
  1781. * include/bits/range_access.h (__adl_begin, __adl_end, __adl_cbegin)
  1782. (__adl_cend, __adl_rbegin, __adl_rend, __adl_crbegin, __adl_crend)
  1783. (__adl_data, __adl_cdata, __adl_size, __adl_empty, __adl_to_address):
  1784. New functions for performing argument-dependent lookup of range
  1785. customization points.
  1786. * include/bits/stl_iterator.h (__normal_iterator): Add
  1787. _GLIBCXX20_CONSTEXPR to all functions.
  1788. * include/std/span: New header.
  1789. * include/std/version (__cpp_lib_span): Define feature test macro.
  1790. * testsuite/23_containers/span/contiguous_range_neg.cc: New test.
  1791. * testsuite/23_containers/span/everything.cc: New test.
  1792. * testsuite/23_containers/span/get_neg.cc: New test.
  1793. * testsuite/23_containers/span/last_neg.cc: New test.
  1794. * testsuite/23_containers/span/subspan_neg.cc: New test.
  1795. * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: New test.
  1796. * testsuite/23_containers/span/tuple_element_oob_neg.cc: New test.
  1797. * testsuite/23_containers/span/tuple_size_neg.cc: New test.
  1798. 2019-09-05 Jonathan Wakely <jwakely@redhat.com>
  1799. * doc/xml/manual/allocator.xml: Remove URL for bibliography entry.
  1800. * doc/html/*: Regenerate.
  1801. 2019-09-04 Mike Crowe <mac@mcrowe.com>
  1802. PR libstdc++/41861
  1803. * acinclude.m4 (GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT): Check for new
  1804. pthread_cond_clockwait function.
  1805. * configure.ac: Use GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT.
  1806. * configure: Regenerate.
  1807. * config.h.in: Regenerate.
  1808. * include/std/condition_variable: (condition_variable): Rename
  1809. __steady_clock_t typedef and add system_clock. Change __clock_t to be
  1810. a typedef for the preferred clock to convert arbitrary other clocks to.
  1811. [_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT] (wait_until): Add a steady_clock
  1812. overload.
  1813. (wait_until): Change __clock_t overload to use system_clock.
  1814. [_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT] (__wait_until_impl): Add
  1815. steady_clock overload that calls pthread_cond_clockwait.
  1816. (__wait_until_impl): Change __clock_t overload to use system_clock.
  1817. (condition_variable_any) [_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT]: Use
  1818. steady_clock for __clock_t if pthread_cond_clockwait is available.
  1819. 2019-09-04 Mike Crowe <mac@mcrowe.com>
  1820. * testsuite/30_threads/condition_variable/members/2.cc (test01):
  1821. Parameterise so that test can be run against an arbitrary clock.
  1822. (main): Test using std::chrono::steady_clock and a user-defined
  1823. clock in addition to the previous std::chrono::system_clock.
  1824. * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
  1825. 2019-09-03 Ulrich Weigand <uweigand@de.ibm.com>
  1826. * crossconfig.m4: Remove references to spu.
  1827. * configure: Regenerate.
  1828. * doc/xml/manual/appendix_contributing.xml: Remove references
  1829. to __ea as "badword" for spu.
  1830. * doc/html/manual/source_code_style.html: Regenerate.
  1831. * include/tr1/ell_integral.tcc (__ellint_rd): Do not attempt
  1832. to avoid __ea (as "badword" for spu).
  1833. (__ellint_rj): Likewise.
  1834. 2019-09-03 Chung-Lin Tang <cltang@codesourcery.com>
  1835. PR other/79543
  1836. * acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Fix GNU ld --version
  1837. scanning to conform to the GNU Coding Standards.
  1838. * configure: Regenerate.
  1839. 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
  1840. * src/c++17/memory_resource.cc: Use __constinit keyword.
  1841. 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
  1842. * doc/xml/manual/abi.xml: Document 9.x library versions.
  1843. * doc/html/*: Regenerate.
  1844. 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
  1845. * include/std/charconv (__detail::__to_chars_2_len): Use std::log2p1.
  1846. (__detail::__to_chars_8_len): Remove.
  1847. (__detail::__to_chars_8): Inline length calculation here.
  1848. (__detail::__from_chars_binary): Use numeric_limits instead of
  1849. CHAR_BIT.
  1850. 2019-09-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
  1851. * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
  1852. * config/abi/post/i386-solaris/amd64/baseline_symbols.txt: Likewise.
  1853. * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
  1854. * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
  1855. Likewise.
  1856. 2019-09-01 François Dumont <fdumont@gcc.gnu.org>
  1857. * testsuite_files/util/testsuite_performance.h
  1858. (resource_counter::start): Ignore unused malloc(0) result.
  1859. 2019-09-01 Gerald Pfeifer <gerald@pfeifer.com>
  1860. * doc/xml/manual/policy_data_structures_biblio.xml (COM: Component
  1861. Model Object Technologies): Adjust name and link.
  1862. 2019-08-30 Antony Polukhin <antoshkka@gmail.com>
  1863. * include/std/charconv (__detail::__to_chars_8)
  1864. __detail::__to_chars_16): Replace array of precomputed digits with
  1865. arithmetic operations to avoid CPU cache misses. Remove zero
  1866. termination from array of digits to allow symbol merge with generic
  1867. implementation of __detail::__to_chars. Replace final offsets with
  1868. constants. Use __detail::__to_chars_len_2 instead of a generic
  1869. __detail::__to_chars_len.
  1870. (__detail::__to_chars): Remove zero termination from array of digits.
  1871. (__detail::__to_chars_2): Leading digit is always '1'.
  1872. 2019-08-30 Jonathan Wakely <jwakely@redhat.com>
  1873. * testsuite/23_containers/vector/cons/89164_c++17.cc: Fix errors.
  1874. 2019-08-30 Uros Bizjak <ubizjak@gmail.com>
  1875. * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
  1876. 2019-08-30 Jonathan Wakely <jwakely@redhat.com>
  1877. PR libstdc++/89164
  1878. * include/bits/stl_algobase.h (__copy_move): Give descriptive names
  1879. to template parameters.
  1880. * include/bits/stl_uninitialized.h (uninitialized_copy)
  1881. (uninitialized_fill, uninitialized_fill_n): Add static assertions to
  1882. diagnose invalid uses.
  1883. * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
  1884. Adjust expected error.
  1885. * testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc:
  1886. New test.
  1887. * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/
  1888. 89164.cc: New test.
  1889. * testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc:
  1890. New test.
  1891. * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/
  1892. 89164.cc: New test.
  1893. * testsuite/23_containers/vector/cons/89164.cc: New test.
  1894. * testsuite/23_containers/vector/cons/89164_c++17.cc: New test.
  1895. 2019-08-29 Jonathan Wakely <jwakely@redhat.com>
  1896. PR libstdc++/91067
  1897. * acinclude.m4 (libtool_VERSION): Bump to 6:28:0.
  1898. * configure: Regenerate.
  1899. * config/abi/pre/gnu.ver (GLIBCXX_3.4.28): Add new version. Export
  1900. missing symbols.
  1901. * testsuite/27_io/filesystem/iterators/91067.cc: Test move
  1902. constructors.
  1903. * testsuite/util/testsuite_abi.cc: Add new symbol version.
  1904. 2019-08-29 Jakub Jelinek <jakub@redhat.com>
  1905. * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
  1906. * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
  1907. 2019-08-28 Jonathan Wakely <jwakely@redhat.com>
  1908. * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
  1909. * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
  1910. * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
  1911. * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
  1912. * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
  1913. * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
  1914. * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
  1915. 2019-08-23 Joseph Myers <joseph@codesourcery.com>
  1916. * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
  1917. (std::filesystem::__gnu_posix::lstat): Add return type.
  1918. 2019-08-20 Jonathan Wakely <jwakely@redhat.com>
  1919. * doc/doxygen/user.cfg.in (INPUT): Remove profile mode headers.
  1920. * include/std/numeric (reduce): Fix Doxygen markup.
  1921. PR libstdc++/91371
  1922. * include/std/type_traits (is_function): Simplify definition. Remove
  1923. partial specializations for function types.
  1924. (__is_referenceable): Simplify definition.
  1925. * testsuite/20_util/bind/91371.cc: New test.
  1926. * testsuite/20_util/is_function/91371.cc: New test.
  1927. * testsuite/20_util/is_function/value.cc: Check more pointer types.
  1928. * testsuite/20_util/is_member_function_pointer/91371.cc: New test.
  1929. * testsuite/20_util/is_object/91371.cc: New test.
  1930. 2019-08-16 Uros Bizjak <ubizjak@gmail.com>
  1931. * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
  1932. 2019-08-15 Jonathan Wakely <jwakely@redhat.com>
  1933. PR libstdc++/91456
  1934. * include/bits/std_function.h (__check_func_return_type): Remove.
  1935. (function::_Callable): Use std::__is_invocable_impl instead of
  1936. __check_func_return_type.
  1937. * include/std/type_traits (__is_invocable_impl): Add another defaulted
  1938. template parameter. Define a separate partial specialization for
  1939. INVOKE and INVOKE<void>. For INVOKE<R> replace is_convertible check
  1940. with a check that models delayed temporary materialization.
  1941. * testsuite/20_util/function/91456.cc: New test.
  1942. * testsuite/20_util/is_invocable/91456.cc: New test.
  1943. 2019-08-14 Jonathan Wakely <jwakely@redhat.com>
  1944. * include/std/type_traits (__is_nullptr_t): Add deprecated attribute.
  1945. 2019-08-14 Edward Smith-Rowland <3dw4rd@verizon.net>
  1946. Implement C++20 p0879 - Constexpr for swap and swap related functions.
  1947. * include/std/version (__cpp_lib_constexpr_swap_algorithms): New macro.
  1948. * include/bits/algorithmfwd.h (__cpp_lib_constexpr_swap_algorithms):
  1949. New macro.
  1950. (iter_swap, make_heap, next_permutation, partial_sort_copy, pop_heap)
  1951. (prev_permutation, push_heap, reverse, rotate, sort_heap, swap)
  1952. (swap_ranges, nth_element, partial_sort, sort): Add constexpr.
  1953. * include/bits/move.h (swap): Add constexpr.
  1954. * include/bits/stl_algo.h (__move_median_to_first, __reverse, reverse)
  1955. (__gcd, __rotate, rotate, __partition, __heap_select)
  1956. (__partial_sort_copy, partial_sort_copy, __unguarded_partition)
  1957. (__unguarded_partition_pivot, __partial_sort, __introsort_loop, __sort)
  1958. (__introselect, __chunk_insertion_sort, next_permutation)
  1959. (prev_permutation, partition, partial_sort, nth_element, sort)
  1960. (__iter_swap::iter_swap, iter_swap, swap_ranges): Add constexpr.
  1961. * include/bits/stl_algobase.h (__iter_swap::iter_swap, iter_swap)
  1962. (swap_ranges): Add constexpr.
  1963. * include/bits/stl_heap.h (__push_heap, push_heap, __adjust_heap,
  1964. __pop_heap, pop_heap, __make_heap, make_heap, __sort_heap, sort_heap):
  1965. Add constexpr.
  1966. * include/std/type_traits (swap): Add constexpr.
  1967. * testsuite/25_algorithms/headers/algorithm/synopsis.cc: Add constexpr.
  1968. * testsuite/25_algorithms/iter_swap/constexpr.cc: New test.
  1969. * testsuite/25_algorithms/make_heap/constexpr.cc: New test.
  1970. * testsuite/25_algorithms/next_permutation/constexpr.cc: New test.
  1971. * testsuite/25_algorithms/nth_element/constexpr.cc: New test.
  1972. * testsuite/25_algorithms/partial_sort/constexpr.cc: New test.
  1973. * testsuite/25_algorithms/partial_sort_copy/constexpr.cc: New test.
  1974. * testsuite/25_algorithms/partition/constexpr.cc: New test.
  1975. * testsuite/25_algorithms/pop_heap/constexpr.cc: New test.
  1976. * testsuite/25_algorithms/prev_permutation/constexpr.cc: New test.
  1977. * testsuite/25_algorithms/push_heap/constexpr.cc: New test.
  1978. * testsuite/25_algorithms/reverse/constexpr.cc: New test.
  1979. * testsuite/25_algorithms/rotate/constexpr.cc: New test.
  1980. * testsuite/25_algorithms/sort/constexpr.cc: New test.
  1981. * testsuite/25_algorithms/sort_heap/constexpr.cc: New test.
  1982. * testsuite/25_algorithms/swap/constexpr.cc: New test.
  1983. * testsuite/25_algorithms/swap_ranges/constexpr.cc: New test.
  1984. 2019-08-12 Jonathan Wakely <jwakely@redhat.com>
  1985. PR libstdc++/90361
  1986. * src/c++17/string-inst.cc: Use _GLIBCXX_USE_CXX11_ABI=1 by default.
  1987. * include/std/tuple (__unpack_std_tuple): New variable template and
  1988. partial specializations.
  1989. (apply, make_from_tuple): Add noexcept-specifier.
  1990. * testsuite/20_util/tuple/apply/2.cc: New test.
  1991. * testsuite/20_util/tuple/make_from_tuple/2.cc: New test.
  1992. 2019-08-09 Corentin Gay <gay@adacore.com>
  1993. * testsuite/ext/random/beta_distribution/operators/serialize.cc,
  1994. testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc,
  1995. testsuite/ext/random/normal_mv_distribution/operators/serialize.cc,
  1996. testsuite/ext/random/triangular_distribution/operators/serialize.cc,
  1997. testsuite/ext/random/von_mises_distribution/operators/serialize.cc:
  1998. Add call to `VERIFY`.
  1999. 2019-08-09 Alexandre Oliva <oliva@adacore.com>
  2000. * include/ext/random
  2001. (normal_mv_distribution::param_type::param_type): New private
  2002. ctor taking a decomposed varcov matrix, for use by...
  2003. (operator>>): ... this, befriended.
  2004. * include/ext/random.tcc (operator>>): Use it.
  2005. (normal_mv_distribution::param_type::_M_init_lower): Adjust
  2006. member function name in exception message.
  2007. 2019-08-08 Jonathan Wakely <jwakely@redhat.com>
  2008. P0325R4 to_array from LFTS with updates
  2009. * include/experimental/array (to_array): Qualify call to __to_array.
  2010. * include/std/array (__cpp_lib_to_array, to_array): Define for C++20.
  2011. * include/std/version (__cpp_lib_to_array): Likewise.
  2012. * testsuite/23_containers/array/creation/1.cc: New test.
  2013. * testsuite/23_containers/array/creation/2.cc: New test.
  2014. * testsuite/23_containers/array/creation/3_neg.cc: New test.
  2015. * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
  2016. Use zero for dg-error line number.
  2017. 2019-08-06 Jonathan Wakely <jwakely@redhat.com>
  2018. P1651R0 bind_front should not unwrap reference_wrapper
  2019. * include/std/functional (bind_front): Don't unwrap reference_wrapper.
  2020. * include/std/version (__cpp_lib_bind_front): Update value.
  2021. * testsuite/20_util/function_objects/bind_front/1.cc: Fix test for
  2022. feature test macro.
  2023. * testsuite/20_util/function_objects/bind_front/2.cc: New test.
  2024. * include/std/numbers [!__STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128]
  2025. (e_v, log2e_v, log10e_v, pi_v, inv_pi_v, inv_sqrtpi_v, ln2_v, ln10_v)
  2026. (sqrt2_v, sqrt3_v, inv_sqrt3, egamma_v, phi_v): Add explicit
  2027. specializations for __float128.
  2028. * testsuite/26_numerics/numbers/float128.cc: New test.
  2029. 2019-08-04 Gerald Pfeifer <gerald@pfeifer.com>
  2030. * doc/xml/manual/documentation_hacking.xml: doxygen.org is now
  2031. doxygen.nl.
  2032. 2019-08-01 Edward Smith-Rowland <3dw4rd@verizon.net>
  2033. Implement C++20 p0202 - Add Constexpr Modifiers to Functions
  2034. in <algorithm> and <utility> Headers.
  2035. Implement C++20 p1023 - constexpr comparison operators for std::array.
  2036. * include/bits/algorithmfwd.h (all_of, any_of, binary_search, copy,
  2037. copy_backward, copy_if, copy_n, equal_range, fill, find_end,
  2038. find_if_not, includes, is_heap, is_heap_until, is_partitioned,
  2039. is_permutation, is_sorted, is_sorted_until, iter_swap, lower_bound,
  2040. none_of, partition_copy, partition_point, remove, remove_if,
  2041. remove_copy, remove_copy_if, replace_copy, replace_copy_if,
  2042. reverse_copy, rotate_copy, uunique, upper_bound, adjacent_find, count,
  2043. count_if, equal, find, find_first_of, find_if, for_each, generate,
  2044. generate_n, lexicographical_compare, merge, mismatch, replace,
  2045. replace_if, search, search_n, set_difference, set_intersection,
  2046. set_symmetric_difference, set_union, transform, unique_copy):
  2047. Mark constexpr.
  2048. * include/bits/cpp_type_traits.h (__miter_base): Mark constexpr.
  2049. * include/bits/predefined_ops.h (_Iter_less_val::operator(),
  2050. _Val_less_iter::operator(), _Iter_equal_to_iter::operator(),
  2051. _Iter_equal_to_val::operator(), _Iter_equals_val::operator()):
  2052. Use const ref instead of ref arg;
  2053. (_Iter_less_val, __iter_less_val, _Val_less_iter, __val_less_iter,
  2054. __iter_equal_to_iter, __iter_equal_to_val, __iter_comp_val,
  2055. _Iter_comp_val, _Val_comp_iter, __val_comp_iter, __iter_equals_val,
  2056. _Iter_equals_iter, __iter_comp_iter, _Iter_pred, __pred_iter,
  2057. _Iter_comp_to_val, __iter_comp_val, _Iter_comp_to_iter,
  2058. __iter_comp_iter): Mark constexpr.
  2059. * include/bits/stl_algo.h (__find_if, __find_if_not, __find_if_not_n,
  2060. __search, __search_n_aux, __search_n, __find_end, find_end, all_of,
  2061. none_of, any_of, find_if_not, is_partitioned, partition_point,
  2062. __remove_copy_if, remove_copy, remove_copy_if, copy_if, __copy_n,
  2063. copy_n, partition_copy, __remove_if, remove, remove_if, __adjacent_find,
  2064. __unique, unique, __unique_copy, reverse_copy, rotate_copy,
  2065. __unguarded_linear_insert, __insertion_sort, __unguarded_insertion_sort,
  2066. __final_insertion_sort, lower_bound, __upper_bound, upper_bound,
  2067. __equal_range, equal_range, binary_search, __includes, includes,
  2068. __next_permutation, __prev_permutation, __replace_copy_if, replace_copy,
  2069. replace_copy_if, __count_if, is_sorted, __is_sorted_until,
  2070. is_sorted_until, __is_permutation, is_permutation, for_each, find,
  2071. find_if, find_first_of, adjacent_find, count, count_if, search,
  2072. search_n, transform, replace, replace_if, generate, generate_n,
  2073. unique_copy, __merge, merge, __set_union, set_union, __set_intersection,
  2074. set_intersection, __set_difference, set_difference,
  2075. __set_symmetric_difference, set_symmetric_difference): Mark constexpr.
  2076. * include/bits/stl_algobase.h (__memmove, __memcmp): New maybe constexpr
  2077. wrappers around __builtin_memmove and __builtin_memcmp
  2078. respectively;
  2079. (__niter_base, __niter_wrap, __copy_m, __copy_move_a, __copy_move_a2,
  2080. copy, move, __copy_move_b, __copy_move_backward_a,
  2081. __copy_move_backward_a2, copy_backward, move_backward, __fill_a, fill,
  2082. __fill_n_a, fill_n, equal, __lc_rai::__newlast1, __lc_rai::__cnd2,
  2083. __lexicographical_compare_impl, __lexicographical_compare,
  2084. __lexicographical_compare<true>::__lc, __lexicographical_compare_aux,
  2085. __lower_bound, lower_bound, equal, __equal4, lexicographical_compare,
  2086. __mismatch, mismatch, __is_heap_until, __is_heap, is_heap_until,
  2087. is_heap): Mark constexpr.
  2088. * include/bits/stl_heap.h (__is_heap_until, __is_heap, is_heap_until,
  2089. is_heap): Mark constexpr.
  2090. * include/bits/stl_iterator.h (__niter_base, __miter_base): Mark constexpr.
  2091. * include/std/array: Make comparison ops constexpr.
  2092. * include/std/utility: Make exchange constexpr.
  2093. * include/std/version (__cpp_lib_constexpr_algorithms): New macro.
  2094. * testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust.
  2095. * testsuite/23_containers/array/tuple_interface/
  2096. tuple_element_neg.cc: Adjust.
  2097. * testsuite/20_util/exchange/constexpr.cc: New.
  2098. * testsuite/23_containers/array/comparison_operators/constexpr.cc: New.
  2099. * testsuite/25_algorithms/constexpr_macro.cc: New.
  2100. * testsuite/25_algorithms/adjacent_find/constexpr.cc: New.
  2101. * testsuite/25_algorithms/all_of/constexpr.cc: New.
  2102. * testsuite/25_algorithms/any_of/constexpr.cc: New.
  2103. * testsuite/25_algorithms/binary_search/constexpr.cc: New.
  2104. * testsuite/25_algorithms/copy/constexpr.cc: New.
  2105. * testsuite/25_algorithms/copy_backward/constexpr.cc: New.
  2106. * testsuite/25_algorithms/copy_if/constexpr.cc: New.
  2107. * testsuite/25_algorithms/copy_n/constexpr.cc: New.
  2108. * testsuite/25_algorithms/count/constexpr.cc: New.
  2109. * testsuite/25_algorithms/count_if/constexpr.cc: New.
  2110. * testsuite/25_algorithms/equal/constexpr.cc: New.
  2111. * testsuite/25_algorithms/equal_range/constexpr.cc: New.
  2112. * testsuite/25_algorithms/fill/constexpr.cc: New.
  2113. * testsuite/25_algorithms/fill_n/constexpr.cc: New.
  2114. * testsuite/25_algorithms/find/constexpr.cc: New.
  2115. * testsuite/25_algorithms/find_end/constexpr.cc: New.
  2116. * testsuite/25_algorithms/find_first_of/constexpr.cc: New.
  2117. * testsuite/25_algorithms/find_if/constexpr.cc: New.
  2118. * testsuite/25_algorithms/find_if_not/constexpr.cc: New.
  2119. * testsuite/25_algorithms/for_each/constexpr.cc: New.
  2120. * testsuite/25_algorithms/generate/constexpr.cc: New.
  2121. * testsuite/25_algorithms/generate_n/constexpr.cc: New.
  2122. * testsuite/25_algorithms/is_heap/constexpr.cc: New.
  2123. * testsuite/25_algorithms/is_heap_until/constexpr.cc: New.
  2124. * testsuite/25_algorithms/is_partitioned/constexpr.cc: New.
  2125. * testsuite/25_algorithms/is_permutation/constexpr.cc: New.
  2126. * testsuite/25_algorithms/is_sorted/constexpr.cc: New.
  2127. * testsuite/25_algorithms/is_sorted_until/constexpr.cc: New.
  2128. * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: New.
  2129. * testsuite/25_algorithms/lower_bound/constexpr.cc: New.
  2130. * testsuite/25_algorithms/merge/constexpr.cc: New.
  2131. * testsuite/25_algorithms/mismatch/constexpr.cc: New.
  2132. * testsuite/25_algorithms/none_of/constexpr.cc: New.
  2133. * testsuite/25_algorithms/partition_copy/constexpr.cc: New.
  2134. * testsuite/25_algorithms/partition_point/constexpr.cc: New.
  2135. * testsuite/25_algorithms/remove/constexpr.cc: New.
  2136. * testsuite/25_algorithms/remove_copy/constexpr.cc: New.
  2137. * testsuite/25_algorithms/remove_copy_if/constexpr.cc: New.
  2138. * testsuite/25_algorithms/remove_if/constexpr.cc: New.
  2139. * testsuite/25_algorithms/replace_copy/constexpr.cc: New.
  2140. * testsuite/25_algorithms/replace_copy_if/constexpr.cc: New.
  2141. * testsuite/25_algorithms/replace_if/constexpr.cc: New.
  2142. * testsuite/25_algorithms/reverse_copy/constexpr.cc: New.
  2143. * testsuite/25_algorithms/rotate_copy/constexpr.cc: New.
  2144. * testsuite/25_algorithms/search/constexpr.cc: New.
  2145. * testsuite/25_algorithms/search_n/constexpr.cc: New.
  2146. * testsuite/25_algorithms/set_difference/constexpr.cc: New.
  2147. * testsuite/25_algorithms/set_intersection/constexpr.cc: New.
  2148. * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: New.
  2149. * testsuite/25_algorithms/set_union/constexpr.cc: New.
  2150. * testsuite/25_algorithms/transform/constexpr.cc: New.
  2151. * testsuite/25_algorithms/unique/constexpr.cc: New.
  2152. * testsuite/25_algorithms/unique_copy/constexpr.cc: New.
  2153. * testsuite/25_algorithms/upper_bound/constexpr.cc: New.
  2154. 2019-07-31 Jonathan Wakely <jwakely@redhat.com>
  2155. * include/std/memory (make_obj_using_allocator): Qualify call to
  2156. uses_allocator_construction_args.
  2157. P0631R4 Math Constants
  2158. * include/Makefile.am: Add new header.
  2159. * include/Makefile.in: Regenerate.
  2160. * include/precompiled/stdc++.h: Include new header.
  2161. * include/std/numbers: New header.
  2162. * include/std/version (__cpp_lib_math_constants): Define.
  2163. * testsuite/26_numerics/numbers/1.cc: New test.
  2164. * testsuite/26_numerics/numbers/2.cc: New test.
  2165. * testsuite/26_numerics/numbers/3.cc: New test.
  2166. * testsuite/26_numerics/numbers/nonfloat_neg.cc: New test.
  2167. * include/std/bit: Add Doxygen comments.
  2168. PR libstdc++/91308
  2169. * include/bits/unique_ptr.h (unique_ptr::__safe_conversion_up): Remove
  2170. constraints on deleter that should only apply to the constructor.
  2171. (unique_ptr<T[], D>::__safe_conversion_up): Likewise.
  2172. (unique_ptr<T[], D>::unique_ptr(unique_ptr<U, D>&&)): Restore
  2173. constraints on deleter here.
  2174. * testsuite/20_util/unique_ptr/assign/91308.cc: New test.
  2175. 2019-07-29 Jonathan Wakely <jwakely@redhat.com>
  2176. PR libstdc++/51333
  2177. * libsupc++/cxxabi.h (__gnu_cxx::recursive_init_error): Do not define
  2178. constructor inline.
  2179. * libsupc++/guard_error.cc (__gnu_cxx::recursive_init_error): Define
  2180. constructor.
  2181. * testsuite/18_support/51333.cc: New test.
  2182. 2019-07-28 Gerald Pfeifer <gerald@pfeifer.com>
  2183. * doc/xml/manual/documentation_hacking.xml: Fix broken reference
  2184. to the Doxygen manual. Avoid a "here" link on the way.
  2185. Fix another broken link to Doxygen docblocks.
  2186. 2019-07-26 Jonathan Wakely <jwakely@redhat.com>
  2187. * include/std/bit (__cpp_lib_endian): Define.
  2188. * include/std/version (__cpp_lib_endian): Define.
  2189. * testsuite/26_numerics/endian/2.cc: New.
  2190. * testsuite/26_numerics/endian/3.cc: New.
  2191. * testsuite/26_numerics/endian/4.cc: New.
  2192. 2019-07-26 François Dumont <fdumont@gcc.gnu.org>
  2193. * testsuite/util/testsuite_iterators.h
  2194. (bidirectional_iterator_wrapper): Fix type comment.
  2195. (random_access_iterator_wrapper): Likewise.
  2196. 2019-07-25 Jonathan Wakely <jwakely@redhat.com>
  2197. * include/std/bit (endian): Move definition here as per P1612R1.
  2198. * include/std/type_traits (endian): Remove definition from here.
  2199. * testsuite/20_util/endian/1.cc: Rename to ...
  2200. * testsuite/26_numerics/endian/1.cc: ... here. Adjust header.
  2201. 2019-07-25 Martin Liska <mliska@suse.cz>
  2202. Dominik Infuhr <dominik.infuehr@theobroma-systems.com>
  2203. PR c++/23383
  2204. * testsuite/ext/bitmap_allocator/check_delete.cc: Add
  2205. -fno-allocation-dce.
  2206. * testsuite/ext/bitmap_allocator/check_new.cc: Likewise.
  2207. * testsuite/ext/new_allocator/check_delete.cc: Likewise.
  2208. * testsuite/ext/new_allocator/check_new.cc: Likewise.
  2209. 2019-07-22 Jonathan Wakely <jwakely@redhat.com>
  2210. * testsuite/26_numerics/bit/bitops.count/*: Rename to ...
  2211. * testsuite/26_numerics/bit/bit.count/*: Here.
  2212. * include/std/bit (__rotl, __rotr): Change second parameter from
  2213. unsigned int to int and handle negative values.
  2214. (rotl, rotr): Remove check for __STRICT_ANSI__. Change second
  2215. parameter from unsigned int to int. Add nodiscard attribute.
  2216. * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Rename to ...
  2217. * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Here. Test negative
  2218. shifts.
  2219. * testsuite/26_numerics/bit/bitops.rot/rotr.cc: Rename to ...
  2220. * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Here. Test negative
  2221. shifts.
  2222. * include/std/bit (__ceil2): Make unrepresentable results undefined,
  2223. as per P1355R2. Add debug assertion. Perform one left shift, not two,
  2224. so that out of range values cause undefined behaviour. Ensure that
  2225. shift will still be undefined if left operand is promoted.
  2226. * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Replace checks for
  2227. unrepresentable values with checks that they are not core constant
  2228. expressions.
  2229. * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: New test.
  2230. 2019-07-19 François Dumont <fdumont@gcc.gnu.org>
  2231. * include/bits/stl_tempbuf.h (__detail::__return_temporary_buffer): Fix
  2232. sized deallocation size computation.
  2233. 2019-07-19 Andreas Schwab <schwab@linux-m68k.org>
  2234. * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
  2235. 2019-07-18 François Dumont <fdumont@gcc.gnu.org>
  2236. * include/bits/stl_tempbuf.h (__detail::__return_temporary_buffer): New.
  2237. (~_Temporary_buffer()): Use latter.
  2238. (_Temporary_buffer(_FIterator, size_type)): Likewise.
  2239. 2019-07-17 Andreas Schwab <schwab@suse.de>
  2240. * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
  2241. 2019-07-16 Jason Merrill <jason@redhat.com>
  2242. * include/std/memory (uses_allocator_construction_args): Add parens
  2243. around constraint.
  2244. 2019-07-12 Jonathan Wakely <jwakely@redhat.com>
  2245. * testsuite/29_atomics/atomic_float/1.cc: Fix comment.
  2246. * include/experimental/string_view (__detail::__idt): Remove.
  2247. (operator==, operator!=, operator<, operator>, operator<=, operator>=):
  2248. Use __type_identity_t instead of __detail::__idt;
  2249. * include/std/string_view (__detail::__idt): Remove.
  2250. (operator==, operator!=, operator<, operator>, operator<=, operator>=):
  2251. Use __type_identity_t instead of __detail::__idt;
  2252. * include/std/type_traits (__type_identity_t): New alias template.
  2253. * doc/xml/manual/status_cxx2020.xml: Update status for atomic_ref
  2254. and floating point atomics.
  2255. 2019-07-11 Jonathan Wakely <jwakely@redhat.com>
  2256. * doc/xml/manual/configure.xml: Improve documentation of
  2257. --enable-libstdcxx-time option.
  2258. * include/bits/atomic_base.h (__atomic_impl): New namespace for
  2259. wrappers around atomic built-ins.
  2260. (__atomic_float, __atomic_ref): New class templates for use as base
  2261. classes.
  2262. * include/std/atomic (atomic<float>, atomic<double>)
  2263. (atomic<long double>): New explicit specializations.
  2264. (atomic_ref): New class template.
  2265. (__cpp_lib_atomic_ref): Define.
  2266. * include/std/version (__cpp_lib_atomic_ref): Define.
  2267. * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error.
  2268. * testsuite/29_atomics/atomic_float/1.cc: New test.
  2269. * testsuite/29_atomics/atomic_float/requirements.cc: New test.
  2270. * testsuite/29_atomics/atomic_ref/deduction.cc: New test.
  2271. * testsuite/29_atomics/atomic_ref/float.cc: New test.
  2272. * testsuite/29_atomics/atomic_ref/generic.cc: New test.
  2273. * testsuite/29_atomics/atomic_ref/integral.cc: New test.
  2274. * testsuite/29_atomics/atomic_ref/pointer.cc: New test.
  2275. * testsuite/29_atomics/atomic_ref/requirements.cc: New test.
  2276. 2019-07-06 Jonathan Wakely <jwakely@redhat.com>
  2277. * include/ext/atomicity.h (__exchange_and_add, __atomic_add): Replace
  2278. throw() with _GLIBCXX_NOTHROW.
  2279. (__atomic_add_dispatch): Return after performing atomic increment.
  2280. 2019-07-05 Jonathan Wakely <jwakely@redhat.com>
  2281. * include/ext/atomicity.h [_GLIBCXX_ATOMIC_BUILTINS] (__atomic_add)
  2282. (__exchange_and_add): Replace static specifier with always_inline
  2283. attribute.
  2284. (__exchange_and_add_single, __atomic_add_single): Likewise.
  2285. (__exchange_and_add_dispatch, __atomic_add_dispatch): Likewise. Also
  2286. combine !__gthread_active_p() and !__GTHREADS branches.
  2287. 2019-07-03 Jonathan Wakely <jwakely@redhat.com>
  2288. PR libstdc++/91067
  2289. * acinclude.m4 (libtool_VERSION): Bump to 6:27:0.
  2290. * configure: Regenerate.
  2291. * config/abi/pre/gnu.ver (GLIBCXX_3.4.27): Add new version. Export
  2292. missing symbols.
  2293. * testsuite/27_io/filesystem/iterators/91067.cc: New test.
  2294. * testsuite/util/testsuite_abi.cc: Add new symbol version.
  2295. 2019-07-02 Jonathan Wakely <jwakely@redhat.com>
  2296. * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_LAUNDER)
  2297. (_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED): Use __has_builtin
  2298. instead of __is_identifier to detect Clang support.
  2299. 2019-07-02 Jim Wilson <jimw@sifive.com>
  2300. * configure.ac (BUILD_PDF): Also test for doxygen, dot, xsltproc,
  2301. and xmllint.
  2302. * configure: Regenerate.
  2303. 2019-06-27 Jonathan Wakely <jwakely@redhat.com>
  2304. PR libstdc++/91012
  2305. * src/c++17/fs_path.cc (filesystem_error::_Impl): Use a string_view
  2306. for the what_arg parameters.
  2307. (filesystem_error::filesystem_error): Pass system_error::what() to
  2308. the _Impl constructor.
  2309. * testsuite/27_io/filesystem/filesystem_error/cons.cc: Ensure that
  2310. filesystem_error::what() contains system_error::what().
  2311. 2019-06-26 Jonathan Wakely <jwakely@redhat.com>
  2312. * include/std/charconv (chars_format): Define bitmask type.
  2313. * testsuite/20_util/to_chars/chars_format.cc: New test.
  2314. * include/bits/fs_path.h (path::__is_encoded_char): Use __is_one_of.
  2315. * include/std/bit (_If_is_unsigned_integer_type): Remove.
  2316. (_If_is_unsigned_integer): Use __is_unsigned_integer.
  2317. (rotl(byte, unsigned), rotr(byte, unsigned), countl_zero(byte))
  2318. (countl_one(byte), countr_zero(byte), countr_one(byte))
  2319. (popcount(byte), ispow2(byte), ceil2(byte), floor2(byte))
  2320. (log2p1(byte)): Remove.
  2321. * include/std/charconv (__detail::__is_one_of): Move to <type_traits>.
  2322. (__detail::__is_int_to_chars_type): Remove.
  2323. (__detail::__integer_to_chars_result_type): Use __is_signed_integer
  2324. and __is_unsigned_integer.
  2325. * include/std/type_traits (__is_one_of): Move here from <charconv>.
  2326. (__is_signed_integer, __is_unsigned_integer): New helpers.
  2327. * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Remove test for
  2328. std::byte overload.
  2329. * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
  2330. * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
  2331. * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
  2332. * testsuite/26_numerics/bit/bitops.count/countl_one.cc: Likewise.
  2333. * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
  2334. * testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
  2335. * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
  2336. * testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.
  2337. * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Likewise.
  2338. * testsuite/26_numerics/bit/bitops.rot/rotr.cc: Likewise.
  2339. 2019-06-25 Jonathan Wakely <jwakely@redhat.com>
  2340. * include/std/numeric (midpoint(T, T)): Avoid std::abs in constexpr
  2341. function.
  2342. 2019-06-25 Jakub Jelinek <jakub@redhat.com>
  2343. * include/pstl/pstl_config.h (_PSTL_PRAGMA_SIMD_SCAN,
  2344. _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN, _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN):
  2345. Define to OpenMP 5.0 pragmas even for GCC 10.0+.
  2346. (_PSTL_UDS_PRESENT): Define to 1 for GCC 10.0+.
  2347. 2019-06-24 Jonathan Wakely <jwakely@redhat.com>
  2348. * include/std/numeric (midpoint(T, T)): Change implementation for
  2349. floating-point types to avoid incorrect rounding of denormals.
  2350. * testsuite/26_numerics/midpoint/floating.cc: Add check for correct
  2351. rounding with denormals.
  2352. * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line numbers.
  2353. * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
  2354. * testsuite/18_support/headers/cfloat/values_c++17.cc: New test.
  2355. 2019-06-20 Jonathan Wakely <jwakely@redhat.com>
  2356. * acinclude.m4 (GLIBCXX_ENABLE_DEBUG): Only do debug build for final
  2357. stage of bootstrap.
  2358. * configure: Regenerate.
  2359. * include/std/variant (_Variant_storage, _Extra_visit_slot_needed):
  2360. Qualify calls to __never_valueless.
  2361. * doc/xml/manual/status_cxx2017.xml: Fix outdated reference to
  2362. C++17 working draft.
  2363. * testsuite/libstdc++-prettyprinters/simple.cc: Use non-palindromic
  2364. vector<bool> for test.
  2365. * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
  2366. 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
  2367. * include/bits/stream_iterator.h (istream_iterator::_M_equal()): Make
  2368. private.
  2369. (istream_iterator::_M_read()): Do not check stream state before
  2370. attempting extraction. Set stream pointer to null when extraction
  2371. fails (P0738R2).
  2372. (operator==(const istream_iterator&, const istream_iterator&)): Change
  2373. to be a hidden friend of istream_iterator.
  2374. (operator!=(const istream_iterator&, const istream_iterator&)):
  2375. Likewise.
  2376. (ostream_iterator::ostream_iterator()): Add default constructor.
  2377. (ostream_iterator::ostream_iterator(ostream_type*, const C*)): Use
  2378. addressof.
  2379. * testsuite/24_iterators/istream_iterator/1.cc: New test.
  2380. * testsuite/24_iterators/ostream_iterator/1.cc: New test.
  2381. * testsuite/24_iterators/ostream_iterator/70766.cc: Also check
  2382. constructor taking a string.
  2383. * testsuite/24_iterators/ostream_iterator/requirements/constexpr.cc:
  2384. New test.
  2385. 2019-06-19 Michael Weghorn <m.weghorn@posteo.de>
  2386. Jonathan Wakely <jwakely@redhat.com>
  2387. PR libstdc++/90945
  2388. * python/libstdcxx/v6/printers.py (StdVectorPrinter._iterator): Use
  2389. values of type bool for vector<bool> elements.
  2390. * testsuite/libstdc++-prettyprinters/simple.cc: Test vector<bool>.
  2391. * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
  2392. 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
  2393. PR libstdc++/90920 partially revert r263433
  2394. * include/bits/stl_algo.h (__rotate): Restore checks for empty ranges.
  2395. (rotate): Remove checks.
  2396. * testsuite/25_algorithms/rotate/90920.cc: New test.
  2397. * include/std/numeric (reduce(Iter, Iter, T, BinOp)): Fix value
  2398. category used in invocable check.
  2399. (reduce(Iter, Iter, T)): Pass initial value as rvalue.
  2400. * testsuite/26_numerics/reduce/2.cc: New test.
  2401. 2019-06-18 Jonathan Wakely <jwakely@redhat.com>
  2402. * include/bits/algorithmfwd.h: Change title of doc group.
  2403. * include/bits/stl_algo.h (for_each_n): Add new C++17 algorithm from
  2404. P0024R2.
  2405. * include/bits/stl_numeric.h: Define doc group and add algos to it.
  2406. * include/std/numeric (__is_random_access_iter): New internal trait.
  2407. (reduce, transform_reduce, exclusive_scan, inclusive_scan)
  2408. (transform_exclusive_scan, transform_inclusive_scan): Likewise.
  2409. * testsuite/25_algorithms/for_each/for_each_n.cc: New test.
  2410. * testsuite/26_numerics/exclusive_scan/1.cc: New test.
  2411. * testsuite/26_numerics/inclusive_scan/1.cc: New test.
  2412. * testsuite/26_numerics/reduce/1.cc: New test.
  2413. * testsuite/26_numerics/transform_exclusive_scan/1.cc: New test.
  2414. * testsuite/26_numerics/transform_inclusive_scan/1.cc: New test.
  2415. * testsuite/26_numerics/transform_reduce/1.cc: New test.
  2416. * testsuite/util/testsuite_iterators.h (test_container::size()): New
  2417. member function.
  2418. * include/c_global/cstddef (std::byte): Perform arithmetic operations
  2419. in unsigned int to avoid promotion (LWG 2950).
  2420. 2019-06-17 Jonathan Wakely <jwakely@redhat.com>
  2421. * testsuite/20_util/allocator/1.cc: Add sized delete, which fixes a
  2422. failure on AIX.
  2423. * include/c_global/cmath (__lerp, lerp): Add noexcept (LWG 3201).
  2424. PR libstdc++/90281 Fix string conversions for filesystem::path
  2425. * include/bits/fs_path.h (u8path) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
  2426. Use codecvt_utf8_utf16 instead of codecvt_utf8. Use
  2427. __str_codecvt_in_all to fail for partial conversions and throw on
  2428. error.
  2429. [!_GLIBCXX_FILESYSTEM_IS_WINDOWS && _GLIBCXX_USE_CHAR8_T]
  2430. (path::_Cvt<char8_t>): Add explicit specialization.
  2431. [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_wconvert): Remove
  2432. overloads.
  2433. [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_convert): Use
  2434. if-constexpr instead of dispatching to _S_wconvert. Use codecvt
  2435. instead of codecvt_utf8. Use __str_codecvt_in_all and
  2436. __str_codecvt_out_all.
  2437. [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_convert): Use
  2438. codecvt instead of codecvt_utf8. Use __str_codecvt_out_all.
  2439. (path::_S_str_convert) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
  2440. codecvt_utf8_utf16 instead of codecvt_utf8. Construct return values
  2441. with allocator. Use __str_codecvt_out_all. Fallthrough to POSIX code
  2442. after converting to UTF-8.
  2443. (path::_S_str_convert): Use codecvt instead of codecvt_utf8. Use
  2444. __str_codecvt_in_all.
  2445. (path::string): Fix initialization of string types with different
  2446. allocators.
  2447. (path::u8string) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
  2448. codecvt_utf8_utf16 instead of codecvt_utf8. Use __str_codecvt_out_all.
  2449. * include/bits/locale_conv.h (__do_str_codecvt): Reorder static and
  2450. runtime conditions.
  2451. (__str_codecvt_out_all, __str_codecvt_in_all): New functions that
  2452. return false for partial conversions.
  2453. * include/experimental/bits/fs_path.h (u8path):
  2454. [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Implement correctly for mingw.
  2455. [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_wconvert): Add
  2456. missing handling for char8_t. Use codecvt and codecvt_utf8_utf16
  2457. instead of codecvt_utf8. Use __str_codecvt_in_all and
  2458. __str_codecvt_out_all.
  2459. [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_convert): Use
  2460. codecvt instead of codecvt_utf8. Use __str_codecvt_out_all.
  2461. (path::string) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
  2462. codecvt_utf8_utf16 instead of codecvt_utf8. Construct return values
  2463. with allocator. Use __str_codecvt_out_all and __str_codecvt_in_all.
  2464. (path::string) [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
  2465. __str_codecvt_in_all.
  2466. (path::u8string) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
  2467. codecvt_utf8_utf16 instead of codecvt_utf8. Use __str_codecvt_out_all.
  2468. * src/c++17/fs_path.cc (path::_S_convert_loc): Use
  2469. __str_codecvt_in_all.
  2470. * src/filesystem/path.cc (path::_S_convert_loc): Likewise.
  2471. * testsuite/27_io/filesystem/path/construct/90281.cc: New test.
  2472. * testsuite/27_io/filesystem/path/factory/u8path.cc: New test.
  2473. * testsuite/27_io/filesystem/path/native/string.cc: Test with empty
  2474. strings and with Unicode characters outside the basic multilingual
  2475. plane.
  2476. * testsuite/27_io/filesystem/path/native/alloc.cc: New test.
  2477. * testsuite/experimental/filesystem/path/construct/90281.cc: New test.
  2478. * testsuite/experimental/filesystem/path/factory/u8path.cc: New test.
  2479. * testsuite/experimental/filesystem/path/native/alloc.cc: New test.
  2480. * testsuite/experimental/filesystem/path/native/string.cc: Test with
  2481. empty strings and with Unicode characters outside the basic
  2482. multilingual plane.
  2483. 2019-06-17 François Dumont <fdumont@gcc.gnu.org>
  2484. Jonathan Wakely <jwakely@redhat.com>
  2485. * include/bits/hashtable.h (struct _Hashtable::_Scoped_node): New type.
  2486. (_Hashtable::_M_insert_unique_node): Add key_type parameter. Don't
  2487. deallocate node if insertion fails.
  2488. (_Hashtable::_M_insert_multi_node): Likewise.
  2489. (_Hashtable::_M_reinsert_node): Pass additional key argument.
  2490. (_Hashtable::_M_reinsert_node_multi): Likewise. Remove FIXME.
  2491. (_Hashtable::_M_extract_node(size_t, __node_base*)): New function.
  2492. (_Hashtable::extract(const_iterator)): Use _M_extract_node.
  2493. (_Hashtable::extract(const _Key&)): Likewise.
  2494. (_Hashtable::_M_merge_unique): Pass additional key argument.
  2495. (_Hashtable::_M_emplace<Args>(true_type, Args&&...)): Likewise. Use
  2496. _Scoped_node.
  2497. (_Hashtable::_M_insert): Likewise.
  2498. * include/bits/hashtable_policy.h (_Map_base::operator[]): Likewise.
  2499. (_Hashtable_alloc): Add comments to functions with misleading names.
  2500. 2019-06-17 Jonathan Wakely <jwakely@redhat.com>
  2501. * testsuite/20_util/bad_function_call/what.cc: Include <string> header
  2502. for std::string.
  2503. * testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc: Likewise.
  2504. * testsuite/20_util/tuple/cons/allocator_with_any.cc: Include <memory>
  2505. header for std::allocator.
  2506. * testsuite/23_containers/array/tuple_interface/tuple_element.cc: Add
  2507. using-declaration for std::size_t.
  2508. * testsuite/23_containers/array/tuple_interface/tuple_size.cc:
  2509. Likewise.
  2510. * testsuite/23_containers/deque/cons/55977.cc: Include <istream> for
  2511. std::istream.
  2512. * testsuite/23_containers/vector/cons/55977.cc: Likewise.
  2513. * testsuite/experimental/map/erasure.cc: Include <string> for
  2514. std::string.
  2515. * testsuite/experimental/unordered_map/erasure.cc: Likewise.
  2516. 2019-06-14 Jonathan Wakely <jwakely@redhat.com>
  2517. * include/experimental/type_traits (experimental::nonesuch): Use
  2518. pragma to disable -Wctor-dtor-privacy warnings.
  2519. * include/std/type_traits (__is_convertible_helper<From, To, false>)
  2520. (__is_nt_convertible_helper<From, To, false>, __nonesuch): Likewise.
  2521. * include/std/version (__cpp_lib_bind_front): Add missing macro.
  2522. 2019-06-12 Jonathan Wakely <jwakely@redhat.com>
  2523. * include/std/algorithm (__cpp_lib_parallel_algorithm): Fix value.
  2524. * include/std/memory (__cpp_lib_parallel_algorithm): Likewise.
  2525. * include/std/numeric (__cpp_lib_parallel_algorithm): Likewise.
  2526. * testsuite/25_algorithms/pstl/feature_test.cc: New test.
  2527. * include/std/variant (get<T>, get<N>, get_if<N>, get_if<T>)
  2528. (variant::emplace): Change static_assert messages from "should be"
  2529. to "must be".
  2530. (hash<monostate>::operator()): Remove name of unused parameter.
  2531. * include/std/mutex (scoped_lock::~scoped_lock()): Use fold
  2532. expression.
  2533. * include/Makefile.am: Add new <bits/charconv.h> header.
  2534. * include/Makefile.in: Regenerate.
  2535. * include/bits/basic_string.h (to_string(int), to_string(unsigned))
  2536. (to_string(long), to_string(unsigned long), to_string(long long))
  2537. (to_string(unsigned long long)): Rewrite to use __to_chars_10_impl.
  2538. * include/bits/charconv.h: New header.
  2539. (__detail::__to_chars_len): Move here from <charconv>.
  2540. (__detail::__to_chars_10_impl): New function extracted from
  2541. __detail::__to_chars_10.
  2542. * include/std/charconv (__cpp_lib_to_chars): Add, but comment out.
  2543. (__to_chars_unsigned_type): New class template that reuses
  2544. __make_unsigned_selector_base::__select to pick a type.
  2545. (__unsigned_least_t): Redefine as __to_chars_unsigned_type<T>::type.
  2546. (__detail::__to_chars_len): Move to new header.
  2547. (__detail::__to_chars_10): Add inline specifier. Move code doing the
  2548. output to __detail::__to_chars_10_impl and call that.
  2549. * include/std/version (__cpp_lib_to_chars): Add, but comment out.
  2550. * testsuite/21_strings/basic_string/numeric_conversions/char/
  2551. to_string.cc: Fix reference in comment. Remove unused variable.
  2552. * testsuite/21_strings/basic_string/numeric_conversions/char/
  2553. to_string_int.cc: New test.
  2554. 2019-06-09 Edward Smith-Rowland <3dw4rd@verizon.net>
  2555. Fix ConstexprIterator requirements tests - No constexpr algorithms!
  2556. * testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
  2557. Replace copy with hand-rolled loop.
  2558. * testsuite/23_containers/array/requirements/constexpr_iter.cc:
  2559. Ditto.
  2560. 2019-06-08 Edward Smith-Rowland <3dw4rd@verizon.net>
  2561. Test for C++20 p0858 - ConstexprIterator requirements.
  2562. * testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
  2563. New test.
  2564. * testsuite/23_containers/array/requirements/constexpr_iter.cc:
  2565. New test.
  2566. 2019-06-07 Thomas Rodgers <trodgers@redhat.com>
  2567. Rename PSTL macro's consistent with libstdc++ (and llvm upstream
  2568. project) standards.
  2569. * include/bits/c++config: Rename all macros of the form __PSTL* to
  2570. _PSTL*.
  2571. * include/std/algorithm: Likewise.
  2572. * include/std/execution: Likewise.
  2573. * include/std/numeric: Likewise.
  2574. * include/std/memory: Likewise.
  2575. * include/pstl/glue_memory_impl.h: Likewise.
  2576. * include/pstl/numeric_impl.h: Likewise.
  2577. * include/pstl/glue_memory_defs.h: Likewise.
  2578. * include/pstl/execution_defs.h: Likewise.
  2579. * include/pstl/utils.h: Likewise.
  2580. * include/pstl/algorithm_fwd.h: Likewise.
  2581. * include/pstl/unseq_backend_simd.h: Likewise.
  2582. * include/pstl/glue_execution_defs.h: Likewise.
  2583. * include/pstl/algorithm_impl.h: Likewise.
  2584. * include/pstl/parallel_impl.h: Likewise.
  2585. * include/pstl/memory_impl.h: Likewise.
  2586. * include/pstl/glue_numeric_defs.h: Likewise.
  2587. * include/pstl/parallel_backend_utils.h: Likewise.
  2588. * include/pstl/glue_algorithm_defs.h: Likewise.
  2589. * include/pstl/parallel_backend.h: Likewise.
  2590. * include/pstl/glue_numeric_impl.h: Likewise.
  2591. * include/pstl/parallel_backend_tbb.h: Likewise.
  2592. * include/pstl/numeric_fwd.h: Likewise.
  2593. * include/pstl/glue_algorithm_impl.h: Likewise.
  2594. * include/pstl/execution_impl.h: Likewise.
  2595. * include/pstl/pstl_config.h: Likewise.
  2596. * testsuite/util/pstl/pstl_test_config.h: Likewise.
  2597. * testsuite/util/pstl/test_utils.h: Likewise.
  2598. * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc:
  2599. Likewise.
  2600. * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
  2601. Likewise.
  2602. * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
  2603. Likewise.
  2604. * testsuite/26_numerics/pstl/numeric_ops/scan.cc: Likewise.
  2605. * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: Likewise.
  2606. * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: Likewise.
  2607. * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: Likewise.
  2608. * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc:
  2609. Likewise.
  2610. * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: Likewise.
  2611. * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: Likewise.
  2612. * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: Likewise.
  2613. * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: Likewise.
  2614. * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc:
  2615. Likewise.
  2616. * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: Likewise.
  2617. * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: Likewise.
  2618. * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: Likewise.
  2619. * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: Likewise.
  2620. * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc:
  2621. Likewise.
  2622. * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise.
  2623. * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: Likewise.
  2624. * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc:
  2625. Likewise.
  2626. * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
  2627. Likewise.
  2628. * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Likewise.
  2629. * testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise.
  2630. * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc:
  2631. Likewise.
  2632. * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
  2633. Likewise.
  2634. * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
  2635. Likewise.
  2636. * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
  2637. Likewise.
  2638. * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
  2639. Likewise.
  2640. * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
  2641. Likewise.
  2642. * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
  2643. Likewise.
  2644. * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
  2645. Likewise.
  2646. * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
  2647. Likewise.
  2648. * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
  2649. Likewise.
  2650. * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
  2651. Likewise.
  2652. * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: Likewise.
  2653. Rename header guards to be consistent with upstream project's
  2654. conventions.
  2655. * include/pstl/glue_memory_impl.h: Rename all macros of the form
  2656. _PSTL_(.*)_H to _PSTL_\U\1_H.
  2657. * include/pstl/numeric_impl.h: Likewise.
  2658. * include/pstl/glue_memory_defs.h: Likewise.
  2659. * include/pstl/execution_defs.h: Likewise.
  2660. * include/pstl/utils.h: Likewise.
  2661. * include/pstl/algorithm_fwd.h: Likewise.
  2662. * include/pstl/unseq_backend_simd.h: Likewise.
  2663. * include/pstl/glue_execution_defs.h: Likewise.
  2664. * include/pstl/algorithm_impl.h: Likewise.
  2665. * include/pstl/parallel_impl.h: Likewise.
  2666. * include/pstl/memory_impl.h: Likewise.
  2667. * include/pstl/glue_numeric_defs.h: Likewise.
  2668. * include/pstl/parallel_backend_utils.h: Likewise.
  2669. * include/pstl/glue_algorithm_defs.h: Likewise.
  2670. * include/pstl/parallel_backend.h: Likewise.
  2671. * include/pstl/glue_numeric_impl.h: Likewise.
  2672. * include/pstl/parallel_backend_tbb.h: Likewise.
  2673. * include/pstl/numeric_fwd.h: Likewise.
  2674. * include/pstl/glue_algorithm_impl.h: Likewise.
  2675. * include/pstl/execution_impl.h: Likewise.
  2676. * include/pstl/pstl_config.h: Likewise.
  2677. * testsuite/util/pstl/pstl_test_config.h: Likewise.
  2678. Synchronize libstdc++ parallel algorithms with upstream
  2679. project.
  2680. * include/pstl/algorithm_fwd.h: Synchronize with
  2681. upstream PSTL project.
  2682. * include/pstl/algorithm_impl.h: Likewise.
  2683. * include/pstl/execution_defs.h: Likewise.
  2684. * include/pstl/execution_impl.h: Likewise.
  2685. * include/pstl/glue_algorithm_impl.h: Likewise.
  2686. * include/pstl/glue_execution_defs.h: Likewise.
  2687. * include/pstl/numeric_fwd.h: Likewise.
  2688. * include/pstl/numeric_impl.h: Likewise.
  2689. * include/pstl/parallel_backend.h: Likewise.
  2690. * include/pstl/pstl_config.h: Likewise.
  2691. * include/pstl/unseq_backend_simd.h: Likewise.
  2692. * include/pstl/parallel_backend_serial.h: New file.
  2693. * include/Makefile.am (pstl_headers): Add
  2694. parallel_backend_serial.h.
  2695. * include/Makefile.in: Regenerate.
  2696. Clean up non-conforming names
  2697. * include/pstl/algorithm_impl.h (__parallel_set_union_op):
  2698. Uglfiy copy_range1 and copy_range2
  2699. (__pattern_walk2_n): Rename local n to __n
  2700. * include/pstl/parallel_backend_tbb.h (struct __binary_no_op):
  2701. Rename parameter _T to _Tp.
  2702. Integrate non-TBB serial backend support
  2703. * include/bits/c++config: Adjust TBB detection logic to select serial
  2704. PSTL backend if no TBB present.
  2705. * testsuite/utils/pstl/test_utils.h: Remove check for
  2706. _PSTL_USE_PAR_POLICIES
  2707. 2019-06-07 Jonathan Wakely <jwakely@redhat.com>
  2708. * testsuite/24_iterators/container_access.cc: Move dg-options before
  2709. dg-do directive so the target check uses the -std option.
  2710. PR libstdc++/90770
  2711. * configure: Regenerate.
  2712. * src/Makefile.am (stamp-debug): Also test for missing makefile.
  2713. * src/Makefile.in: Regenerate.
  2714. 2019-06-06 Jonathan Wakely <jwakely@redhat.com>
  2715. * include/std/array: Do not include <stdexcept>.
  2716. * include/std/optional: Include <exception> and
  2717. <bits/exception_defines.h> instead of <stdexcept>.
  2718. * testsuite/20_util/function_objects/searchers.cc: Include <cctype>
  2719. for std::isalnum.
  2720. * testsuite/20_util/tuple/cons/deduction.cc: Include <memory> for
  2721. std::allocator.
  2722. * testsuite/23_containers/map/erasure.cc: Include <string>.
  2723. * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
  2724. * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Add
  2725. dg-prune-output for different C++98 diagnostic.
  2726. * testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc:
  2727. Likewise.
  2728. * testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
  2729. Likewise.
  2730. * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
  2731. Likewise.
  2732. * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
  2733. Likewise.
  2734. * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
  2735. Likewise.
  2736. * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
  2737. Likewise.
  2738. * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
  2739. Likewise.
  2740. * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
  2741. Likewise.
  2742. * testsuite/23_containers/vector/requirements/dr438/
  2743. constructor_1_neg.cc: Likewise.
  2744. * testsuite/23_containers/vector/requirements/dr438/
  2745. constructor_2_neg.cc: Likewise.
  2746. * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
  2747. Likewise.
  2748. * testsuite/libstdc++-prettyprinters/compat.cc: Do not run for C++98.
  2749. * testsuite/23_containers/unordered_map/requirements/debug_container.cc:
  2750. Do not test allocator rebinding extension for C++2a.
  2751. * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
  2752. dg-do directive for C++17 and C++2a.
  2753. * testsuite/23_containers/deque/requirements/explicit_instantiation/
  2754. 1_c++0x.cc: Remove redundant test.
  2755. * testsuite/23_containers/deque/requirements/explicit_instantiation/
  2756. 2.cc: Use target selector instead of preprocessor condition.
  2757. * testsuite/23_containers/deque/requirements/explicit_instantiation/
  2758. 3.cc: Do not run test for C++2a.
  2759. * testsuite/23_containers/forward_list/requirements/
  2760. explicit_instantiation/3.cc: Likewise.
  2761. * testsuite/23_containers/forward_list/requirements/
  2762. explicit_instantiation/5.cc: Do not test allocator rebinding extension
  2763. for C++2a.
  2764. * testsuite/23_containers/list/requirements/explicit_instantiation/
  2765. 1_c++0x.cc: Remove redundant test.
  2766. * testsuite/23_containers/list/requirements/explicit_instantiation/
  2767. 2.cc: Use target selector instead of preprocessor condition.
  2768. * testsuite/23_containers/list/requirements/explicit_instantiation/
  2769. 3.cc: Do not run test for C++2a.
  2770. * testsuite/23_containers/list/requirements/explicit_instantiation/
  2771. 5.cc: Do not test allocator rebinding extension for C++2a.
  2772. * testsuite/23_containers/map/requirements/explicit_instantiation/
  2773. 1_c++0x.cc: Remove redundant test.
  2774. * testsuite/23_containers/map/requirements/explicit_instantiation/
  2775. 2.cc: Adjust comment.
  2776. * testsuite/23_containers/map/requirements/explicit_instantiation/
  2777. 3.cc: Do not run test for C++2a.
  2778. * testsuite/23_containers/map/requirements/explicit_instantiation/
  2779. 5.cc: Do not test allocator rebinding extension for C++2a.
  2780. * testsuite/23_containers/multimap/requirements/explicit_instantiation/
  2781. 1_c++0x.cc: Remove redundant test.
  2782. * testsuite/23_containers/multimap/requirements/explicit_instantiation/
  2783. 3.cc: Do not run test for C++2a.
  2784. * testsuite/23_containers/multimap/requirements/explicit_instantiation/
  2785. 5.cc: Do not test allocator rebinding extension for C++2a.
  2786. * testsuite/23_containers/multiset/requirements/explicit_instantiation/
  2787. 3.cc: Do not run test for C++2a.
  2788. * testsuite/23_containers/multiset/requirements/explicit_instantiation/
  2789. 5.cc: Do not test allocator rebinding extension for C++2a.
  2790. * testsuite/23_containers/set/requirements/explicit_instantiation/3.cc:
  2791. Do not run test for C++2a.
  2792. * testsuite/23_containers/set/requirements/explicit_instantiation/
  2793. 1_c++0x.cc: Remove redundant test.
  2794. * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc:
  2795. Do not test allocator rebinding extension for C++2a.
  2796. * testsuite/23_containers/unordered_map/requirements/
  2797. explicit_instantiation/3.cc: Likewise.
  2798. * testsuite/23_containers/unordered_map/requirements/
  2799. explicit_instantiation/5.cc: Do not test allocator rebinding extension
  2800. for C++2a.
  2801. * testsuite/23_containers/unordered_multimap/requirements/
  2802. explicit_instantiation/3.cc: Do not run test for C++2a.
  2803. * testsuite/23_containers/unordered_multimap/requirements/
  2804. explicit_instantiation/5.cc: Do not test allocator rebinding extension
  2805. for C++2a.
  2806. * testsuite/23_containers/unordered_multiset/requirements/
  2807. explicit_instantiation/3.cc: Do not run test for C++2a.
  2808. * testsuite/23_containers/unordered_multiset/requirements/
  2809. explicit_instantiation/5.cc: Do not test allocator rebinding extension
  2810. for C++2a.
  2811. * testsuite/23_containers/unordered_set/requirements/
  2812. explicit_instantiation/3.cc: Do not run test for C++2a.
  2813. * testsuite/23_containers/unordered_set/requirements/
  2814. explicit_instantiation/5.cc: Do not test allocator rebinding extension
  2815. for C++2a.
  2816. * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
  2817. 2.cc: Remove redundant test.
  2818. * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
  2819. 3.cc: Do not run test for C++2a.
  2820. * testsuite/23_containers/vector/requirements/explicit_instantiation/
  2821. 3.cc: Likewise.
  2822. * include/std/type_traits (is_empty, is_polymorphic, is_final)
  2823. (is_abstract, is_aggregate): Remove static_assert.
  2824. * testsuite/20_util/is_abstract/incomplete_neg.cc: Check for error
  2825. from builtin only.
  2826. * testsuite/20_util/is_aggregate/incomplete_neg.cc: Likewise. Add
  2827. missing -std=gnu++17 option.
  2828. * testsuite/20_util/is_empty/incomplete_neg.cc: New test.
  2829. * testsuite/20_util/is_final/incomplete_neg.cc: New test.
  2830. * testsuite/20_util/is_polymorphic/incomplete_neg.cc: Check for error
  2831. from builtin only.
  2832. * testsuite/18_support/set_terminate.cc: Do not run for C++98 mode.
  2833. * testsuite/18_support/set_unexpected.cc: Likewise.
  2834. * testsuite/20_util/is_nothrow_invocable/value.cc: Test converting to
  2835. void.
  2836. * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix constexpr
  2837. function to be valid in C++11.
  2838. * testsuite/26_numerics/complex/proj.cc: Do not run for C++98 mode.
  2839. * testsuite/experimental/names.cc: Do not run for C++98 mode. Do not
  2840. include Library Fundamentals or Networking headers in C++11 mode.
  2841. * testsuite/ext/char8_t/atomic-1.cc: Do not run for C++98 mode.
  2842. * include/std/tuple (_TC): Replace with _TupleConstraints.
  2843. (_TupleConstraints): New helper for SFINAE constraints, with more
  2844. expressive member functions to reduce duplication when used.
  2845. (tuple::_TC2, tuple::_TMC, tuple::_TNTC): Remove.
  2846. (tuple::_TCC): Replace dummy type parameter with bool non-type
  2847. parameter that can be used to check the pack size.
  2848. (tuple::_ImplicitDefaultCtor, tuple::_ExplicitDefaultCtor)
  2849. (tuple::_ImplicitCtor, tuple::_ExplicitCtor): New alias templates for
  2850. checking constraints in constructors.
  2851. (tuple::__valid_args, tuple::_UseOtherCtor, tuple::__use_other_ctor):
  2852. New SFINAE helpers.
  2853. (tuple::tuple): Use new helpers to reduce repitition in constraints.
  2854. (tuple::tuple(allocator_arg_t, const Alloc&)): Constrain.
  2855. (tuple<T1, T2>::_TCC, tuple<T1, T2>::_ImplicitDefaultCtor)
  2856. (tuple<T1, T2>::_ExplicitDefaultCtor, tuple<T1, T2>::_ImplicitCtor)
  2857. (tuple<T1, T2>::_ExplicitCtor): New alias templates for checking
  2858. constraints in constructors.
  2859. (tuple::__is_alloc_arg()): New SFINAE helpers.
  2860. (tuple<T1, T2>::tuple): Use new helpers to reduce repitition in
  2861. constraints.
  2862. (tuple<T1, T2>::tuple(allocator_arg_t, const Alloc&)): Constrain.
  2863. * testsuite/20_util/tuple/cons/90700.cc: New test.
  2864. * testsuite/20_util/tuple/cons/allocators.cc: Add default constructor
  2865. to meet new constraint on allocator-extended default constructor.
  2866. 2019-06-03 Jonathan Wakely <jwakely@redhat.com>
  2867. * include/bits/stl_map.h (map): Disable static assert for C++98 mode.
  2868. * include/bits/stl_multimap.h (multimap): Likewise.
  2869. 2019-06-03 François Dumont <fdumont@gcc.gnu.org>
  2870. Rename variables and cleanup comments.
  2871. * include/bits/hashtable_policy.h
  2872. * include/bits/hashtable.h
  2873. 2019-06-03 Jonathan Wakely <jwakely@redhat.com>
  2874. * doc/xml/manual/status_cxx2020.xml: Add missing row for P0920R2.
  2875. Fix bgcolor for P0340R3.
  2876. * doc/html/*: Regenerate.
  2877. PR libstdc++/90686
  2878. * doc/xml/manual/status_cxx2014.xml: Document what's missing from
  2879. <experimental/memory_resource>.
  2880. * doc/xml/manual/status_cxx2020.xml: Document status of P1285R0,
  2881. P0339R6, P0340R3, P1164R1 and P1357R1.
  2882. * doc/html/*: Regenerate.
  2883. * doc/xml/manual/status_cxx2020.xml: Document P1463R1 status.
  2884. * include/bits/forward_list.h [__cplusplus > 201703]: Enable
  2885. allocator::value_type assertion for C++2a.
  2886. * include/bits/hashtable.h: Likewise.
  2887. * include/bits/stl_deque.h: Likewise.
  2888. * include/bits/stl_list.h: Likewise.
  2889. * include/bits/stl_map.h: Likewise.
  2890. * include/bits/stl_multimap.h: Likewise.
  2891. * include/bits/stl_multiset.h: Likewise.
  2892. * include/bits/stl_set.h: Likewise.
  2893. * include/bits/stl_vector.h: Likewise.
  2894. * testsuite/23_containers/deque/48101-3_neg.cc: New test.
  2895. * testsuite/23_containers/forward_list/48101-3_neg.cc: New test.
  2896. * testsuite/23_containers/list/48101-3_neg.cc: New test.
  2897. * testsuite/23_containers/map/48101-3_neg.cc: New test.
  2898. * testsuite/23_containers/multimap/48101-3_neg.cc: New test.
  2899. * testsuite/23_containers/multiset/48101-3_neg.cc: New test.
  2900. * testsuite/23_containers/set/48101-3_neg.cc: New test.
  2901. * testsuite/23_containers/unordered_map/48101-3_neg.cc: New test.
  2902. * testsuite/23_containers/unordered_multimap/48101-3_neg.cc: New test.
  2903. * testsuite/23_containers/unordered_multiset/48101-3_neg.cc: New test.
  2904. * testsuite/23_containers/unordered_set/48101-3_neg.cc: New test.
  2905. * testsuite/23_containers/vector/48101-3_neg.cc: New test.
  2906. 2019-05-31 Gerald Pfeifer <gerald@pfeifer.com>
  2907. * doc/xml/manual/allocator.xml: Move hoard.org back to http.
  2908. 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
  2909. * include/std/tuple (tuple<>): Add noexcept to allocator-extended
  2910. constructors.
  2911. (tuple<T1, T2>::__nothrow_default_constructible()): New helper
  2912. function.
  2913. (tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper.
  2914. 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
  2915. * src/c++98/bitmap_allocator.cc: Add using-declaration for size_t.
  2916. PR libstdc++/90682
  2917. * libsupc++/eh_term_handler.cc: Include eh_term_handler.h to get
  2918. definition of _GLIBCXX_DEFAULT_TERM_HANDLER.
  2919. * libsupc++/eh_term_handler.h: New header defining
  2920. _GLIBCXX_DEFAULT_TERM_HANDLER.
  2921. * libsupc++/eh_terminate.cc: Include eh_term_handler.h.
  2922. (set_terminate): Restore default handler when argument is null.
  2923. (set_unexpected): Likewise.
  2924. * testsuite/18_support/set_terminate.cc: New test.
  2925. * testsuite/18_support/set_unexpected.cc: New test.
  2926. * include/backward/hashtable.h (size_t, ptrdiff_t)
  2927. (forward_iterator_tag, input_iterator_tag, _Construct, _Destroy)
  2928. (distance, vector, pair, __iterator_category): Remove
  2929. using-declarations that add these names to namespace __gnu_cxx.
  2930. * include/ext/bitmap_allocator.h (size_t, ptrdiff_t): Likewise.
  2931. * include/ext/debug_allocator.h (size_t): Likewise.
  2932. * include/ext/functional (size_t, unary_function, binary_function)
  2933. (mem_fun1_t, const_mem_fun1_t, mem_fun1_ref_t, const_mem_fun1_ref_t):
  2934. Likewise.
  2935. * include/ext/malloc_allocator.h (size_t, ptrdiff_t): Likewise.
  2936. * include/ext/memory (ptrdiff_t, pair, __iterator_category): Likewise.
  2937. * include/ext/mt_allocator.h (size_t, ptrdiff_t): Likewise.
  2938. * include/ext/new_allocator.h (size_t, ptrdiff_t): Likewise.
  2939. * include/ext/numeric (iota): Fix outdated comment.
  2940. * include/ext/pool_allocator.h (size_t, ptrdiff_t): Likewise.
  2941. * include/ext/rb_tree (_Rb_tree, allocator): Likewise.
  2942. * include/ext/rope (size_t, ptrdiff_t, allocator, _Destroy): Likewise.
  2943. * include/ext/ropeimpl.h (size_t, printf, basic_ostream)
  2944. (__throw_length_error, _Destroy, std::__uninitialized_fill_n_a):
  2945. Likewise.
  2946. * include/ext/slist (size_t, ptrdiff_t, _Construct, _Destroy)
  2947. (allocator, __true_type, __false_type): Likewise.
  2948. 2019-05-31 Antony Polukhin <antoshkka@gmail.com>
  2949. PR libstdc++/71579
  2950. * include/std/type_traits __type_identity, __is_complete_or_unbounded):
  2951. New helpers for checking preconditions in traits.
  2952. (is_trivial, is_trivially_copyable, is_standard_layout, is_pod)
  2953. (is_literal_type, is_empty, is_polymorphic, is_final, is_abstract)
  2954. (is_destructible, is_nothrow_destructible, is_constructible)
  2955. (is_default_constructible, is_copy_constructible)
  2956. (is_move_constructible, is_nothrow_default_constructible)
  2957. (is_nothrow_constructible, is_nothrow_copy_constructible)
  2958. (is_nothrow_move_constructible, is_copy_assignable, is_move_assignable)
  2959. (is_nothrow_assignable, is_nothrow_copy_assignable)
  2960. (is_nothrow_move_assignable, is_trivially_constructible)
  2961. (is_trivially_copy_constructible, is_trivially_move_constructible)
  2962. is_trivially_assignable, is_trivially_copy_assignable)
  2963. (is_trivially_move_assignable, is_trivially_destructible)
  2964. (alignment_of, is_swappable, is_nothrow_swappable, is_invocable)
  2965. (is_invocable_r, is_nothrow_invocable)
  2966. (has_unique_object_representations, is_aggregate): Add static_asserts
  2967. to make sure that type traits are not misused with incomplete types.
  2968. (__is_constructible_impl, __is_nothrow_default_constructible_impl)
  2969. (__is_nothrow_constructible_impl, __is_nothrow_assignable_impl): New
  2970. base characteristics without assertions that can be reused in other
  2971. traits.
  2972. * testsuite/20_util/is_complete_or_unbounded/memoization.cc: New test.
  2973. * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc: New
  2974. test.
  2975. * testsuite/20_util/is_complete_or_unbounded/value.cc: New test.
  2976. * testsuite/20_util/is_abstract/incomplete_neg.cc: New test.
  2977. * testsuite/20_util/is_aggregate/incomplete_neg.cc: New test.
  2978. * testsuite/20_util/is_class/value.cc: Check incomplete type.
  2979. * testsuite/20_util/is_function/value.cc: Likewise.
  2980. * testsuite/20_util/is_move_constructible/incomplete_neg.cc: New test.
  2981. * testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc: New
  2982. test.
  2983. * testsuite/20_util/is_polymorphic/incomplete_neg.cc: New test.
  2984. * testsuite/20_util/is_reference/value.cc: Check incomplete types.
  2985. * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
  2986. * testsuite/20_util/is_union/value.cc: Likewise.
  2987. * testsuite/20_util/is_void/value.cc: Likewise.
  2988. * testsuite/util/testsuite_tr1.h: Add incomplete union type.
  2989. 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
  2990. * include/bits/random.h (random_device::_M_init(const char*, size_t)):
  2991. Add new private member function.
  2992. * src/c++11/cow-string-inst.cc (random_device::_M_init(const string&))
  2993. (random_device::_M_init_pretr1(const string&)): Call new private
  2994. member with string data.
  2995. * src/c++11/random.cc (random_device::_M_init(const char*, size_t)):
  2996. Define.
  2997. * testsuite/26_numerics/random/random_device/cons/default-cow.cc: New
  2998. test using COW strings.
  2999. * testsuite/26_numerics/random/random_device/cons/default.cc: Generate
  3000. a value from the device.
  3001. * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
  3002. Fix typo in token string.
  3003. 2019-05-30 Nina Dinka Ranns <dinka.ranns@gmail.com>
  3004. LWG2788 basic_string spurious use of a default constructible allocator
  3005. * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
  3006. (basic_string::_M_replace_dispatch): Construct temporary string with
  3007. the current allocator.
  3008. * testsuite/21_strings/basic_string/allocator/char/lwg2788.cc: New.
  3009. * testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc: New.
  3010. 2019-05-30 Jonathan Wakely <jwakely@redhat.com>
  3011. * doc/xml/manual/diagnostics.xml: Update list of headers that define
  3012. exception classes.
  3013. * doc/xml/manual/support.xml: Rewrite advice around NULL. Rewrite
  3014. section about new/delete overloads. Improve section on verbose
  3015. terminate handler.
  3016. * doc/html/*: Regenerate.
  3017. * doc/xml/manual/status_cxx2020.xml: Add feature-test macro for
  3018. P0811R3. Change status of P1353R0.
  3019. * doc/html/*: Regenerate.
  3020. * doc/xml/manual/status_cxx2011.xml: Use <variablelist> for
  3021. documentation of implementation-defined types for [thread.req.native].
  3022. * doc/xml/manual/status_cxx2017.xml: Update documentation of
  3023. implementation-defined strings for [variant.bad.access]. Fix typo in
  3024. documentation of implementation-defined support for [fs.conform.9945].
  3025. * doc/html/*: Regenerate.
  3026. 2019-05-29 Jonathan Wakely <jwakely@redhat.com>
  3027. PR libstdc++/85494
  3028. * testsuite/26_numerics/random/random_device/cons/token.cc: Fix test
  3029. that fails on mingw-w64.
  3030. PR libstdc++/88881
  3031. * src/c++17/fs_ops.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
  3032. (status(const path&, error_code&)): Use parent_path() to remove
  3033. trailing slash.
  3034. (symlink_status(const path&, error_code&)): Duplicate workaround for
  3035. bug in _wstat for paths with trailing slash.
  3036. * testsuite/27_io/filesystem/operations/remove_all.cc: Check path
  3037. with trailing slash.
  3038. * testsuite/27_io/filesystem/operations/status.cc: Likewise.
  3039. * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
  3040. * src/c++17/fs_path.cc (path::parent_path()): Create whole path at
  3041. once instead of building it iteratively.
  3042. * testsuite/util/testsuite_api.h: Remove names of unused parameters.
  3043. PR libstdc++/85494 use rdseed and rand_s in std::random_device
  3044. * acinclude.m4 (GLIBCXX_CHECK_X86_RDSEED): Define macro to check if
  3045. the assembler supports rdseed.
  3046. * config.h.in: Regenerate.
  3047. * configure: Regenerate.
  3048. * configure.ac: Use GLIBCXX_CHECK_X86_RDSEED.
  3049. * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_CRT_RAND_S): Define.
  3050. * doc/html/*: Regenerate.
  3051. * doc/xml/manual/status_cxx2011.xml: Document new tokens.
  3052. * include/bits/random.h (random_device::random_device()): Always call
  3053. _M_init rather than _M_init_pretr1.
  3054. (random_device::random_device(const string&)): Likewise.
  3055. (random_device::operator()()): Always call _M_getval().
  3056. (random_device::_M_file): Replace first member of union with an
  3057. anonymous struct, with _M_file as its first member.
  3058. * src/c++11/random.cc [_GLIBCXX_X86_RDRAND] (USE_RDRAND): Define.
  3059. [_GLIBCXX_X86_RDSEED] (USE_RDSEED): Define.
  3060. (USE_MT19937): Define if none of the above are defined.
  3061. (USE_POSIX_FILE_IO): Define.
  3062. (_M_strtoul): Remove.
  3063. [USE_RDSEED] (__x86_rdseed): Define new function.
  3064. [_GLIBCXX_USE_CRT_RAND_S] (__winxp_rand_s): Define new function.
  3065. (random_device::_M_init(const string&)): Initialize new union members.
  3066. Add support for "rdseed" and "rand_s" tokens. Decide what the
  3067. "default" token does according to which USE_* macros are defined.
  3068. [USE_POSIX_FILE_IO]: Store a file descriptor.
  3069. [USE_MT19937]: Forward to _M_init_pretr1 instead.
  3070. (random_device::_M_init_pretr1(const string&)) [USE_MT19937]: Inline
  3071. code from _M_strtoul.
  3072. [!USE_MT19937]: Call _M_init, transforming the old default token or
  3073. numeric tokens to "default".
  3074. (random_device::_M_fini()) [USE_POSIX_FILE_IO]: Use close not fclose.
  3075. (random_device::_M_getval()): Use new union members to obtain a
  3076. random number from the stored function pointer or file descriptor.
  3077. [USE_MT19937]: Obtain a value from the mt19937 engine.
  3078. (random_device::_M_getval_pretr1()): Call _M_getval().
  3079. (random_device::_M_getentropy()) [USE_POSIX_FILE_IO]: Use _M_fd
  3080. instead of fileno.
  3081. [!USE_MT19937] (mersenne_twister): Do not instantiate when not needed.
  3082. * testsuite/26_numerics/random/random_device/85494.cc: New test.
  3083. 2019-05-28 Jonathan Wakely <jwakely@redhat.com>
  3084. PR libstdc++/90634
  3085. * include/experimental/bits/fs_path.h (path::path(path&&)): Only call
  3086. _M_split_cmpts() for a path with multiple components.
  3087. (path::_S_is_dir_sep()): Add missing 'static' keyword to function.
  3088. * src/filesystem/path.cc (path::_M_split_cmpts()): Count number of
  3089. components and reserve space in vector. Return early when there is
  3090. only one component.
  3091. * testsuite/27_io/filesystem/path/construct/90634.cc: New test.
  3092. * testsuite/experimental/filesystem/path/construct/90634.cc: New test.
  3093. * testsuite/util/testsuite_fs.h (compare_paths): Use three-argument
  3094. form of std::equals for C++11 compatibility.
  3095. 2019-05-26 Gerald Pfeifer <gerald@pfeifer.com>
  3096. * doc/xml/manual/appendix_contributing.xml: Update pointer to
  3097. C++ standard at ansi.org.
  3098. 2019-05-24 Jonathan Wakely <jwakely@redhat.com>
  3099. * include/std/numeric (midpoint(T*, T*)): Fix incorrect result.
  3100. * testsuite/26_numerics/midpoint/pointer.cc: Change "compile" test
  3101. to "run".
  3102. * testsuite/20_util/shared_ptr/cons/alias-rval.cc: Fix test.
  3103. * testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused function.
  3104. 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
  3105. * testsuite/20_util/function_objects/invoke/1.cc: Move C++17-specific
  3106. tests to ...
  3107. * testsuite/20_util/function_objects/invoke/3.cc: New test.
  3108. * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
  3109. "compile" test to "run".
  3110. * doc/xml/manual/intro.xml: Document LWG DR 2996 change.
  3111. * doc/html/*: Regenerate.
  3112. * include/bits/shared_ptr.h (shared_ptr(shared_ptr&&, T*)): Add
  3113. rvalue aliasing constructor.
  3114. (static_pointer_cast, const_pointer, dynamic_pointer_cast)
  3115. (reinterpret_pointer_cast): Add overloads taking rvalues.
  3116. * include/bits/shared_ptr_base.h (__shared_ptr(__shared_ptr&&, T*)):
  3117. Add rvalue aliasing constructor.
  3118. * testsuite/20_util/shared_ptr/casts/1.cc: Change "compile" test to
  3119. "run" and check return values as well as types.
  3120. * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
  3121. * testsuite/20_util/shared_ptr/casts/rval.cc: New test.
  3122. * testsuite/20_util/shared_ptr/cons/alias-rval.cc: New test.
  3123. * testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused return
  3124. values.
  3125. * doc/xml/manual/evolution.xml: Document LWG DR 2921 change.
  3126. * doc/xml/manual/intro.xml: Likewise.
  3127. * include/std/future (__create_task_state): Add default arguments
  3128. to make providing an allocator optional.
  3129. (packaged_task::packaged_task(F&&)): Call __create_task_state directly
  3130. instead of delegating to another constructor.
  3131. (packaged_task::packaged_task(allocator_arg_t, const A&, ...)): Do not
  3132. define allocator-extended constructors for C++17 and later.
  3133. * testsuite/30_threads/packaged_task/cons/alloc.cc: Only run test for
  3134. C++11 and C++14.
  3135. * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
  3136. * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
  3137. * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
  3138. 2019-05-23 Hans-Peter Nilsson <hp@axis.com>
  3139. * testsuite/26_numerics/random/poisson_distribution/operators/values.cc:
  3140. Don't run the libstdc++/83237 part on simulator targets.
  3141. 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
  3142. * doc/xml/manual/status_cxx2017.xml: Add feature test macro for
  3143. P0040R3.
  3144. * doc/html/*: Regenerate.
  3145. * include/experimental/any (__any_caster): Use RTTI if comparing
  3146. addresses fails, to support non-unique addresses in shared libraries.
  3147. * include/std/any (__any_caster): Likewise.
  3148. PR libstdc++/90220
  3149. * include/experimental/any (__any_caster): Constrain to only be
  3150. callable for object types. Use remove_cv_t instead of decay_t.
  3151. If the type decays or isn't copy constructible, compare the manager
  3152. function to a dummy specialization.
  3153. (__any_caster): Add overload constrained for non-object types.
  3154. (any::_Manager_internal<_Op>): Add dummy specialization.
  3155. * testsuite/experimental/any/misc/any_cast.cc: Test function types
  3156. and array types.
  3157. 2019-05-22 Jonathan Wakely <jwakely@redhat.com>
  3158. PR libstdc++/90557
  3159. * src/c++17/fs_path.cc (path::_List::operator=(const _List&)): Fix
  3160. reversed arguments to uninitialized_copy_n.
  3161. * testsuite/27_io/filesystem/path/assign/copy.cc: Check that source
  3162. is unchanged by copy assignment.
  3163. * testsuite/util/testsuite_fs.h (compare_paths): Use std::equal to
  3164. compare path components.
  3165. PR libstdc++/77691
  3166. * include/experimental/memory_resource: Add system header pragma and
  3167. do not define anything unless compiled as C++14 or later.
  3168. (__resource_adaptor_common::__guaranteed_alignment): Remove.
  3169. (__resource_adaptor_imp::do_allocate): If the requested alignment
  3170. is a fundamental alignment then either allocate directly from _M_alloc
  3171. or call the new _M_allocate function.
  3172. (__resource_adaptor_imp::do_deallocate): Likewise for deallocation.
  3173. (__resource_adaptor_imp::_M_allocate): New function that uses a copy
  3174. of the allocator rebound to a POD type with the specified alignment.
  3175. (__resource_adaptor_imp::_M_deallocate): Likewise for deallocation.
  3176. * testsuite/experimental/memory_resource/new_delete_resource.cc:
  3177. Adjust expected allocation sizes.
  3178. * testsuite/experimental/memory_resource/resource_adaptor.cc: Remove
  3179. xfail for Solaris x86.
  3180. 2019-05-21 Thomas Rodgers <trodgers@redhat.com>
  3181. LWG 3062 - Unnecessary decay_t in is_execution_policy_v
  3182. * include/pstl/execution_defs.h (__enable_if_execution_policy):
  3183. Use std::__remove_cvref_t when building with GCC.
  3184. 2019-05-21 Jonathan Wakely <jwakely@redhat.com>
  3185. PR libstdc++/90252
  3186. * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
  3187. Use "additional_flags" to pass -ltbb to v3_target_compile command.
  3188. Use check_v3_target_prop_cached to cache the result of the test.
  3189. * doc/xml/manual/shared_ptr.xml: Fix names of lock policy constants.
  3190. 2019-05-20 Thomas Rodgers <trodgers@redhat.com>
  3191. PR libstdc++/90252
  3192. * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
  3193. Changed v3_target_compile check from preprocess to executable.
  3194. Added "-ltbb" to v3_target_compile flags.
  3195. 2019-05-20 Thomas Rodgers <trodgers@redhat.com>
  3196. * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
  3197. Add check for Thread Building Blocks 2018 or later.
  3198. 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
  3199. * testsuite/experimental/names.cc: Only include Networking TS headers
  3200. on targets with the necessary Gthreads support.
  3201. 2019-05-20 Marek Polacek <polacek@redhat.com>
  3202. CWG 2094 - volatile scalars are trivially copyable.
  3203. PR c++/85679
  3204. * testsuite/20_util/is_trivially_copyable/value.cc: Change the expected
  3205. result for volatile int.
  3206. 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
  3207. * testsuite/17_intro/names.cc: Do not check 'ptr' on Solaris.
  3208. * testsuite/experimental/names.cc: Include <experimental/filesystem>
  3209. conditionally.
  3210. PR c++/90532 Ensure __is_constructible(T[]) is false
  3211. * include/std/type_traits (__do_is_default_constructible_impl)
  3212. (__is_default_constructible_atom, __is_default_constructible_safe):
  3213. Remove.
  3214. (is_default_constructible): Use is_constructible.
  3215. * testsuite/20_util/is_constructible/value.cc: Check int[] case.
  3216. * testsuite/20_util/is_default_constructible/value.cc: Likewise.
  3217. * testsuite/20_util/is_trivially_constructible/value.cc: Likewise.
  3218. * testsuite/20_util/is_trivially_default_constructible/value.cc:
  3219. Likewise.
  3220. 2019-05-20 Pádraig Brady <pbrady@fb.com>
  3221. * libstdc++-v3/include/ext/new_allocator.h (deallocate): Pass the size
  3222. to the deallocator with -fsized-deallocation.
  3223. 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
  3224. * testsuite/experimental/memory_resource/new_delete_resource.cc: Fix
  3225. test by passing correct alignment to deallocate function.
  3226. 2019-05-18 Jonathan Wakely <jwakely@redhat.com>
  3227. PR libstdc++/90520
  3228. * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
  3229. Raise exception if unique_ptr tuple member has unknown structure.
  3230. * python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker.__call__):
  3231. Adjust worker to support new __uniq_ptr_data base class. Do not
  3232. assume field called _M_head_impl is the first tuple element.
  3233. 2019-05-17 François Dumont <fdumont@gcc.gnu.org>
  3234. * include/bits/stl_deque.h
  3235. (_Deque_iterator<>::__ptr_to): Remove, use std::__ptr_rebind.
  3236. (_Deque_base(_Deque_base&&, const allocator_type&)): New.
  3237. (_Deque_base::_Deque_impl_data): New.
  3238. (_Deque_base::_Deque_impl): Inherit latter.
  3239. (_Deque_base::_Deque_impl::_M_swap_data): Move...
  3240. (_Deque_base::_Deque_impl_data::_M_swap_data): ... here.
  3241. (_Deque_base::_Deque_impl()): Add noexcept qualification.
  3242. (_Deque_base::_Deque_impl(_Deque_impl&&, _Tp_alloc_type&&)): New.
  3243. (_Deque_base::_Deque_impl::_M_get_Tp_allocator()): Remove static_cast.
  3244. (deque<>::deque()): Default.
  3245. (deque<>::deque(deque&&)): Default.
  3246. (deque<>::deque(deque&&, const allocator_type&, false_type)): New.
  3247. (deque<>::deque(deque&&, const allocator_type&, true_type)): New.
  3248. (deque<>::deque(deque&&, const allocator_type&)): Delegate to latters.
  3249. (deque<>::deque<_It>(_It, _It, const allocator_type&)): Use
  3250. _M_range_initialize.
  3251. (deque<>::assign<_It>(_It, _It)): Use _M_assign_aux.
  3252. (deque<>::resize(size_type, const value_type&)): Share a single
  3253. implementation.
  3254. (deque<>::insert<_It>(const_iterator, _It, _It)): Use
  3255. _M_range_insert_aux.
  3256. [__cplusplus >= 201103L](_M_initialize_dispatch): Remove.
  3257. [__cplusplus >= 201103L](_M_assign_dispatch): Remove.
  3258. [__cplusplus >= 201103L](_M_insert_dispatch): Remove.
  3259. * testsuite/23_containers/deque/allocator/default_init.cc: New.
  3260. 2019-05-17 Jonathan Wakely <jwakely@redhat.com>
  3261. PR libstdc++/90246
  3262. * include/std/variant (holds_alternative, get, get_if): Improve
  3263. static assertion messages.
  3264. (bad_variant_access::bad_variant_access()): Change default message.
  3265. (__throw_bad_variant_access(bool)): New overload.
  3266. (get): Use new overload.
  3267. (visit, visit<R>): Improve exception message.
  3268. * testsuite/20_util/variant/compile.cc: Fix narrowing test for ILP32
  3269. targets. Add more cases from P0608R3.
  3270. * testsuite/20_util/variant/run.cc: Add more cases from P0608R3.
  3271. * include/bits/random.h (seed_seq::param): Fix non-reserved name.
  3272. * include/experimental/type_traits (is_detected_exact)
  3273. (is_detected_exact_v): Likewise.
  3274. * include/pstl/execution_defs.h (is_execution_policy)
  3275. (is_execution_policy_v, __enable_if_execution_policy): Likewise.
  3276. * include/pstl/execution_impl.h (__policy_traits): Likewise.
  3277. * testsuite/17_intro/names.cc: Check for more non-reserved names.
  3278. * testsuite/experimental/names.cc: New test.
  3279. PR libstdc++/85965
  3280. * include/bits/hashtable.h (_Hashtable::~_Hashtable()): Remove static
  3281. assertions from the destructor.
  3282. * include/bits/hashtable_policy.h (_Hash_code_base::_M_hash_code):
  3283. Move static_assert for hash function to here.
  3284. (_Hash_table_base::_M_equals): Move static_assert for equality
  3285. predicate to here.
  3286. * include/bits/stl_tree.h (_Rb_tree::_S_value(_Const_Link_type)):
  3287. Remove.
  3288. (_Rb_tree::_S_key(_Const_Link_type)): Move assertions here. Access
  3289. the value directly instead of calling _S_value.
  3290. (_Rb_tree::_S_value(_Const_Base_ptr)): Remove.
  3291. (_Rb_tree::_S_key(_Const_Base_ptr)): Do downcast and forward to
  3292. _S_key(_Const_Link_type).
  3293. * testsuite/23_containers/set/85965.cc: Check construction,
  3294. destruction, assignment and size() do not trigger the assertions.
  3295. * testsuite/23_containers/unordered_set/85965.cc: Likewise.
  3296. * testsuite/23_containers/map/48101_neg.cc: Call find and adjust
  3297. expected errors.
  3298. * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
  3299. * testsuite/23_containers/multiset/48101_neg.cc: Likewise.
  3300. * testsuite/23_containers/set/48101_neg.cc: Likewise.
  3301. * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
  3302. * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
  3303. * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
  3304. * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
  3305. * include/bits/invoke.h [__cplusplus < 201703L] (__invoke_r<void>):
  3306. Use _GLIBCXX14_CONSTEXPR because void functions cannot be constexpr
  3307. in C++11.
  3308. * doc/xml/manual/status_cxx2020.xml: Update P0608R3, P0777R1, and
  3309. P1165R1 entries.
  3310. * doc/html/*: Regenerate.
  3311. * include/std/tuple (make_from_tuple): Use remove_reference_t instead
  3312. of decay_t (P0777R1).
  3313. 2019-05-17 François Dumont <fdumont@gcc.gnu.org>
  3314. Move from state of allocators (LWG2593)
  3315. * include/bits/stl_deque.h
  3316. (_Deque_base(_Deque_base&&, false_type)): Remove.
  3317. (_Deque_base(_Deque_base&&, true_type)): Remove.
  3318. (_Deque_base(_Deque_base&&)): Adapt.
  3319. (_Deque_base::_M_move_impl()): Remove.
  3320. * testsuite/util/testsuite_allocator.h
  3321. (propagating_allocator(propagating_allocator&&)): Preserve move from
  3322. state.
  3323. * testsuite/23_containers/deque/allocator/move_assign.cc (test02):
  3324. Adapt.
  3325. * testsuite/23_containers/forward_list/allocator/move_assign.cc (test02):
  3326. Adapt.
  3327. * testsuite/23_containers/list/allocator/move_assign.cc (test02): Adapt.
  3328. * testsuite/23_containers/map/allocator/move_assign.cc (test02): Adapt.
  3329. * testsuite/23_containers/multimap/allocator/move_assign.cc (test02):
  3330. Adapt.
  3331. * testsuite/23_containers/multiset/allocator/move_assign.cc (test02):
  3332. Adapt.
  3333. * testsuite/23_containers/set/allocator/move_assign.cc (test02): Adapt.
  3334. * testsuite/23_containers/unordered_map/allocator/move_assign.cc
  3335. (test02): Adapt.
  3336. * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
  3337. (test02): Adapt.
  3338. * testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
  3339. (test02): Adapt.
  3340. * testsuite/23_containers/unordered_set/allocator/move_assign.cc
  3341. (test02): Adapt.
  3342. * testsuite/23_containers/vector/allocator/move_assign.cc (test02):
  3343. Adapt.
  3344. * testsuite/23_containers/vector/bool/allocator/move_assign.cc (test02):
  3345. Adapt.
  3346. * testsuite/21_strings/basic_string/allocator/char/move_assign.cc
  3347. (test02): Adapt.
  3348. * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
  3349. (test02): Adapt.
  3350. 2019-05-16 Jonathan Wakely <jwakely@redhat.com>
  3351. * src/c++17/fs_ops.cc (absolute(const path&, error_code&))
  3352. [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Remove bogus assertion.
  3353. * include/std/variant (__overload_set): Remove.
  3354. (_Arr): New helper.
  3355. (_Build_FUN): New class template to define a single FUN overload,
  3356. with specializations to prevent unwanted conversions, as per P0608R3.
  3357. (_Build_FUNs): New class template to build an overload set of FUN.
  3358. (_FUN_type): New alias template to perform overload resolution.
  3359. (__accepted_type): Use integer_constant base for failure case. Use
  3360. _FUN_type for successful case.
  3361. (variant::__accepted_index): Use _Tp instead of _Tp&&.
  3362. (variant::variant(_Tp&&)): Likewise.
  3363. (variant::operator=(_Tp&&)): Likewise.
  3364. * include/std/variant (_Variant_storage<false, _Types...>::_M_reset):
  3365. Replace raw visitation with a runtime check for the valueless state
  3366. and a non-raw visitor.
  3367. (_Variant_storage<false, _Types...>::_M_reset_impl): Remove.
  3368. (variant::index()): Remove branch.
  3369. (variant::swap(variant&)): Use valueless_by_exception() instead of
  3370. comparing the index to variant_npos, and add likelihood attribute.
  3371. * include/bits/hashtable_policy.h (_Equal_helper): Remove.
  3372. (_Hashtable_base::_Equal_hash_code): Define new class template.
  3373. (_Hashtable_base::_M_equals): Use _Equal_hash_code instead of
  3374. _Equal_helper.
  3375. * include/bits/hashtable_policy.h (_Hashtable_ebo_helper::_S_get):
  3376. Replace with _M_get non-static member function.
  3377. (_Hashtable_ebo_helper::_S_cget): Replace with _M_cget non-static
  3378. member function.
  3379. (_Hash_code_base, _Local_iterator_base, _Hashtable_base):
  3380. (_Hashtable_alloc): Adjust to use non-static members of EBO helper.
  3381. * include/bits/hashtable_policy.h (_Hash_code_base::_M_swap): Use
  3382. _S_get accessors for members in EBO helpers.
  3383. (_Hash_code_base::_M_extract(), _Hash_code_base::_M_ranged_hash())
  3384. (_Hash_code_base::_M_h1(), _Hash_code_base::_M_h2()): Remove non-const
  3385. overloads.
  3386. (_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO
  3387. helpers.
  3388. (_Hashtable_base::_M_eq()): Remove non-const overload.
  3389. 2019-05-15 Jonathan Wakely <jwakely@redhat.com>
  3390. * include/std/variant (visit, visit<R>): Qualify calls to __do_visit.
  3391. 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
  3392. * testsuite/util/testsuite_allocator.h (NullablePointer::operator bool):
  3393. Fix return value.
  3394. 2019-05-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
  3395. * config/os/solaris/solaris2.10: Move to ...
  3396. * config/os/solaris: ... this.
  3397. * configure.host (os_include_dir): Adapt.
  3398. (abi_baseline_pair): Remove Solaris 10 handling.
  3399. * config/abi/post/i386-solaris2.10: Remove.
  3400. * config/abi/post/sparc-solaris2.10: Remove.
  3401. * config/abi/post/i386-solaris2.11: Rename to ...
  3402. * config/abi/post/i386-solaris: ... this.
  3403. * config/abi/post/sparc-solaris2.11: Rename to ...
  3404. * config/abi/post/sparc-solaris: ... this.
  3405. * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] [__sun]: Remove
  3406. workaround.
  3407. * testsuite/ext/enc_filebuf/char/13598.cc: Remove *-*-solaris2.10
  3408. xfail.
  3409. 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
  3410. * include/std/variant (__visit_with_index): Remove typedef.
  3411. (__deduce_visit_result): New tag type.
  3412. (__raw_visit, __raw_idx_visit): New helper functions for "raw"
  3413. visitation of possibly-valueless variants, forwarding to __do_visit
  3414. with the relevant tag type.
  3415. (_Variant_storage<false, _Types...>::_M_reset_impl): Use __raw_visit
  3416. and make lambda return void.
  3417. (__variant_construct): Likewise.
  3418. (_Copy_assign_base::operator=, _Move_assign_base::operator=): Use
  3419. __raw_idx_visit and make lambda return void.
  3420. (_Multi_array::__untag_result): Add metafunction to check the function
  3421. pointer type for a tag type that dictates the kind of visitation.
  3422. (_Multi_array<_Ret(*)(_Visitor, _Variants...), __first, __rest...>):
  3423. Use decltype(auto) instead of tagged function pointer type.
  3424. (__gen_vtable_impl): Remove bool non-type parameter and unused
  3425. _Variant_tuple parameter.
  3426. (__gen_vtable_impl::__visit_invoke_impl): Remove.
  3427. (__gen_vtable_impl::__do_visit_invoke): Remove.
  3428. (__gen_vtable_impl::__do_visit_invoke_r): Remove.
  3429. (__gen_vtable_impl::__visit_invoke): Use if-constexpr and __invoke_r
  3430. for the visit<R> case, rather than dispatching to separate functions.
  3431. (_VARIANT_RELATION_FUNCTION_TEMPLATE): Use __raw_idx_visit and make
  3432. lambda return void.
  3433. (variant::swap): Likewise.
  3434. (__do_visit): Replace two non-type template parameters with a single
  3435. type parameter, so that the caller must specify the visitor's return
  3436. type (or one of the tag types).
  3437. (visit): Deduce a return type from the visitor and use the
  3438. __deduce_visit_result tag to enforce that all overloads return the
  3439. same type.
  3440. (visit<R>): Call __do_visit<R> with explicit result type.
  3441. (__variant_hash_call_base_impl::operator()): Use __raw_visit and make
  3442. lambda return void.
  3443. 2019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
  3444. nonesuch is insufficiently useless (lwg2996)
  3445. * include/std/type_traits (struct __nonesuch): Added private base
  3446. class to make __nonesuch not an aggregate and removed deleted default
  3447. constructor.
  3448. * include/bits/stl_pair.h (struct __nonesuch_no_braces): Removed.
  3449. (operator=(const pair&)): Use __nonesuch instead of
  3450. __nonesuch_no_braces.
  3451. (operator=(pair&&)): Likewise
  3452. * include/std/tuple (operator=(const tuple&)): Use __nonesuch instead
  3453. of __nonesuch_no_braces.
  3454. (operator=(tuple&&)): Likewise
  3455. * include/experimental/type_traits (struct nonesuch): Added private
  3456. base class to make nonesuch not an aggregate and removed deleted
  3457. default constructor.
  3458. * testsuite/20_util/nonesuch/nonesuch.cc: New.
  3459. * testsuite/experimental/type_traits/nonesuch.cc: New.
  3460. 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
  3461. * include/bits/std_function.h (_Simple_type_wrapper): Remove.
  3462. (_Function_handler): Remove partial specializations for void return
  3463. types and pointers to member.
  3464. (_Function_handler::_M_manager): Adapt to removal of
  3465. _Simple_type_wrapper.
  3466. (_Function_handler::_M_invoke): Use __invoke_r instead of __invoke.
  3467. * include/std/functional (_Bind_result::__enable_if_void)
  3468. (_Bind_result::__disable_if_void): Remove sfinae helpers.
  3469. (_Bind_result::__call): Use __invoke_r and remove overloads for void
  3470. return types.
  3471. * include/std/future (__future_base::_Task_state::_M_run)
  3472. (__future_base::_Task_state::_M_run_delayed): Use __invoke_r and
  3473. change return type of lambda expressions.
  3474. * include/bits/invoke.h (__invoke_r): Define new function implementing
  3475. the INVOKE<R> pseudo-function.
  3476. * testsuite/20_util/function_objects/invoke/1.cc: Add more tests.
  3477. * testsuite/20_util/function_objects/invoke/2.cc: New test.
  3478. * include/std/type_traits (__is_nt_convertible_helper): Define it
  3479. unconditionally, not only for C++20.
  3480. (__is_nothrow_convertible): Define internal trait for use in C++11.
  3481. (__is_nt_invocable_impl: Fix by using __is_nothrow_convertible.
  3482. (is_invocable_r_v, is_nothrow_invocable_r_v): Add missing parameter.
  3483. * testsuite/20_util/is_nothrow_convertible/value_ext.cc: New test.
  3484. * testsuite/20_util/is_nothrow_convertible/value.cc: Check with type
  3485. that has nothrow explicit conversion but potentially-throwing implicit
  3486. conversion.
  3487. * testsuite/20_util/is_nothrow_invocable/value.cc: Likewise.
  3488. * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix helper
  3489. function to only consider implicit conversions.
  3490. * testsuite/20_util/tuple/cons/noexcept_specs.cc: Add comment.
  3491. * include/std/iterator: Include <iosfwd> instead of <istream> and
  3492. <ostream>.
  3493. * include/bits/stl_tree.h (_Rb_tree::erase(const Key*, const Key*)):
  3494. Remove unused, non-standard function.
  3495. * include/bits/regex.h (match_results::max_size()): Adjust return
  3496. value to account for prefix/suffix/unmatched subs.
  3497. (match_results::_M_resize(unsigned int)): Use _Base_type::assign to
  3498. reset the contained sub matches.
  3499. (match_results::_M_establish_failed_match(_Bi_iter)): Add new member
  3500. function to set result state following a failed match.
  3501. * include/bits/regex.tcc (__regex_algo_impl): Remove loop to set
  3502. sub_match states after _M_resize. Use _M_establish_failed_match.
  3503. PR libstdc++/69724
  3504. * include/std/thread (thread::_State_impl, thread::_S_make_state):
  3505. Replace single _Callable parameter with variadic _Args pack, to
  3506. forward them directly to the tuple of decayed copies.
  3507. * testsuite/30_threads/thread/cons/69724.cc: New test.
  3508. 2019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
  3509. Inconsistency wrt Allocators in basic_string assignment (LWG2579)
  3510. * include/bits/basic_string.h: (operator=(const basic_string&):
  3511. Move allocator decision to assign.
  3512. (assign(const basic_string&)): Move allocator decision here.
  3513. * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
  3514. Add tests.
  3515. * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
  3516. Add tests.
  3517. 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
  3518. * testsuite/util/testsuite_allocator.h (memory_resource)
  3519. (default_resource_mgr): Fix indentation.
  3520. * testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc:
  3521. Use operator-> to access raw pointer member.
  3522. * testsuite/23_containers/vector/59829.cc: Likewise.
  3523. * testsuite/23_containers/vector/bool/80893.cc: Likewise.
  3524. * testsuite/libstdc++-prettyprinters/cxx11.cc: Use NullablePointer.
  3525. * testsuite/util/testsuite_allocator.h (NullablePointer): New utility
  3526. for tests.
  3527. (PointerBase, PointerBase_void): Derive from NullablePointer and use
  3528. its constructors and equality operators. Change converting
  3529. constructors to use operator-> to access private member of the other
  3530. pointer type.
  3531. (PointerBase_void::operator->()): Add, for access to private member.
  3532. (operator-(PointerBase, PointerBase)): Change to hidden friend.
  3533. (operator==(PointerBase, PointerBase)): Remove.
  3534. (operator!=(PointerBase, PointerBase)): Remove.
  3535. * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): Do
  3536. not assume field called _M_head_impl is the first tuple element.
  3537. * testsuite/libstdc++-prettyprinters/compat.cc: Make tuple
  3538. implementation more accurate.
  3539. * testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr with
  3540. empty pointer type and non-empty deleter.
  3541. LWG 2899 - Make is_move_constructible correct for unique_ptr
  3542. * include/bits/unique_ptr.h (__uniq_ptr_impl): Add move constructor,
  3543. move assignment operator.
  3544. (__uniq_ptr_impl::release(), __uniq_ptr_impl::reset(pointer)): Add.
  3545. (__uniq_ptr_data): New class template with conditionally deleted
  3546. special members.
  3547. (unique_ptr, unique_ptr<T[], D>): Change type of data member from
  3548. __uniq_ptr_impl<T, D> to __uniq_ptr_data<T, D>. Define move
  3549. constructor and move assignment operator as defaulted.
  3550. (unique_ptr::release(), unique_ptr<T[], D>::release()): Forward to
  3551. __uniq_ptr_impl::release().
  3552. (unique_ptr::reset(pointer), unique_ptr<T[], D>::reset<U>(U)): Forward
  3553. to __uniq_ptr_impl::reset(pointer).
  3554. * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
  3555. Check for new __uniq_ptr_data type.
  3556. * testsuite/20_util/unique_ptr/dr2899.cc: New test.
  3557. 2019-05-13 Jonathan Wakely <jwakely@redhat.com>
  3558. PR libstdc++/90454.cc path construction from void*
  3559. * include/bits/fs_path.h (path::_Path): Use remove_pointer so that
  3560. pointers to void are rejected as well as void.
  3561. * include/experimental/bits/fs_path.h (path::_Path): Likewise.
  3562. * testsuite/27_io/filesystem/path/construct/80762.cc: Also check
  3563. pointers to void.
  3564. * testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
  3565. * doc/xml/manual/policy_data_structures.xml: Comment out stray
  3566. <remark> elements. Fix formatting of bibliography references.
  3567. 2019-05-13 Edward Smith-Rowland <3dw4rd@verizon.net>
  3568. * doc/xml/manual/status_cxx2020.xml: Document P0811R3 status.
  3569. 2019-05-13 Jonathan Wakely <jwakely@redhat.com>
  3570. Remove Profile Mode, deprecated since 7.1.0
  3571. * doc/Makefile.am: Remove XML file for profile mode docs.
  3572. * doc/Makefile.in: Regenerate.
  3573. * doc/xml/authors.xml: Remove authors of profile mode docs.
  3574. * doc/xml/manual/appendix_contributing.xml: Remove mention of profile
  3575. mode.
  3576. * doc/xml/manual/debug.xml: Likewise.
  3577. * doc/xml/manual/evolution.xml: Document removal of profile mode.
  3578. * doc/xml/manual/profile_mode.xml: Remove profile mode docs.
  3579. * doc/xml/manual/spine.xml: Remove profile mode author credit.
  3580. * doc/xml/manual/test.xml: Remove docs for dg-require-profile-mode
  3581. directive.
  3582. * doc/xml/manual/using.xml: Remove docs for profile mode headers and
  3583. macro.
  3584. * doc/html/*: Regenerate.
  3585. * include/Makefile.am: Remove profile mode headers.
  3586. * include/Makefile.in: Regenerate.
  3587. * include/bits/c++config (std::__profile): Remove namespace.
  3588. [_GLIBCXX_PROFILE]: Remove checks for macro.
  3589. * include/profile/array: Remove.
  3590. * include/profile/base.h: Remove.
  3591. * include/profile/bitset: Remove.
  3592. * include/profile/deque: Remove.
  3593. * include/profile/forward_list: Remove.
  3594. * include/profile/impl/profiler.h: Remove.
  3595. * include/profile/impl/profiler_algos.h: Remove.
  3596. * include/profile/impl/profiler_container_size.h: Remove.
  3597. * include/profile/impl/profiler_hash_func.h: Remove.
  3598. * include/profile/impl/profiler_hashtable_size.h: Remove.
  3599. * include/profile/impl/profiler_list_to_slist.h: Remove.
  3600. * include/profile/impl/profiler_list_to_vector.h: Remove.
  3601. * include/profile/impl/profiler_map_to_unordered_map.h: Remove.
  3602. * include/profile/impl/profiler_node.h: Remove.
  3603. * include/profile/impl/profiler_state.h: Remove.
  3604. * include/profile/impl/profiler_trace.h: Remove.
  3605. * include/profile/impl/profiler_vector_size.h: Remove.
  3606. * include/profile/impl/profiler_vector_to_list.h: Remove.
  3607. * include/profile/iterator_tracker.h: Remove.
  3608. * include/profile/list: Remove.
  3609. * include/profile/map: Remove.
  3610. * include/profile/map.h: Remove.
  3611. * include/profile/multimap.h: Remove.
  3612. * include/profile/multiset.h: Remove.
  3613. * include/profile/ordered_base.h: Remove.
  3614. * include/profile/set: Remove.
  3615. * include/profile/set.h: Remove.
  3616. * include/profile/unordered_base.h: Remove.
  3617. * include/profile/unordered_map: Remove.
  3618. * include/profile/unordered_set: Remove.
  3619. * include/profile/vector: Remove.
  3620. * scripts/run_doxygen: Do not process profile mode headers.
  3621. * testsuite/23_containers/array/element_access/60497.cc: Don't use
  3622. profile mode type.
  3623. * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
  3624. Remove dg-skip-if for profile mode.
  3625. * testsuite/23_containers/forward_list/capacity/1.cc: Remove
  3626. preprocessor check for profile mode.
  3627. * testsuite/23_containers/list/capacity/29134.cc: Likewise.
  3628. * testsuite/23_containers/map/modifiers/extract.cc: Remove dg-skip-if
  3629. for profile mode.
  3630. * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
  3631. Likewise.
  3632. * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
  3633. * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
  3634. * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
  3635. * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
  3636. * testsuite/23_containers/unordered_map/modifiers/extract.cc:
  3637. Likewise.
  3638. * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
  3639. Likewise.
  3640. * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
  3641. Likewise.
  3642. * testsuite/23_containers/unordered_set/modifiers/extract.cc:
  3643. Likewise.
  3644. * testsuite/23_containers/vector/bool/capacity/29134.cc: Remove
  3645. preprocessor check for profile mode.
  3646. * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
  3647. Likewise.
  3648. * testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
  3649. Remove dg-skip-if for profile mode.
  3650. * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
  3651. * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
  3652. * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
  3653. * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
  3654. * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
  3655. * testsuite/Makefile.am: Remove profile_flags variable and
  3656. * testsuite/Makefile.am: Remove profile_flags variable and
  3657. check-profile target.
  3658. * testsuite/Makefile.in: Regenerate.
  3659. * testsuite/ext/profile/all.cc: Remove.
  3660. * testsuite/ext/profile/mutex_extensions_neg.cc: Remove.
  3661. * testsuite/ext/profile/profiler_algos.cc: Remove.
  3662. * testsuite/ext/profile/replace_new.cc: Remove.
  3663. * testsuite/ext/throw_allocator/deallocate_global.cc: Remove
  3664. preprocessor check for profile mode.
  3665. * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
  3666. * testsuite/lib/libstdc++.exp (check_v3_target_profile_mode): Remove.
  3667. (check_v3_target_normal_mode): Do not check for profile mode macro.
  3668. * testsuite/libstdc++-prettyprinters/80276.cc: Remove dg-skip-if for
  3669. profile mode.
  3670. * testsuite/libstdc++-prettyprinters/compat.cc: Likewise.
  3671. * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
  3672. * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
  3673. * testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
  3674. * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
  3675. * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
  3676. * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
  3677. * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
  3678. * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
  3679. * testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
  3680. Remove array_allocator extension, deprecated since 4.9.0
  3681. * doc/xml/manual/allocator.xml: Remove documentation for
  3682. array_allocator.
  3683. * doc/xml/manual/evolution.xml: Document array_allocator removal.
  3684. * doc/xml/manual/using.xml: Remove header from documentation.
  3685. * include/Makefile.am: Remove <ext/array_allocator.h> header.
  3686. * include/Makefile.in: Regenerate.
  3687. * include/ext/array_allocator.h: Remove.
  3688. * include/precompiled/extc++.h: Do not include removed header.
  3689. * testsuite/ext/array_allocator/1.cc: Remove.
  3690. * testsuite/ext/array_allocator/2.cc: Remove.
  3691. * testsuite/ext/array_allocator/26875.cc: Remove.
  3692. * testsuite/ext/array_allocator/3.cc: Remove.
  3693. * testsuite/ext/array_allocator/check_deallocate_null.cc: Remove.
  3694. * testsuite/ext/array_allocator/check_delete.cc: Remove.
  3695. * testsuite/ext/array_allocator/check_new.cc: Remove.
  3696. * testsuite/ext/array_allocator/variadic_construct.cc: Remove.
  3697. * testsuite/ext/headers.cc: Do not include removed header.
  3698. 2019-05-11 François Dumont <fdumont@gcc.gnu.org>
  3699. * include/bits/stl_bvector.h
  3700. (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)):
  3701. Make hidden friend.
  3702. (operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)):
  3703. Likewise.
  3704. (operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
  3705. Likewise.
  3706. (operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)):
  3707. Likewise.
  3708. (operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
  3709. Likewise.
  3710. (operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
  3711. Likewise.
  3712. (operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)):
  3713. Likewise.
  3714. (_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO
  3715. copy elision.
  3716. (_Bit_iterator::operator-(difference_type)): Likewise.
  3717. (operator+(ptrdiff_t, const _Bit_iterator&)): Make hidden friend.
  3718. (_Bit_const_iterator::operator+(difference_type)): Likewise and allow
  3719. NRVO copy elision.
  3720. (_Bit_const_iterator::operator-(difference_type)): Likewise.
  3721. (operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend.
  3722. 2019-05-10 Jonathan Wakely <jwakely@redhat.com>
  3723. PR libstdc++/81266
  3724. * testsuite/util/thread/all.h: Do not use remove_pointer for
  3725. std::thread::native_handle_type.
  3726. PR libstdc++/90397
  3727. * include/std/variant (_Variant_storage<false, Types...>::_M_storage())
  3728. (_Variant_storage<true, Types...>::_M_reset()))
  3729. (_Variant_storage<true, Types...>::_M_storage())): Add noexcept.
  3730. (__get_storage): Likewise.
  3731. (variant): Add noexcept to friend declarations for __get and
  3732. __get_storage.
  3733. PR libstdc++/90388
  3734. * include/bits/unique_ptr.h (default_delete, default_delete<T[]>):
  3735. Use _Require for constraints.
  3736. (operator>(nullptr_t, const unique_ptr<T,D>&)): Implement exactly as
  3737. per the standard.
  3738. (__uniq_ptr_hash): New base class with conditionally-disabled call
  3739. operator.
  3740. (hash<unique_ptr<T,D>>): Derive from __uniq_ptr_hash.
  3741. * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
  3742. * testsuite/20_util/unique_ptr/hash/90388.cc: New test.
  3743. * include/bits/shared_ptr.h: Improve docs.
  3744. * include/bits/shared_ptr_base.h: Likewise.
  3745. * include/bits/stl_uninitialized.h: Likewise.
  3746. * include/bits/unique_ptr.h: Likewise.
  3747. * libsupc++/new: Likewise.
  3748. 2019-05-09 François Dumont <fdumont@gcc.gnu.org>
  3749. * include/bits/stl_deque.h
  3750. (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)):
  3751. Make hidden friend.
  3752. (operator!=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
  3753. Likewise.
  3754. (operator<(const _Deque_iterator<>&, const _Deque_iterator<>&)):
  3755. Likewise.
  3756. (operator<=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
  3757. Likewise.
  3758. (operator>(const _Deque_iterator<>&, const _Deque_iterator<>&)):
  3759. Likewise.
  3760. (operator>=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
  3761. Likewise.
  3762. (_Deque_iterator<>::operator+(difference_type)): Likewise and allow NRVO
  3763. copy elision.
  3764. (_Deque_iterator<>::operator-(difference_type)): Likewise.
  3765. 2019-05-08 François Dumont <fdumont@gcc.gnu.org>
  3766. PR libstdc++/90277
  3767. * testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
  3768. (test01): Reserve for number of insertions to avoid rehash during test.
  3769. * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
  3770. (test01): Likewise.
  3771. * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
  3772. (test01): Likewise.
  3773. (test02): Likewise.
  3774. (test03): Likewise.
  3775. 2019-05-08 Jonathan Wakely <jwakely@redhat.com>
  3776. * include/experimental/bits/fs_path.h: Improve docs.
  3777. * include/experimental/bits/net.h: Fix wrong header name in comment.
  3778. Do not document implementation details.
  3779. * include/experimental/netfwd: Fix doxygen grouping.
  3780. 2019-05-07 Jonathan Wakely <jwakely@redhat.com>
  3781. * include/bits/stl_pair.h: Improve docs.
  3782. * include/std/tuple: Likewise.
  3783. * doc/doxygen/doxygroups.cc (std::literals): Add documentation for
  3784. inline namespace.
  3785. * include/std/chrono: Improve docs.
  3786. * include/std/ratio: Do not document implementation details.
  3787. * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust dg-error
  3788. line numbers.
  3789. * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
  3790. PR libstdc++/89102
  3791. * doc/xml/manual/intro.xml: Document DR 2408 and 2465 changes.
  3792. * include/std/chrono (__duration_common_type_wrapper): Replace with ...
  3793. (__duration_common_type): New helper.
  3794. (common_type<chrono::duration<R1, P2>, chrono::duration<R2, P2>>): Use
  3795. __duration_common_type.
  3796. (__timepoint_common_type_wrapper): Replace with ...
  3797. (__timepoint_common_type): New helper.
  3798. (common_type<chrono::time_point<C, D2>, chrono::time_point<C, D2>>):
  3799. Use __time_point_common_type.
  3800. * include/std/type_traits (common_type<>): Define, as per LWG 2408.
  3801. (__common_type_impl): If either argument is transformed by decay,
  3802. use the common_type of the decayed types.
  3803. (__common_type_impl<_Tp, _Up, _Tp, _Up>): If the types are already
  3804. decayed, use __do_common_type_impl to get the common_type.
  3805. (common_type<_Tp>): Use common_type<_Tp, _Tp>.
  3806. (__do_member_type_wrapper, __member_type_wrapper)
  3807. (__expanded_common_type_wrapper): Remove.
  3808. (__common_type_pack, __common_type_fold): New helpers.
  3809. (common_type<_Tp, _Up, _Vp...>): Use new helpers instead of
  3810. __member_type_wrapper and __expanded_common_type_wrapper.
  3811. * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
  3812. Test zero-length template argument list.
  3813. * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
  3814. Test single argument cases and argument types that should decay.
  3815. * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
  3816. Adjust expected error.
  3817. * testsuite/20_util/duration/literals/range_neg.cc: Use zero for
  3818. dg-error lineno.
  3819. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
  3820. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
  3821. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
  3822. * doc/xml/manual/intro.xml: Fix DR 2537 and DR 2566 confusion.
  3823. 2019-05-01 Nina Dinka Ranns <dinka.ranns@gmail.com>
  3824. Make allocator propagation more consistent for
  3825. operator+(basic_string) (P1165R1)
  3826. * include/bits/basic_string.h
  3827. (operator+(basic_string&&, basic_string&&): Changed resulting
  3828. allocator to always be the one from the first parameter.
  3829. * include/bits/basic_string.tcc
  3830. (operator+(const _CharT*, const basic_string&)): Changed
  3831. resulting allocator to be SOCCC on the second parameter's allocator.
  3832. (operator+(_CharT, const basic_string&)): Likewise.
  3833. * testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
  3834. New.
  3835. * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
  3836. New.
  3837. 2019-05-07 Jonathan Wakely <jwakely@redhat.com>
  3838. * include/bits/regex.h: Improve docs.
  3839. * include/bits/regex.tcc: Do not document implementation details.
  3840. * testsuite/19_diagnostics/error_code/hash.cc: New test.
  3841. 2019-05-06 François Dumont <fdumont@gcc.gnu.org>
  3842. * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
  3843. Add type printer for container types in std::__debug namespace.
  3844. * testsuite/lib/gdb-test.exp (whatis-regexp-test): New.
  3845. (gdb-tests): Use distinct parameters for the type of test and use of
  3846. regex.
  3847. (gdb-test): Check for regex test even if 'whatis' test.
  3848. * testsuite/libstdc++-prettyprinters/80276.cc: Adapt for _GLIBCXX_DEBUG
  3849. mode.
  3850. * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
  3851. * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
  3852. * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
  3853. * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
  3854. * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
  3855. * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
  3856. * testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
  3857. 2019-05-04 Jonathan Wakely <jwakely@redhat.com>
  3858. * include/std/system_error (error_category): Fix comment.
  3859. PR libstdc++/90299
  3860. * src/c++17/fs_ops.cc (absolute(const path&)): Report an error if the
  3861. argument is an empty path.
  3862. (absolute(const path&, error_code&)): Use invalid_argument as error
  3863. code instead of no_such_file_or_directory.
  3864. * testsuite/27_io/filesystem/operations/absolute.cc: Check handling
  3865. of non-existent paths and empty paths with both overloads of absolute.
  3866. * include/std/system_error (error_category, error_code)
  3867. (error_condition): Improve docs.
  3868. * libsupc++/exception: Add missing @addtogroup Doxygen command.
  3869. * libsupc++/exception_ptr.h (exception_ptr): Link equality operators
  3870. to class documentation. Suppress documentation for implementation
  3871. details.
  3872. * libsupc++/nested_exception.h (throw_with_nested, rethrow_if_nested):
  3873. Suppress documentation for implementation details.
  3874. * include/std/system_error (error_code): Remove friend declaration
  3875. for hash<error_code>.
  3876. (hash<error_code>::operator()): Use public member functions to access
  3877. value and category.
  3878. (hash<error_condition>::operator()): Use address of category, not
  3879. its object representation.
  3880. * src/c++11/compatibility-c++0x.cc (hash<error_code>::operator()):
  3881. Use public member functions to access value and category.
  3882. * testsuite/19_diagnostics/error_condition/hash.cc: New test.
  3883. 2019-05-04 François Dumont <fdumont@gcc.gnu.org>
  3884. * include/bits/hashtable.h (_Hashtable<>::rehash): Review comment.
  3885. * include/bits/hashtable_policy.h
  3886. (_Prime_rehash_policy::_M_bkt_for_elements): Use __builtin_ceill.
  3887. (_Power2_rehash_policy::_M_bkt_for_elements): Likewise.
  3888. (_Power2_rehash_policy::_M_next_bkt): Enforce returning a result not
  3889. smaller than input value rather than always greater. Preserve
  3890. _M_next_resize if called with 0 input. Use __builtin_floorl.
  3891. (_Power2_rehash_policy::_M_need_rehash): Rehash only if number of
  3892. elements + number of insertions is greater than _M_next_resize. Start
  3893. with 11 buckets if not told otherwise. Use __builtin_floorl.
  3894. (_Rehash_base<>::reserve): Use rehash policy _M_bkt_for_elements.
  3895. * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
  3896. Preserve _M_next_resize if called with 0 input. Use __builtin_floorl.
  3897. (_Prime_rehash_policy::_M_need_rehash): Start with 11 buckets if not
  3898. told otherwise. Use __builtin_floorl.
  3899. * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt test
  3900. to also validate _Power2_rehash_policy.
  3901. * testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc:
  3902. Adapt.
  3903. 2019-05-03 Jonathan Wakely <jwakely@redhat.com>
  3904. PR libstdc++/61761
  3905. * testsuite/26_numerics/complex/proj.cc: Don't assume <cmath> defines
  3906. std::copysign.
  3907. PR libstdc++/52119
  3908. * include/ext/numeric_traits.h (__glibcxx_min): Avoid integer
  3909. overflow warning with -Wpedantic -Wsystem-headers.
  3910. 2019-05-02 Jonathan Wakely <jwakely@redhat.com>
  3911. PR libstdc++/90314
  3912. * include/bits/c++config (_GLIBCXX_NOEXCEPT_IF): Use variadic macro.
  3913. * include/bits/move.h (swap): Remove extra parentheses.
  3914. * include/experimental/bits/lfts_config.h: Improve doc markup.
  3915. * include/experimental/optional: Improve docs.
  3916. (_Has_addressof_mem, _Has_addressof_free, _Has_addressof)
  3917. (__constexpr_addressof): Remove.
  3918. (optional::operator->()): Use std::__addressof().
  3919. * include/std/optional (optional::operator->()): Adjust whitespace.
  3920. * testsuite/experimental/optional/constexpr/observers/2.cc: Check
  3921. that operator-> is still constexpr with overloaded operator&. Change
  3922. to compile-only test.
  3923. * testsuite/experimental/optional/constexpr/observers/3.cc: Change to
  3924. compile-only test.
  3925. * include/bits/shared_ptr.h: Improve docs.
  3926. * include/bits/shared_ptr_atomic.h: Likewise.
  3927. * include/bits/unique_ptr.h: Likewise. Adjust whitespace.
  3928. * include/bits/basic_string.h: Fix iterator/index confusion in
  3929. Doxygen comments.
  3930. * include/bits/range_access.h: Fix Doxygen warnings.
  3931. * include/bits/refwrap.h: Do not document implementation details.
  3932. (ref, cref): Group docs with reference_wrapper.
  3933. * include/std/fstream: Fix Doxygen markup.
  3934. * libsupc++/initializer_list (begin, end): Group docs with
  3935. initializer_list.
  3936. * doc/doxygen/user.cfg.in: Set MARKDOWN_SUPPORT=YES.
  3937. * include/bits/unique_lock.h: Fix/improve doxygen markup.
  3938. * include/std/mutex: Likewise.
  3939. * include/std/shared_mutex: Likewise.
  3940. * include/bits/fs_dir.h: Fix/improve doxygen markup.
  3941. * include/bits/fs_fwd.h: Likewise.
  3942. * include/bits/fs_ops.h: Likewise.
  3943. * include/bits/fs_path.h: Likewise.
  3944. * include/std/filesystem: Likewise.
  3945. * include/experimental/bits/net.h: Fix/improve doxygen markup.
  3946. * include/experimental/buffer: Likewise.
  3947. * include/experimental/executor: Likewise.
  3948. * include/experimental/internet: Likewise.
  3949. * include/experimental/io_context: Likewise.
  3950. * include/experimental/net: Likewise.
  3951. * include/experimental/netfwd: Likewise.
  3952. * include/experimental/socket: Likewise.
  3953. * include/experimental/timer: Likewise.
  3954. * doc/doxygen/doxygroups.cc: Move description of experimental group
  3955. here.
  3956. * include/experimental/algorithm: Add to libfund-ts doc group.
  3957. * include/experimental/any: Likewise. Do not document implementation
  3958. details.
  3959. * include/experimental/array: Add to libfund-ts doc group.
  3960. * include/experimental/bits/lfts_config.h: Define libfund-ts doc group
  3961. for Library Fundamentals.
  3962. * include/experimental/chrono: Add to libfund-ts doc group.
  3963. * include/experimental/deque: Likewise.
  3964. * include/experimental/forward_list: Likewise.
  3965. * include/experimental/functional: Likewise.
  3966. * include/experimental/iterator: Likewise.
  3967. * include/experimental/list: Likewise.
  3968. * include/experimental/map: Likewise.
  3969. * include/experimental/memory: Likewise.
  3970. * include/experimental/memory_resource: Likewise. Improve docs.
  3971. details.
  3972. * include/experimental/numeric: Add to libfund-ts doc group.
  3973. * include/experimental/optional: Likewise.
  3974. * include/experimental/propagate_const: Likewise.
  3975. * include/experimental/random: Likewise.
  3976. * include/experimental/ratio: Likewise.
  3977. * include/experimental/regex: Likewise.
  3978. * include/experimental/set: Likewise.
  3979. * include/experimental/source_location: Likewise.
  3980. * include/experimental/string: Likewise.
  3981. * include/experimental/string_view: Likewise.
  3982. * include/experimental/system_error: Likewise.
  3983. * include/experimental/tuple: Likewise.
  3984. * include/experimental/type_traits: Likewise.
  3985. * include/experimental/unordered_map: Likewise.
  3986. * include/experimental/unordered_set: Likewise.
  3987. * include/experimental/utility: Likewise.
  3988. * include/experimental/vector: Likewise.
  3989. * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.
  3990. * testsuite/experimental/array/neg.cc: Adjust dg-error.
  3991. * testsuite/experimental/propagate_const/assignment/move_neg.cc:
  3992. Likewise.
  3993. * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
  3994. * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
  3995. * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
  3996. * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
  3997. * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
  3998. * include/experimental/bits/fs_dir.h: Fix Doxygen markup.
  3999. * include/experimental/bits/fs_fwd.h: Improve docs.
  4000. * include/experimental/bits/fs_ops.h: fix Doxygen markup.
  4001. * include/experimental/bits/fs_path.h: Likewise.
  4002. (path, filesystem_error, u8path): Improve docs.
  4003. * include/experimental/filesystem: Link to docs for TS.
  4004. * config/allocator/new_allocator_base.h (__allocator_base): Add
  4005. workaround for Doxygen bug #6945.
  4006. * include/std/memory: Improve docs. Define group for pointer safety.
  4007. * include/std/scoped_allocator: Improve docs. Use "undocumented"
  4008. conditional to suppress documentation for implementation details.
  4009. * include/bits/specfun.h: Improve docs.
  4010. * include/tr1/cmath: Likewise. Fix nesting of preprocessor conditions
  4011. and namespaces.
  4012. * doc/doxygen/doxygroups.cc (std::tr2, std::__gnu_cxx): Improve docs.
  4013. (std::experimental): Add docs.
  4014. * doc/doxygen/user.cfg.in (PREDEFINED): Expand macros for __cxx11
  4015. namespace to nothing when generating docs.
  4016. * include/bits/regex_constants.h (std::regex_constants): Improve docs.
  4017. * include/std/chrono (std::chrono): Likewise.
  4018. * include/std/functional (std::placeholders): Likewise.
  4019. * include/std/thread (std::this_thread): Likewise.
  4020. * include/parallel/settings.h: Fix Doxygen markup.
  4021. * include/ext/pb_ds/detail/bin_search_tree_/*_imps.hpp: Do not define
  4022. anything unless PB_DS_CLASS_C_DEC is defined.
  4023. * include/ext/pb_ds/detail/binary_heap_/*_imps.hpp: Likewise.
  4024. * include/ext/pb_ds/detail/binomial_heap_/*_imps.hpp: Likewise.
  4025. * include/ext/pb_ds/detail/binomial_heap_base_/*_imps.hpp: Likewise.
  4026. * include/ext/pb_ds/detail/cc_hash_table_map_/*_imps.hpp: Likewise.
  4027. * include/ext/pb_ds/detail/gp_hash_table_map_/*_imps.hpp: Likewise.
  4028. * include/ext/pb_ds/detail/hash_fn/*_imp.hpp: Likewise.
  4029. * include/ext/pb_ds/detail/left_child_next_sibling_heap_/*_imps.hpp:
  4030. Likewise.
  4031. * include/ext/pb_ds/detail/list_update_map_/*_imps.hpp: Likewise.
  4032. * include/ext/pb_ds/detail/ov_tree_map_/*_imps.hpp: Likewise.
  4033. * include/ext/pb_ds/detail/pairing_heap_/*_imps.hpp: Likewise.
  4034. * include/ext/pb_ds/detail/pat_trie_/*_imps.hpp: Likewise.
  4035. * include/ext/pb_ds/detail/rb_tree_map_/*_imps.hpp: Likewise.
  4036. * include/ext/pb_ds/detail/rc_binomial_heap_/*_imps.hpp: Likewise.
  4037. * include/ext/pb_ds/detail/resize_policy*_imp.hpp: Likewise.
  4038. * include/ext/pb_ds/detail/splay_tree_/*_imps.hpp: Likewise.
  4039. * include/ext/pb_ds/detail/thin_heap_/*_imps.hpp: Likewise.
  4040. * include/ext/pb_ds/detail/trie_policy*_imp.hpp: Likewise.
  4041. * include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp:
  4042. Likewise.
  4043. * include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Likewise.
  4044. * include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp:
  4045. Likewise.
  4046. * include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp:
  4047. Likewise.
  4048. * doc/doxygen/user.cfg.in: Regenerate with Doxygen 1.8.14 and set
  4049. GROUP_NESTED_COMPOUNDS=YES and SORT_BY_SCOPE_NAME=NO. Add various
  4050. _GLIBCXX_xxx macros and __attribute__(X) to PREDEFINED macros that
  4051. Doxygen expands.
  4052. 2019-05-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
  4053. * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
  4054. * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
  4055. * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
  4056. * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
  4057. * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
  4058. * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
  4059. Likewise.
  4060. * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
  4061. * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
  4062. Likewise.
  4063. 2019-05-01 Jonathan Wakely <jwakely@redhat.com>
  4064. PR libstdc++/61761
  4065. * include/std/complex (__complex_proj): Return parameter unchanged.
  4066. [_GLIBCXX_USE_C99_COMPLEX] (__complex_proj): Change overloads for
  4067. floating-point types to take std::complex arguments.
  4068. [_GLIBCXX_USE_C99_MATH_TR1] (__complex_proj): Add overloads for
  4069. floating-point types.
  4070. * testsuite/26_numerics/complex/proj.cc: New test.
  4071. 2019-04-30 Jakub Jelinek <jakub@redhat.com>
  4072. * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Change _Lock_policyE2 exports
  4073. to _Lock_policyE[012].
  4074. * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
  4075. 2019-04-30 Jonathan Wakely <jwakely@redhat.com>
  4076. * testsuite/27_io/filesystem/path/decompose/root_path.cc: Remove
  4077. macros accidentally left in.
  4078. * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Remove
  4079. unnecessary -lstdc++fs option. Fix test for mingw.
  4080. * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
  4081. Fix test for mingw.
  4082. 2019-04-30 Jakub Jelinek <jakub@redhat.com>
  4083. * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
  4084. 2019-04-29 Jonathan Wakely <jwakely@redhat.com>
  4085. * include/bits/stl_algo.h (generate_n): Adjust doxygen comment.
  4086. * include/bits/move.h (swap(T&, T&), swap(T (&)[N], T (&)[N])): Use
  4087. _GLIBCXX_NOEXCEPT_IF to simplify declarations.
  4088. PR libstdc++/71312
  4089. * src/c++11/shared_ptr.cc (get_mutex): Align pool mutexes to 64 bytes.
  4090. * include/bits/stl_bvector.h (vector<bool>::empty()): Add nodiscard
  4091. attribute.
  4092. * include/bits/stl_iterator_base_types.h (_Iter_base): Remove unused
  4093. class template and partial specialization.
  4094. PR libstdc++/87982
  4095. * include/bits/stl_algo.h (generate_n): Convert _Size parameter to
  4096. an integral type.
  4097. * include/bits/stl_algobase.h (__size_to_integer): New overloaded
  4098. functions to convert a value to an integral type.
  4099. (__fill_n_a, __fill_n_a): Assert that __n is already an integral type.
  4100. (fill_n): Convert _Size parameter to an integral type.
  4101. * testsuite/25_algorithms/fill_n/87982.cc: New test.
  4102. * testsuite/25_algorithms/fill_n/87982_neg.cc: New test.
  4103. * testsuite/25_algorithms/fill_n/dr426.cc: New test.
  4104. * testsuite/25_algorithms/generate_n/87982.cc: New test.
  4105. * testsuite/25_algorithms/generate_n/87982_neg.cc: New test.
  4106. * testsuite/25_algorithms/generate_n/dr426.cc: New test.
  4107. 2019-04-28 Nina Dinka Ranns <dinka.ranns@gmail.com>
  4108. Adding noexcept-specification on tuple constructors (LWG 2899)
  4109. * libstdc++-v3/include/std/tuple:
  4110. (tuple()): Add noexcept-specification.
  4111. (tuple(const _Elements&...)): Likewise
  4112. (tuple(_UElements&&...)): Likewise
  4113. (tuple(const tuple<_UElements...>&)): Likewise
  4114. (tuple(tuple<_UElements...>&&)): Likewise
  4115. (tuple(const _T1&, const _T2&)): Likewise
  4116. (tuple(_U1&&, _U2&&)): Likewise
  4117. (tuple(const tuple<_U1, _U2>&): Likewise
  4118. (tuple(tuple<_U1, _U2>&&): Likewise
  4119. (tuple(const pair<_U1, _U2>&): Likewise
  4120. (tuple(pair<_U1, _U2>&&): Likewise
  4121. * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs.cc: New
  4122. 2019-04-27 Marc Glisse <marc.glisse@inria.fr>
  4123. PR libstdc++/87106
  4124. * include/bits/stl_uninitialized.h (__relocate_object_a): Mark the
  4125. arguments with __restrict.
  4126. 2019-04-26 H.J. Lu <hongjiu.lu@intel.com>
  4127. * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
  4128. 2019-04-26 Jonathan Wakely <jwakely@redhat.com>
  4129. * include/experimental/bits/fs_path.h
  4130. (path::_S_convert_loc<_InputIterator>): Create const std::string to
  4131. avoid redundant call to _S_convert_loc with non-const pointers.
  4132. * testsuite/20_util/variant/run.cc: Use a new Hashable type to test
  4133. hashing, because pmr::string depends on _GLIBCXX_USE_CXX11_ABI==1.
  4134. * testsuite/21_strings/basic_string/hash/hash.cc
  4135. [!_GLIBCXX_USE_CXX11_ABI]: Don't test pmr strings.
  4136. * testsuite/21_strings/basic_string/hash/hash_char8_t.cc
  4137. [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
  4138. * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace wildcard that matches
  4139. wstring::_M_replace_dispatch with more specific patterns.
  4140. * include/bits/fs_path.h (path::_S_convert_loc<_InputIterator>):
  4141. Create const std::string to avoid redundant call to _S_convert_loc
  4142. with non-const pointers.
  4143. * include/bits/locale_conv.h (__do_str_codecvt): Use if-constexpr to
  4144. avoid unnecessary basic_string::assign instantiations.
  4145. * include/std/memory (__uses_alloc_args): Add string-literal to
  4146. static_assert, to match the one in __uses_alloc.
  4147. [__cpp_concepts] (_Std_pair): Use C++2a syntax for concept.
  4148. * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: Check
  4149. for recursive uses-allocator construction of nested pairs.
  4150. * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc:: Add
  4151. comment.
  4152. 2019-04-26 Jakub Jelinek <jakub@redhat.com>
  4153. * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
  4154. * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
  4155. * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
  4156. * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
  4157. * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
  4158. * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
  4159. * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
  4160. * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
  4161. * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
  4162. * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
  4163. * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
  4164. 2019-04-25 Jonathan Wakely <jwakely@redhat.com>
  4165. PR libstdc++/90239
  4166. * doc/xml/manual/status_cxx2020.xml: Amend P0591R4 status.
  4167. * include/std/scoped_allocator [__cplusplus > 201703L]
  4168. (scoped_allocator_adaptor::construct): Define in terms of
  4169. uses_allocator_construction_args, as per P0591R4.
  4170. * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc: New test.
  4171. * testsuite/util/testsuite_allocator.h: Remove name of unused
  4172. parameter.
  4173. 2019-04-24 Jonathan Wakely <jwakely@redhat.com>
  4174. * doc/xml/manual/status_cxx2017.xml: Document P0024R2 status.
  4175. * doc/html/*: Regenerate.
  4176. * include/bits/fs_path.h (operator<, operator<=, operator>)
  4177. (operator>=, operator==, operator!=): Make hidden friends, as per
  4178. LWG 3065.
  4179. * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Fix
  4180. string type in test.
  4181. * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
  4182. * include/std/any (any::any(ValueType&&)): Use __and_v.
  4183. * include/std/numeric (midpoint(T, T, T), midpoint(T*, T*, T*)):
  4184. Likewise.
  4185. * include/std/tuple (apply): Use remove_reference_t instead of decay_t
  4186. as per P0777R1.
  4187. * include/std/type_traits (__result_of_memfun): Use remove_reference
  4188. instead of __remove_cvref_t and remove redundant is_same check.
  4189. (__inv_unwrap): Use __remove_cvref_t instead of decay_t.
  4190. * include/experimental/string_view (basic_string_view::pointer)
  4191. (basic_string_view::reference): Fix to refer to non-const value_type.
  4192. * include/bits/basic_string.h (basic_string): Use __sv_check and
  4193. __sv_limit instead of basic_string_view::_M_check and
  4194. basic_string_view::_M_limit.
  4195. * include/std/string_view (__sv_check, __sv_limit): New
  4196. helper functions to replace basic_string_view::_M_check and
  4197. basic_string_view::_M_limit.
  4198. (basic_string_view): Add static assertions to enforce ill-formed
  4199. requirement for traits_type::char_type from P1148R0, and to enforce
  4200. required properties of char-like types.
  4201. (basic_string_view::pointer, basic_string_view::reference): Fix to
  4202. refer to non-const value_type.
  4203. (basic_string_view::operator[], basic_string_view::at)
  4204. (basic_string_view::front, basic_string_view::back)
  4205. (basic_string_view::data): Use const_reference and const_pointer
  4206. typedefs for return types.
  4207. (basic_string_view::_M_check, basic_string_view::_M_limit): Remove.
  4208. (hash<wstring_view>): Fix argument_type typedef.
  4209. * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
  4210. char/1.cc: Fix expected return type of basic_string_view::data().
  4211. * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
  4212. wchar_t/1.cc: Likewise.
  4213. * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
  4214. char/1.cc: Likewise.
  4215. * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
  4216. wchar_t/1.cc: Likewise.
  4217. * testsuite/21_strings/basic_string_view/requirements/traits_neg.cc:
  4218. New test.
  4219. * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
  4220. Check reference and pointer typedefs.
  4221. * testsuite/experimental/string_view/requirements/typedefs.cc:
  4222. Likewise.
  4223. * testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc:
  4224. Fix expected return type of basic_string_view::data().
  4225. * testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/
  4226. 1.cc: Likewise.
  4227. * testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc:
  4228. Likewise.
  4229. * testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/
  4230. 1.cc: Likewise.
  4231. PR libstdc++/90220
  4232. * include/std/any (__any_caster): Use remove_cv_t instead of decay_t.
  4233. Avoid a runtime check for types that can never be stored in std::any.
  4234. * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
  4235. array types.
  4236. PR libstdc++/90220 (partial)
  4237. * include/std/any (any_cast<T>(any*), any_cast<T>(const any*)): Do
  4238. not attempt ill-formed static_cast to pointers to non-object types.
  4239. * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
  4240. function types.
  4241. * testsuite/20_util/variant/run.cc: Catch exception by reference to
  4242. prevent -Wcatch-value warning.
  4243. * include/std/variant (__variant_construct): Use template parameter
  4244. type instead of equivalent decltype-specifier.
  4245. (_Move_ctor_base<false, Types...>::_Move_ctor_base(_Move_ctor_base&&)):
  4246. Replace forward with move.
  4247. (_Move_ctor_base<false, Types...>::_M_destructive_move)
  4248. (_Move_ctor_base<false, Types...>::_M_destructive_copy)
  4249. (_Move_ctor_base<true, Types...>::_M_destructive_move)
  4250. (_Move_ctor_base<true, Types...>::_M_destructive_copy): Only set the
  4251. index after construction succeeds.
  4252. (_Copy_assign_base<false, Types...>::operator=): Remove redundant
  4253. if-constexpr checks that are always true. Use __remove_cvref_t instead
  4254. of remove_reference so that is_nothrow_move_constructible check
  4255. doesn't use a const rvalue parameter. In the potentially-throwing case
  4256. construct a temporary and move assign it, as per LWG 2904.
  4257. (_Move_assign_base<false, Types...>::operator=): Remove redundant
  4258. if-constexpr checks that are always true. Use emplace as per LWG 2904.
  4259. (variant::operator=(T&&)): Only use emplace conditionally, otherwise
  4260. construct a temporary and move assign from it, as per LWG 2904.
  4261. * testsuite/20_util/variant/exception_safety.cc: Check that
  4262. assignment operators have strong exception safety guarantee.
  4263. 2019-04-23 Thomas Rodgers <trodgers@redhat.com>
  4264. Document PSTL linker flags
  4265. * doc/xml/manual/using.xml: Add PSTL linker flags to table 3.1.
  4266. 2019-04-23 Jonathan Wakely <jwakely@redhat.com>
  4267. * include/std/variant (__detail::__variant::_Traits): Make
  4268. _S_trivial_copy_assign depend on _S_trivial_copy_ctor and make
  4269. _S_trivial_move_assign depend on _S_trivial_move_ctor, as per
  4270. P0602R4.
  4271. (__detail::__variant::_Copy_assign_alias): Only depend on
  4272. _S_trivial_copy_assign, which subsumes _S_trivial_copy_ctor now.
  4273. * testsuite/20_util/variant/compile.cc: Correct checks for trivial
  4274. move assignment operators.
  4275. PR libstdc++/90165
  4276. * include/std/variant (variant::__not_self): New helper for the
  4277. is_same_v<remove_cvref_t<T>, variant>==false constraints.
  4278. (variant::__to_type_impl): Remove.
  4279. (variant::__to_type): Add default argument to check pack size, instead
  4280. of using __to_type_impl.
  4281. (variant::__accepted_type): Add default argument using __not_self.
  4282. (variant::__is_in_place_tag, variant::__not_in_place_tag): New helpers
  4283. for variant(T&&) constructor constraint.
  4284. (variant::variant(T&&)): Use __not_in_place_tag in constraints.
  4285. Extract __accepted_type into a named template parameter for reuse in
  4286. other constraints and in the exception specification.
  4287. (variant::variant(in_place_type_t<T>, Args&&...))
  4288. (variant::variant(in_place_type_t<T>, initializer_list<U>, Args&&...))
  4289. (variant::variant(in_place_index_t<T>, Args&&...))
  4290. (variant::variant(in_place_index_t<T>, initializer_list<U>, Args&&...))
  4291. (variant::operator=T&&)): Remove redundant && from trait arguments.
  4292. * testsuite/20_util/variant/compile.cc: Check variant(T&&) constructor
  4293. isn't used for in_place_type or in_place_index arguments.
  4294. * include/std/type_traits (unwrap_reference_t): Define for C++2a.
  4295. (unwrap_ref_decay): Remove inheritance from unwrap_reference.
  4296. * testsuite/20_util/unwrap_reference/1.cc: Adjust test to use alias.
  4297. 2019-04-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
  4298. Bernd Edlinger <bernd.edlinger@hotmail.de>
  4299. Jakub Jelinek <jakub@redhat.com>
  4300. PR target/89093
  4301. * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
  4302. general-regs-only target attribute for ARM.
  4303. 2019-04-23 Jonathan Wakely <jwakely@redhat.com>
  4304. PR libstdc++/87431
  4305. * include/bits/basic_string.h (_Never_valueless_alt): Make partial
  4306. specialization also depend on is_nothrow_move_constructible.
  4307. * include/std/variant (__detail::__variant::__never_valueless()):
  4308. Only true if the variant would have a move assignment operator.
  4309. (__detail::__variant::_Variant_storage<false, T...>::_M_valid()):
  4310. Check __never_valueless<T...>().
  4311. (variant::emplace): Only perform non-throwing move assignments
  4312. for never-valueless alternatives if the variant has a move assignment
  4313. operator.
  4314. * testsuite/20_util/variant/compile.cc: Check that never-valueless
  4315. types can be emplaced into non-assignable variants.
  4316. * testsuite/20_util/variant/run.cc: Check that never-valueless types
  4317. don't get copied when emplaced into non-assignable variants.
  4318. * include/std/variant (__detail::__variant::__ref_cast): Remove
  4319. unused function.
  4320. (__detail::__variant::_Uninitialized::_M_get)
  4321. (__detail::__variant::__get)
  4322. (__gen_vtable_impl::__element_by_index_or_cookie): Add noexcept.
  4323. 2019-04-21 Iain Sandoe <iain@sandoe.co.uk>
  4324. * testsuite/17_intro/headers/c++1998/charset.cc: Skip for Darwin8
  4325. to Darwin10.
  4326. * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
  4327. * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
  4328. * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
  4329. * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
  4330. 2019-04-20 Thomas Rodgers <trodgers@redhat.com>
  4331. Delegate PSTL configuration to pstl/pstl_config.h
  4332. * include/bits/c++config: Remove explicit PSTL configuration
  4333. macros and use definitions from <pstl/pstl_config.h>.
  4334. 2019-04-20 Thomas Rodgers <trodgers@redhat.com>
  4335. Cleanup algorithm implementations
  4336. * include/pstl/glue_algorithm_impl.h (stable_sort): Forward
  4337. execution policy.
  4338. (mismatch): Forward execution policy.
  4339. (equal): Qualify call to std::equal().
  4340. (partial_sort): Forward execution policy.
  4341. (inplace_merge): Forward execution policy.
  4342. 2019-04-19 Thomas Rodgers <trodgers@redhat.com>
  4343. Improve implementation of parallel equal()
  4344. * include/pstl/algorithm_impl.h
  4345. (__internal::__brick_equal): use "4 iterator" version of
  4346. std::equal().
  4347. (__internal::__brick_equal): use simd for random access
  4348. iterators on unsequenced execution policies.
  4349. (__internal::__pattern_equal): add "4 iterator" version
  4350. (__internal::__pattern_equal): dispatch to simd __brick_equal
  4351. for vector-only execution policies.
  4352. (__internal::__pattern_equal): dispatch to __parallel_or for
  4353. parallel execution policies.
  4354. * include/pstl/glue_algorithm_impl.h
  4355. (std::equal): dispatch to "4 iterator" version of
  4356. __internal::__pattern_equal().
  4357. 2019-04-17 Jonathan Wakely <jwakely@redhat.com>
  4358. PR libstdc++/90105
  4359. * include/bits/forward_list.h (operator==): Do not use operator!= to
  4360. compare elements.
  4361. (forward_list<T, A>::sort(Comp)): When elements are equal take the one
  4362. earlier in the list, so that sort is stable.
  4363. * testsuite/23_containers/forward_list/operations/90105.cc: New test.
  4364. * testsuite/23_containers/forward_list/comparable.cc: Test with
  4365. types that meet the minimum EqualityComparable and LessThanComparable
  4366. requirements. Remove irrelevant comment.
  4367. * include/std/variant (__detail::__variant::_Traits::_S_copy_assign):
  4368. Do not depend on whether all alternative types are move constructible.
  4369. (__detail::__variant::_Copy_assign_base::operator=): Remove cv-quals
  4370. from the operand when deciding whether to perform the assignment.
  4371. * testsuite/20_util/variant/compile.cc (DeletedMoves): Define type
  4372. with deleted move constructor and deleted move assignment operator.
  4373. (default_ctor, copy_ctor, move_ctor, copy_assign, move_assign): Check
  4374. behaviour of variants with DeletedMoves as an alternative.
  4375. * testsuite/20_util/variant/run.cc (DeletedMoves): Define same type.
  4376. (move_ctor, move_assign): Check that moving a variant with a
  4377. DeletedMoves alternative falls back to copying instead of moving.
  4378. * testsuite/20_util/variant/compile.cc: Remove empty string literals
  4379. from static_assert declarations.
  4380. * testsuite/20_util/variant/compile.cc (MoveCtorOnly): Fix type to
  4381. actually match its name.
  4382. (MoveCtorAndSwapOnly): Define new type that adds swap to MoveCtorOnly.
  4383. (test_swap()): Fix result for MoveCtorOnly and check
  4384. MoveCtorAndSwapOnly.
  4385. * include/std/optional (optional::value_or(U&&) &&): Add missing
  4386. constexpr specifier.
  4387. * testsuite/20_util/optional/constexpr/observers/4.cc: Check value_or
  4388. for disengaged optionals and rvalue optionals.
  4389. * testsuite/20_util/optional/observers/4.cc: Likewise.
  4390. 2019-04-12 Thomas Rodgers <trodgers@redhat.com>
  4391. * include/pstl/algorithm_impl.h: Uglify identfiers.
  4392. * include/pstl/numeric_impl.h: Uglify identfiers.
  4393. * include/pstl/parallel_backend_tbb.h: Uglify identfiers.
  4394. 2019-04-11 Thomas Rodgers <trodgers@redhat.com>
  4395. * include/bits/c++config:
  4396. Add definition for __PSTL_ASSERT.
  4397. Add definition for __PSTL_ASSERT_MSG.
  4398. * include/pstl/algorithm_impl.h: Replace use of assert().
  4399. * include/pstl/numeric_impl.h: Replace use of assert().
  4400. * include/pstl/parallel_backend_tbb.h:
  4401. Replace use of assert().
  4402. Replace use of __TBB_ASSERT().
  4403. * include/pstl/parallel_backend_utils.h: Replace use of assert().
  4404. 2019-04-11 Jonathan Wakely <jwakely@redhat.com>
  4405. PR libstdc++/90046
  4406. * src/c++17/memory_resource.cc
  4407. (monotonic_buffer_resource::_Chunk::allocate): Increase alignment if
  4408. needed to allow placing a _Chunk at the end of the buffer.
  4409. (monotonic_buffer_resource::_M_new_buffer): Remove static_assert.
  4410. 2019-04-10 Jonathan Wakely <jwakely@redhat.com>
  4411. * doc/xml/faq.xml: Add information about emergency EH pool.
  4412. * doc/xml/manual/debug.xml: Update list of memory debugging tools.
  4413. Move outdated information on mt_allocator to a separate section.
  4414. * doc/xml/manual/evolution.xml: Clarify that GLIBCXX_FORCE_NEW
  4415. doesn't affect the default allocator.
  4416. * testsuite/lib/libstdc++.exp (check_v3_target_parallel_mode): Fix
  4417. typo.
  4418. PR libstdc++/89851
  4419. * testsuite/20_util/variant/89851.cc: New test.
  4420. 2019-04-09 Jonathan Wakely <jwakely@redhat.com>
  4421. * include/std/variant: Adjust whitespace. Add comments.
  4422. (_Multi_array): Leave primary template undefined.
  4423. (_Multi_array<_Tp>): Define partial specialization for base case of
  4424. recursion.
  4425. (__gen_vtable_impl, __gen_vtable): Remove redundant && from type
  4426. which is always a reference.
  4427. (__gen_vtable::_S_apply()): Remove function, inline body into
  4428. default member initializer.
  4429. * testsuite/20_util/variant/visit.cc: Test with noncopyable types.
  4430. * include/std/variant (__variant_idx_cookie): Add member type.
  4431. (__visitor_result_type): Remove.
  4432. (__do_visit): Use invoke_result instead of __visitor_result_type.
  4433. * testsuite/20_util/variant/visit.cc: New test.
  4434. PR libstdc++/90008
  4435. * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Remove
  4436. unused capture.
  4437. * testsuite/20_util/variant/90008.cc: New test.
  4438. 2019-04-09 Thomas Rodgers <trodgers@redhat.com>
  4439. * include/pstl/algorithm_impl.h: Add namespace qualification.
  4440. * include/pstl/execution_defs.h: Add namespace qualification.
  4441. * include/pstl/execution_impl.h: Add namespace qualification.
  4442. * include/pstl/numeric_impl.h: Add namespace qualification.
  4443. * include/pstl/parallel_backend_tbb.h: Add namespace qualification.
  4444. * include/pstl/unseq_backend_simd.h: Add namespace qualification.
  4445. * include/pstl/parallel_backend_utils.h: Include <cassert>.
  4446. 2019-04-08 Ville Voutilainen <ville.voutilainen@gmail.com>
  4447. Fix visit<R> for variant.
  4448. * include/std/variant (__do_visit): Add a template parameter
  4449. for enforcing same return types for visit.
  4450. (__gen_vtable_impl): Likewise.
  4451. (_S_apply_single_alt): Adjust.
  4452. (__visit_invoke_impl): New. Handle casting to void.
  4453. (__do_visit_invoke): New. Enforces same return types.
  4454. (__do_visit_invoke_r): New. Converts return types.
  4455. (__visit_invoke): Adjust.
  4456. (__gen_vtable): Add a template parameter for enforcing
  4457. same return types for visit.
  4458. * testsuite/20_util/variant/visit_r.cc: Add a test for a visitor with
  4459. different return types.
  4460. * testsuite/20_util/variant/visit_neg.cc: New. Ensures that
  4461. visitors with different return types don't accidentally
  4462. compile with regular visitation.
  4463. 2019-04-08 Christophe Lyon <christophe.lyon@linaro.org>
  4464. * testsuite/27_io/filesystem/iterators/caching.cc: Add
  4465. dg-require-filesystem-ts.
  4466. 2019-04-05 Jonathan Wakely <jwakely@redhat.com>
  4467. * doc/xml/manual/status_cxx2020.xml: Update status.
  4468. * include/std/variant (visit<R>): Define for C++2a (P0655R1).
  4469. * testsuite/20_util/variant/visit_r.cc: New test.
  4470. * include/bits/fs_dir.h (directory_iterator::operator*)
  4471. (directory_iterator::operator->): Add noexcept.
  4472. (operator==, operator!=): Replace namespace-scope equality operators
  4473. for directory iterators with hidden friends.
  4474. PR libstdc++/89986
  4475. * config/abi/pre/gnu.ver: Add missing exports.
  4476. * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
  4477. increment member.
  4478. * config/abi/pre/gnu.ver: Export new symbols.
  4479. * include/bits/fs_dir.h (recursive_directory_iterator::options())
  4480. (recursive_directory_iterator::recursion_pending())
  4481. (recursive_directory_iterator::disable_recursion_pending()): Remove
  4482. inline definitions. Make noexcept.
  4483. (recursive_directory_iterator::depth())
  4484. (recursive_directory_iterator::operator*())
  4485. (recursive_directory_iterator::operator->()): Make noexcept.
  4486. (recursive_directory_iterator::_M_options)
  4487. (recursive_directory_iterator::_M_pending): Remove data members.
  4488. * src/c++17/fs_path.cc (_Dir_stack): Add constructor and data members.
  4489. (recursive_directory_iterator::recursive_directory_iterator): Remove
  4490. ctor-initializer. Use new constructor for _Dir_stack.
  4491. (recursive_directory_iterator::options())
  4492. (recursive_directory_iterator::recursion_pending())
  4493. (recursive_directory_iterator::disable_recursion_pending()): Add
  4494. non-inline definitions.
  4495. (recursive_directory_iterator::depth()): Make noexcept.
  4496. (recursive_directory_iterator::increment(error_code&))
  4497. (recursive_directory_iterator::pop(error_code&)): Adjust to new
  4498. location of options and recursion_pending members.
  4499. * testsuite/27_io/filesystem/iterators/recursion_pending.cc: New test.
  4500. * testsuite/util/testsuite_fs.h (__gnu_test::scoped_file): Add
  4501. user-declared move constructor and assignment operator, to make the
  4502. type move-only.
  4503. * src/c++17/fs_dir.cc (_Dir::advance(bool, error_code&)): Handle
  4504. d_type == DT_UNKNOWN immediately.
  4505. (_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown
  4506. handling here.
  4507. * testsuite/27_io/filesystem/iterators/caching.cc: New test.
  4508. * include/bits/fs_path.h (path::operator=(path&&)): Check for self
  4509. assignment.
  4510. * src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
  4511. * testsuite/27_io/filesystem/path/assign/copy.cc: Test self
  4512. assignment.
  4513. PR libstdc++/87431 (again)
  4514. * include/bits/basic_string.h (__variant::_Never_valueless_alt):
  4515. Define partial specialization for basic_string.
  4516. * include/bits/shared_ptr.h (_Never_valueless_alt): Likewise for
  4517. shared_ptr and weak_ptr.
  4518. * include/bits/std_function.h (_Never_valueless_alt): Likewise for
  4519. function.
  4520. * include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
  4521. vector.
  4522. * include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
  4523. unique_ptr.
  4524. * include/debug/vector (_Never_valueless_alt): Likewise for debug
  4525. vector.
  4526. * include/std/any (_Never_valueless_alt): Define explicit
  4527. specialization for any.
  4528. * include/std/variant (_Never_valueless_alt): Define primary template.
  4529. (__never_valueless): Use _Never_valueless_alt instead of
  4530. is_trivially_copyable.
  4531. (variant::emplace<N>(Args&&...)): Add special case for non-throwing
  4532. initializations to avoid try-catch overhead. Add special case for
  4533. scalars produced by potentially-throwing conversions. Use
  4534. _Never_valueless_alt instead of is_trivially_copyable for the
  4535. remaining strong exception-safety cases.
  4536. (variant::emplace<N>(initializer_list<U>, Args&&...)): Likewise.
  4537. * testsuite/20_util/variant/87431.cc: Run both test functions.
  4538. * testsuite/20_util/variant/exception_safety.cc: New test.
  4539. * testsuite/20_util/variant/run.cc: Use pmr::string instead of string,
  4540. so the variant becomes valueless.
  4541. 2019-04-03 Jonathan Wakely <jwakely@redhat.com>
  4542. PR libstdc++/85184
  4543. * include/std/variant (_Copy_assign_base, _Move_assign_base, variant):
  4544. Remove assertions.
  4545. (variant::emplace<_Tp>): Return result of emplace<N> directly.
  4546. * include/std/string (__hash_string_base): New class template defining
  4547. operator() for hashing strings.
  4548. (hash<pmr::string>, hash<pmr::u8string>, hash<pmr::u16string>)
  4549. (hash<pmr::u32string>, hash<pmr::wstring>): Define for C++17.
  4550. * testsuite/21_strings/basic_string/hash/hash.cc: New test.
  4551. * testsuite/21_strings/basic_string/hash/hash_char8_t.cc: New test.
  4552. 2019-04-01 Ville Voutilainen <ville.voutilainen@gmail.com>
  4553. Use single-visitation in variant assignment and swap and relops.
  4554. Also use indices instead of types when checking whether
  4555. variants hold the same thing.
  4556. * include/std/variant (__do_visit): Add a template parameter
  4557. for index visitation, invoke with indices if index visitation
  4558. is used.
  4559. (__variant_idx_cookie): New.
  4560. (__visit_with_index): Likewise.
  4561. (_Copy_assign_base::operator=): Do single-visitation with
  4562. an index visitor.
  4563. (_Move_assign_base::operator=): Likewise.
  4564. (_Extra_visit_slot_needed): Adjust.
  4565. (__visit_invoke): Call with indices if it's an index visitor.
  4566. (relops): Do single-visitation with an index visitor.
  4567. (swap): Likewise.
  4568. (__visitor_result_type): New.
  4569. 2019-03-30 Eric Botcazou <ebotcazou@adacore.com>
  4570. * src/c++17/fs_ops.cc (fs::permissions): Use std::errc::not_supported.
  4571. 2019-03-28 Ville Voutilainen <ville.voutilainen@gmail.com>
  4572. Don't revisit a variant we are already visiting.
  4573. * include/std/variant (__variant_construct_single): New.
  4574. (__variant_construct): Use it.
  4575. (_M_destructive_move): Likewise.
  4576. (_M_destructive_copy): Likewise.
  4577. (_Copy_assign_base::operator=): Adjust.
  4578. (_Move_assign_base::operator=): Likewise.
  4579. (swap): Likewise.
  4580. 2019-03-26 Jonathan Wakely <jwakely@redhat.com>
  4581. PR libstdc++/85965
  4582. * include/bits/hashtable.h (_Hashtable): Move static assertions to
  4583. destructor so they are not evaluated until the _Key type is complete.
  4584. * include/bits/stl_tree.h (_Rb_tree): Likewise.
  4585. * testsuite/23_containers/set/85965.cc: New test.
  4586. * testsuite/23_containers/unordered_set/85965.cc: New test.
  4587. * testsuite/23_containers/map/48101_neg.cc: Replace "here" errors
  4588. with regexp matching the corresponding _Rb_tree specialization.
  4589. * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
  4590. * testsuite/23_containers/multiset/48101_neg.cc: Remove "here" error.
  4591. * testsuite/23_containers/set/48101_neg.cc: Likewise.
  4592. * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
  4593. * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
  4594. * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
  4595. * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
  4596. 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
  4597. PR libstdc++/89825
  4598. Fix based on a suggestion by Antony Polukhin.
  4599. * include/std/variant (__never_valueless): New.
  4600. (_M_valid): Use it.
  4601. (_Extra_visit_slot_needed): New.
  4602. (_Multi_array): Use it.
  4603. (_S_apply_all_alts): Likewise.
  4604. 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
  4605. PR libstdc++/89824
  4606. Fix based on a suggestion by Antony Polukhin.
  4607. * include/std/variant (__gen_vtable): Don't reserve an
  4608. additional table slot, _Multi_array already does that.
  4609. 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
  4610. PR libstdc++/89816
  4611. Fix based on a suggestion by Antony Polukhin.
  4612. * include/std/variant (__variant_construct): Capture a pointer
  4613. to the storage and visit just one variant.
  4614. 2019-03-22 Jonathan Wakely <jwakely@redhat.com>
  4615. * doc/xml/manual/backwards_compatibility.xml: Remove link to
  4616. Doxygen-generated pages with unstable URL.
  4617. * doc/xml/manual/concurrency_extensions.xml: Likewise.
  4618. * doc/xml/manual/extensions.xml: Likewise.
  4619. * doc/xml/manual/parallel_mode.xml: Likewise.
  4620. * doc/xml/manual/support.xml: Likewise.
  4621. * include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
  4622. avoid -Wconversion warnings.
  4623. 2019-03-21 Thomas Rodgers <trodgers@redhat.com>
  4624. * include/Makefile.am (std_header): Add ${std_srcdir}/execution.
  4625. (pstl_srcdir, pstl_builddir, pstl_headers): New variables.
  4626. (allstamped): Add stamp-pstl.
  4627. (install-headers): Add ptsl_builddir.
  4628. * include/Makefile.in: Regenerate.
  4629. * include/bits/c++config: Add pstl configuration.
  4630. * include/pstl/LICENSE.txt: New file.
  4631. * include/pstl/algorithm_fwd.h: New file.
  4632. * include/pstl/algorithm_impl.h: New file.
  4633. * include/pstl/execution_defs.h: New file.
  4634. * include/pstl/execution_impl.h: New file.
  4635. * include/pstl/glue_algorithm_defs.h: New file.
  4636. * include/pstl/glue_algorithm_impl.h: New file.
  4637. * include/pstl/glue_execution_defs.h: New file.
  4638. * include/pstl/glue_memory_defs.h: New file.
  4639. * include/pstl/glue_memory_impl.h: New file.
  4640. * include/pstl/glue_numeric_defs.h: New file.
  4641. * include/pstl/glue_numeric_impl.h: New file.
  4642. * include/pstl/memory_impl.h: New file.
  4643. * include/pstl/numeric_fwd.h: New file.
  4644. * include/pstl/numeric_impl.h: New file.
  4645. * include/pstl/parallel_backend.h: New file.
  4646. * include/pstl/parallel_backend_tbb.h: New file.
  4647. * include/pstl/parallel_backend_utils.h: New file.
  4648. * include/pstl/parallel_impl.h: New file.
  4649. * include/pstl/pstl_config.h: New file.
  4650. * include/pstl/unseq_backend_simd.h: New file.
  4651. * include/pstl/utils.h: New file.
  4652. * include/std/algorithm: Include parallel algorithm implementations.
  4653. * include/std/execution: New file.
  4654. * include/std/memory: Include parallel algorithm implementations.
  4655. * include/std/numeric: Include parallel algorithm implementations.
  4656. * include/std/version: Add parallel algorithms feature test macro.
  4657. * testsuite/util/pstl/pstl_test_config.h: New file.
  4658. * testsuite/util/pstl/test_utils.h: New file.
  4659. * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
  4660. * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
  4661. * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
  4662. * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
  4663. * testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
  4664. * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
  4665. * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
  4666. * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
  4667. * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
  4668. * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
  4669. * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
  4670. * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
  4671. * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
  4672. * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
  4673. * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
  4674. * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
  4675. * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
  4676. * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
  4677. * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
  4678. * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
  4679. * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
  4680. * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
  4681. * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
  4682. * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
  4683. * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
  4684. * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
  4685. * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
  4686. * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
  4687. * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
  4688. * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
  4689. * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
  4690. * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
  4691. * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
  4692. * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
  4693. * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
  4694. * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
  4695. * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
  4696. * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
  4697. * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
  4698. * testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
  4699. * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
  4700. * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
  4701. * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
  4702. * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
  4703. * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
  4704. * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
  4705. * testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
  4706. * testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
  4707. * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
  4708. * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
  4709. * testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
  4710. * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
  4711. * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
  4712. * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
  4713. * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
  4714. * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
  4715. * testsuite/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
  4716. * testsuite/testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
  4717. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
  4718. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
  4719. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
  4720. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
  4721. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
  4722. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
  4723. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
  4724. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
  4725. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
  4726. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
  4727. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
  4728. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
  4729. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
  4730. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
  4731. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
  4732. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
  4733. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
  4734. * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
  4735. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
  4736. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
  4737. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
  4738. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
  4739. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
  4740. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
  4741. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
  4742. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
  4743. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
  4744. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
  4745. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
  4746. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
  4747. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
  4748. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
  4749. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
  4750. * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
  4751. * testsuite/testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
  4752. * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
  4753. * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
  4754. * testsuite/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
  4755. * testsuite/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
  4756. * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
  4757. * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
  4758. * testsuite/testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
  4759. * testsuite/testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
  4760. * testsuite/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
  4761. * testsuite/testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
  4762. * testsuite/testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
  4763. * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
  4764. * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
  4765. 2019-03-21 Jonathan Wakely <jwakely@redhat.com>
  4766. * include/c_compatibility/math.h [!__STDCPP_WANT_MATH_SPEC_FUNCS__]
  4767. (assoc_laguerre, assoc_laguerref, assoc_laguerrel, assoc_legendre)
  4768. (assoc_legendref, assoc_legendrel, beta, betaf, betal, comp_ellint_1)
  4769. (comp_ellint_1f, comp_ellint_1l, comp_ellint_2, comp_ellint_2f)
  4770. (comp_ellint_2l, comp_ellint_3, comp_ellint_3f, comp_ellint_3l)
  4771. (cyl_bessel_i, cyl_bessel_if, cyl_bessel_il, cyl_bessel_j)
  4772. (cyl_bessel_jf, cyl_bessel_jl, cyl_bessel_k, cyl_bessel_kf)
  4773. (cyl_bessel_kl, cyl_neumann, cyl_neumannf, cyl_neumannl, ellint_1)
  4774. (ellint_1f, ellint_1l, ellint_2, ellint_2f, ellint_2l, ellint_3)
  4775. (ellint_3f, ellint_3l, expint, expintf, expintl, hermite, hermitef)
  4776. (hermitel, laguerre, laguerref, laguerrel, legendre, legendref)
  4777. (legendrel, riemann_zeta, riemann_zetaf, riemann_zetal, sph_bessel)
  4778. (sph_besself, sph_bessell, sph_legendre, sph_legendref, sph_legendrel)
  4779. (sph_neumann, sph_neumannf, sph_neumannl): Only add using-declarations
  4780. when the special functions IS is enabled, not for C++17.
  4781. * testsuite/26_numerics/headers/cmath/functions_global_c++17.cc:
  4782. Replace with ...
  4783. * testsuite/26_numerics/headers/cmath/functions_global.cc: New test,
  4784. without checks for special functions in C++17.
  4785. * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
  4786. New test.
  4787. PR libstdc++/88066
  4788. * include/backward/hash_map: Use <> for includes not "".
  4789. * include/backward/hash_set: Likewise.
  4790. * include/backward/strstream: Likewise.
  4791. * include/tr1/bessel_function.tcc: Likewise.
  4792. * include/tr1/exp_integral.tcc: Likewise.
  4793. * include/tr1/legendre_function.tcc: Likewise.
  4794. * include/tr1/modified_bessel_func.tcc: Likewise.
  4795. * include/tr1/riemann_zeta.tcc: Likewise.
  4796. 2019-03-19 Jonathan Wakely <jwakely@redhat.com>
  4797. * doc/xml/manual/allocator.xml: Link to table documenting evolution
  4798. of extension allocators.
  4799. * doc/xml/manual/evolution.xml: Use angle brackets for header names.
  4800. Document new headers in 7.2, 8.1 and 9.1 releases.
  4801. * doc/xml/manual/using.xml: Adjust link target for new_allocator.
  4802. * doc/html/*: Regenerate.
  4803. 2019-03-12 John David Anglin <dave.anglin@bell.net>
  4804. PR libstdc++/89461
  4805. * testsuite/lib/libstdc++.exp: Locate libatomic.
  4806. * testsuite/lib/dg-options.exp (add_options_for_libatomic): New.
  4807. * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Add
  4808. libatomic options.
  4809. * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
  4810. * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
  4811. * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
  4812. * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
  4813. 2019-03-11 Jonathan Wakely <jwakely@redhat.com>
  4814. PR libstdc++/89460
  4815. * configure.ac: Check for sockatmark.
  4816. * crossconfig.m4: Check for sockatmark.
  4817. * config.h.in: Regenerate.
  4818. * configure: Regenerate.
  4819. * include/experimental/internet (address_v4::_S_hton): Rename
  4820. overloaded functions to _S_hton_16 and _S_ntoh_16.
  4821. (address_v4::_S_ntoh): Rename to _S_ntoh_16 and _S_ntoh_32.
  4822. (basic_endpoint): Adjust calls to _S_hton and _S_ntoh.
  4823. * include/experimental/socket (basic_socket::at_mark): Check
  4824. _GLIBCXX_HAVE_SOCKATMARK.
  4825. * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Use
  4826. const variables instead of macros.
  4827. PR libstdc++/89629
  4828. * libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes):
  4829. Use correct type for len_aligned.
  4830. * testsuite/20_util/hash/89629.cc: New test.
  4831. 2019-03-11 Jakub Jelinek <jakub@redhat.com>
  4832. PR libstdc++/89641
  4833. * include/std/atomic (atomic<T>::store, atomic<T>::load,
  4834. atomic<T>::exchange, atomic<T>::compare_exchange_weak,
  4835. atomic<T>::compare_exchange_strong): Cast __m or __s and __f to int.
  4836. * include/bits/atomic_base.h (__atomic_base<T>::operator++,
  4837. __atomic_base<T>::operator--, __atomic_base<T>::operator+=,
  4838. __atomic_base<T>::operator-=, __atomic_base<T>::operator&=,
  4839. __atomic_base<T>::operator|=, __atomic_base<T>::operator^=,
  4840. __atomic_base<T*>::operator++, __atomic_base<T*>::operator--,
  4841. __atomic_base<T*>::operator+=, __atomic_base<T*>::operator-=): Cast
  4842. memory_order_seq_cst to int.
  4843. 2019-03-08 Jonathan Wakely <jwakely@redhat.com>
  4844. * doc/xml/manual/using.xml: Use link element instead of xref.
  4845. * doc/html/*: Regenerate.
  4846. * include/bits/fs_path.h (path::format): Add fixed underlying type.
  4847. 2019-03-08 François Dumont <fdumont@gcc.gnu.org>
  4848. PR libstdc++/89477
  4849. * include/debug/map.h (map): Use _RequireNotAllocator to constrain
  4850. parameters in deduction guides.
  4851. * include/debug/multimap.h (multimap): Likewise.
  4852. * include/debug/set.h (multimap): Likewise.
  4853. * include/debug/multiset.h (multimap): Likewise.
  4854. * include/debug/unordered_map (unordered_map): Likewise.
  4855. (unordered_multimap): Likewise.
  4856. * include/debug/unordered_set (unordered_set): Likewise.
  4857. (unordered_multiset): Likewise.
  4858. PR libstdc++/89608
  4859. * include/debug/unordered_map (unordered_map<>::_M_check_rehashed):
  4860. Invalidate all iterators in case of rehash.
  4861. (unordered_multimap<>::_M_check_rehashed): Likewise.
  4862. * include/debug/unordered_set
  4863. (unordered_set<>::_M_check_rehashed): Likewise.
  4864. (unordered_multiset<>::_M_check_rehashed): Likewise.
  4865. * testsuite/23_containers/unordered_set/debug/89608_neg.cc: New.
  4866. 2019-03-07 Andreas Schwab <schwab@suse.de>
  4867. * config/abi/post/riscv64-linux-gnu: New directory.
  4868. * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: New file.
  4869. 2019-03-07 Jonathan Wakely <jwakely@redhat.com>
  4870. * testsuite/20_util/function_objects/bind_front/1.cc: Change from
  4871. compile test to run. Fix typo.
  4872. * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
  4873. * doc/html/*: Regenerate.
  4874. P0356R5 Simplified partial function application
  4875. * include/std/functional [C++20] (_Bind_front, _Bind_front_t): Define
  4876. helpers for bind_front.
  4877. (bind_front, __cpp_lib_bind_front): Define.
  4878. * testsuite/20_util/function_objects/bind_front/1.cc: New test.
  4879. 2019-03-06 Jonathan Wakely <jwakely@redhat.com>
  4880. * include/std/type_traits (__cpp_lib_bounded_array_traits): Define.
  4881. * include/std/version (__cpp_lib_bounded_array_traits): Likewise.
  4882. * testsuite/20_util/is_bounded_array/value.cc: Check for macro.
  4883. * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
  4884. 2019-03-06 Edward Smith-Rowland <3dw4rd@verizon.net>
  4885. PR libstdc++/86655 - std::assoc_legendre should not constrain
  4886. the value of m (or x).
  4887. * include/tr1/legendre_function.tcc (__assoc_legendre_p,
  4888. __sph_legendre): If degree > order Don't throw, return 0.
  4889. (__legendre_p, __assoc_legendre_p): Don't constrain x either.
  4890. * testsuite/special_functions/02_assoc_legendre/pr86655.cc: New test.
  4891. * testsuite/special_functions/20_sph_legendre/pr86655.cc: New test.
  4892. * testsuite/tr1/5_numerical_facilities/special_functions/
  4893. 02_assoc_legendre/pr86655.cc: New test.
  4894. * testsuite/tr1/5_numerical_facilities/special_functions/
  4895. 22_sph_legendre/pr86655.cc: New test.
  4896. 2019-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
  4897. Rewrite variant.
  4898. Also PR libstdc++/85517
  4899. * include/std/variant (__do_visit): New.
  4900. (__variant_cast): Likewise.
  4901. (__variant_cookie): Likewise.
  4902. (__erased_*): Remove.
  4903. (_Variant_storage::_S_vtable): Likewise.
  4904. (_Variant_storage::__M_reset_impl): Adjust to use __do_visit.
  4905. (_Variant_storage::__M_reset): Adjust.
  4906. (__variant_construct): New.
  4907. (_Copy_ctor_base(const _Copy_ctor_base&)): Adjust to use
  4908. __variant_construct.
  4909. (_Move_ctor_base(_Move_ctor_base&&)): Likewise.
  4910. (_Move_ctor_base::__M_destructive_copy): New.
  4911. (_Move_ctor_base::__M_destructive_move): Adjust to use
  4912. __variant_construct.
  4913. (_Copy_assign_base::operator=): Adjust to use __do_visit.
  4914. (_Copy_assign_alias): Adjust to check both copy assignment
  4915. and copy construction for triviality.
  4916. (_Move_assign_base::operator=): Adjust to use __do_visit.
  4917. (_Multi_array): Add support for visitors that accept and return
  4918. a __variant_cookie.
  4919. (__gen_vtable_impl::_S_apply_all_alts): Likewise.
  4920. (__gen_vtable_impl::_S_apply_single_alt): Likewise.
  4921. (__gen_vtable_impl::__element_by_index_or_cookie): New. Generate
  4922. a __variant_cookie temporary for a variant that is valueless and..
  4923. (__gen_vtable_impl::__visit_invoke): ..adjust here.
  4924. (__gen_vtable::_Array_type): Conditionally make space for
  4925. the __variant_cookie visitor case.
  4926. (__variant_construct_by_index): New.
  4927. (get_if): Adjust to use std::addressof.
  4928. (relops): Adjust to use __do_visit.
  4929. (variant): Add __variant_cast and __variant_construct_by_index
  4930. as friends.
  4931. (variant::emplace): Use _M_reset() and __variant_construct_by_index
  4932. instead of self-destruction.
  4933. (variant::swap): Adjust to use __do_visit.
  4934. (visit): Reimplement in terms of __do_visit.
  4935. (__variant_hash_call_base_impl::operator()): Adjust to use __do_visit.
  4936. * testsuite/20_util/variant/compile.cc: Adjust.
  4937. * testsuite/20_util/variant/run.cc: Likewise.
  4938. 2019-03-06 Jonathan Wakely <jwakely@redhat.com>
  4939. * include/bits/c++config.h (_cpp_lib_char8_t): Add L suffix to
  4940. constant.
  4941. * testsuite/experimental/feat-char8_t.cc: Likewise.
  4942. * include/std/type_traits [C++20] (is_bounded_array)
  4943. (is_unbounded_array, is_bounded_array_v, is_unbounded_array_v):
  4944. Define.
  4945. * testsuite/20_util/is_bounded_array/requirements/
  4946. explicit_instantiation.cc: New test.
  4947. * testsuite/20_util/is_bounded_array/requirements/typedefs.cc: New
  4948. test.
  4949. * testsuite/20_util/is_bounded_array/value.cc: New test.
  4950. * testsuite/20_util/is_unbounded_array/requirements/
  4951. explicit_instantiation.cc: New test.
  4952. * testsuite/20_util/is_unbounded_array/requirements/typedefs.cc: New
  4953. * test.
  4954. * testsuite/20_util/is_unbounded_array/value.cc: New test.
  4955. * include/bits/ptr_traits.h [C++20] (pointer_traits<T*>::pointer_to):
  4956. Add constexpr.
  4957. * testsuite/20_util/pointer_traits/pointer_to_constexpr.cc: New test.
  4958. 2019-03-05 Jonathan Wakely <jwakely@redhat.com>
  4959. * include/c_compatibility/math.h [C++20] (lerp): Add using
  4960. declaration.
  4961. * include/c_global/cmath [C++20] (__cpp_lib_interpolate): Define.
  4962. (__lerp): Define function template to implement lerp.
  4963. (lerp(float, float, float), lerp(double, double, double))
  4964. (lerp(long double, long double, long double)): Define for C++20.
  4965. * include/std/numeric [C++20] (__cpp_lib_interpolate): Define.
  4966. (midpoint(T, T), midpoint(T*, T*)): Define.
  4967. * include/std::version [C++20] (__cpp_lib_interpolate): Define.
  4968. * testsuite/26_numerics/lerp.cc: New test.
  4969. * testsuite/26_numerics/midpoint/floating.cc: New test.
  4970. * testsuite/26_numerics/midpoint/integral.cc: New test.
  4971. * testsuite/26_numerics/midpoint/pointer.cc: New test.
  4972. 2019-03-04 Edward Smith-Rowland <3dw4rd@verizon.net>
  4973. PR libstdc++/88996 Implement P0439R0
  4974. Make std::memory_order a scoped enumeration.
  4975. * include/bits/atomic_base.h: For C++20 make memory_order a scoped enum,
  4976. add variables for the old enumerators. Adjust calls.
  4977. * testsuite/29_atomics/headers/atomic/types_std_c++2a.cc: New test.
  4978. * testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc: New test.
  4979. 2019-03-04 Jonathan Wakely <jwakely@redhat.com>
  4980. * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Remove bogus dg-do
  4981. directive.
  4982. * include/std/memory_resource (polymorphic_allocator): Add default
  4983. template argument for C++20.
  4984. (polymorphic_allocator::allocate_bytes)
  4985. (polymorphic_allocator::deallocate_bytes)
  4986. (polymorphic_allocator::allocate_object)
  4987. (polymorphic_allocator::deallocate_object)
  4988. (polymorphic_allocator::new_object)
  4989. (polymorphic_allocator::delete_object): New member functions for
  4990. C++20.
  4991. * testsuite/20_util/polymorphic_allocator/allocate_object.cc: New
  4992. test.
  4993. 2019-03-03 Jonathan Wakely <jwakely@redhat.com>
  4994. PR libstdc++/89562
  4995. * src/filesystem/ops-common.h (do_copy_file): Open files in binary
  4996. mode for mingw.
  4997. 2019-03-01 Jonathan Wakely <jwakely@redhat.com>
  4998. * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource)
  4999. [!__cpp_sized_deallocation]: Do not pass size to operator delete.
  5000. * include/std/memory (uses_allocator_construction_args): New set of
  5001. overloaded functions.
  5002. (make_obj_using_allocator, uninitialized_construct_using_allocator):
  5003. New functions.
  5004. * include/std/memory_resource (polymorphic_allocator::construct)
  5005. [__cplusplus > 201703l]: Replace all overloads with a single function
  5006. using uses_allocator_construction_args.
  5007. * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: New
  5008. test.
  5009. * testsuite/20_util/uses_allocator/make_obj.cc: New test.
  5010. 2019-02-27 Jonathan Wakely <jwakely@redhat.com>
  5011. PR libstdc++/89466
  5012. * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local
  5013. stylesheet directories before check for xsltproc. Try to use
  5014. xmlcatalog to find local stylesheet directory before trying hardcoded
  5015. paths. Add path used by suse to hardcoded paths. Adjust xsltproc
  5016. check to look for the same stylesheet as doc/Makefile.am uses. Don't
  5017. use xsltproc if xmlcatalog fails to find a local stylesheet.
  5018. * configure.ac: Check for xmlcatalog.
  5019. * Makefile.in: Regenerate.
  5020. * configure: Likewise.
  5021. * doc/Makefile.in: Likewise.
  5022. * include/Makefile.in: Likewise.
  5023. * libsupc++/Makefile.in: Likewise.
  5024. * po/Makefile.in: Likewise.
  5025. * python/Makefile.in: Likewise.
  5026. * src/Makefile.in: Likewise.
  5027. * src/c++11/Makefile.in: Likewise.
  5028. * src/c++17/Makefile.in: Likewise.
  5029. * src/c++98/Makefile.in: Likewise.
  5030. * src/filesystem/Makefile.in: Likewise.
  5031. * testsuite/Makefile.in: Likewise.
  5032. 2019-02-26 Jonathan Wakely <jwakely@redhat.com>
  5033. PR libstdc++/89477
  5034. * include/bits/alloc_traits.h (_RequireNotAllocator): New helper for
  5035. container deduction guides.
  5036. * include/bits/hashtable.h (_RequireNotAllocatorOrIntegral): Likewise.
  5037. * include/bits/stl_map.h (map): Use _RequireNotAllocator to constrain
  5038. parameters in deduction guides.
  5039. * include/bits/stl_multimap.h (multimap): Likewise.
  5040. * include/bits/stl_multiset.h (multiset): Likewise.
  5041. * include/bits/stl_queue.h (queue, priority_queue): Likewise.
  5042. * include/bits/stl_set.h (set): Likewise.
  5043. * include/bits/stl_stack.h (stack): Likewise.
  5044. * include/bits/unordered_map.h (unordered_map, unordered_multimap):
  5045. use _RequireNotAllocator and _RequireNotAllocatorOrIntegral to
  5046. constrain parameters in deduction guides.
  5047. * include/bits/unordered_set.h (unordered_set, unordered_multiset):
  5048. Likewise.
  5049. * testsuite/23_containers/map/cons/deduction.cc: Test additional
  5050. deduction cases.
  5051. * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
  5052. * testsuite/23_containers/set/cons/deduction.cc: Likewise.
  5053. * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
  5054. * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
  5055. Likewise.
  5056. * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
  5057. Likewise.
  5058. * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
  5059. PR libstdc++/89416
  5060. * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Change
  5061. to class template and partial specialization using void_t.
  5062. (__is_copy_insertable, __is_move_insertable): Adjust base class.
  5063. 2019-02-24 Jonathan Wakely <jwakely@redhat.com>
  5064. PR libstdc++/89416
  5065. * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Make
  5066. copy and move members public.
  5067. 2019-02-23 Jonathan Wakely <jwakely@redhat.com>
  5068. * include/std/type_traits (__underlying_type_impl): New helper to
  5069. make underlying_type SFINAE-friendly.
  5070. (underlying_type): Derive from __underlying_type_impl.
  5071. * testsuite/20_util/underlying_type/requirements/typedefs-3.cc: New
  5072. test.
  5073. PR libstdc++/89446
  5074. * include/bits/char_traits.h (__constant_char_array): Check index is
  5075. in range before dereferencing.
  5076. (char_traits<char>::compare, char_traits<char>::find)
  5077. (char_traits<char8_t>::compare, char_traits<char8_t>::find): Return
  5078. immediately if n is zero.
  5079. (char_traits<wchar_t>::compare, char_traits<wchar_t>::find): Likewise.
  5080. Remove workarounds for PR 67026.
  5081. * testsuite/21_strings/basic_string_view/operators/char/89446.cc:
  5082. New test.
  5083. * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
  5084. New test.
  5085. 2019-02-22 Eric Botcazou <ebotcazou@adacore.com>
  5086. * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Adjust.
  5087. * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
  5088. 2019-02-22 Jakub Jelinek <jakub@redhat.com>
  5089. PR libstdc++/89402
  5090. * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Change return
  5091. type to std::size_t and argument to type to long double.
  5092. 2019-02-22 Eric Botcazou <ebotcazou@adacore.com>
  5093. * configure.host (abi_baseline_pair): Adjust for SPARC64/Linux.
  5094. * config/abi/post/sparc64-linux-gnu: New directory.
  5095. * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: New file.
  5096. * config/abi/post/sparc64-linux-gnu/32: New directory.
  5097. * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: New file.
  5098. 2019-02-21 Jonathan Wakely <jwakely@redhat.com>
  5099. * testsuite/29_atomics/headers/atomic/types_std_c++20.cc: New test.
  5100. * testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc: New
  5101. test.
  5102. 2019-02-22 Tom Honermann <tom@honermann.net>
  5103. * python/libstdcxx/v6/printers.py (register_type_printers): Add type
  5104. printers for u8string and u8string_view.
  5105. 2019-02-22 Tom Honermann <tom@honermann.net>
  5106. * testsuite/18_support/byte/ops.cc: Validate
  5107. std::to_integer<char8_t>, std::to_integer<char16_t>, and
  5108. std::to_integer<char32_t>.
  5109. * testsuite/18_support/numeric_limits/dr559.cc: Validate
  5110. std::numeric_limits<char8_t>.
  5111. * testsuite/18_support/numeric_limits/lowest.cc: Validate
  5112. std::numeric_limits<char8_t>::lowest().
  5113. * testsuite/18_support/numeric_limits/max_digits10.cc: Validate
  5114. std::numeric_limits<char8_t>::max_digits10.
  5115. * testsuite/18_support/type_info/fundamental.cc: Validate
  5116. typeinfo for char8_t.
  5117. * testsuite/20_util/from_chars/1_c++20_neg.cc: New test, validating
  5118. std::from_chars with char8_t.
  5119. * testsuite/20_util/hash/requirements/explicit_instantiation.cc:
  5120. Validate explicit instantiation of std::hash<char8_t>.
  5121. * testsuite/20_util/is_integral/value.cc: Validate
  5122. std::is_integral<char8_t>.
  5123. * testsuite/20_util/make_signed/requirements/typedefs-4.cc:
  5124. Validate std::make_signed<char8_t>.
  5125. * testsuite/21_strings/basic_string/cons/char/deduction.cc:
  5126. Validate u8string construction from char8_t sources.
  5127. * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Validate
  5128. std::pmr::u8string.
  5129. * testsuite/21_strings/basic_string_view/operations/compare/
  5130. char/70483.cc: Validate substr operations on u8string_view.
  5131. * testsuite/21_strings/basic_string_view/typedefs.cc: Validate that
  5132. the u8string_view typedef is defined.
  5133. * testsuite/21_strings/char_traits/requirements/
  5134. constexpr_functions.cc: Validate char_traits<char8_t> constexpr
  5135. member functions.
  5136. * testsuite/21_strings/char_traits/requirements/
  5137. constexpr_functions_c++17.cc: Validate char_traits<char8_t> C++17
  5138. constexpr member functions.
  5139. * testsuite/21_strings/headers/string/types_std_c++0x.cc: Validate
  5140. that the u8string typedef is defined.
  5141. * testsuite/22_locale/locale/cons/unicode.cc: Validate the presence
  5142. of the std::codecvt<char16_t, char8_t, std::mbstate_t> and
  5143. std::codecvt<char32_t, char8_t, std::mbstate_t> facets.
  5144. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Update line
  5145. numbers.
  5146. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
  5147. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
  5148. Likewise.
  5149. * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
  5150. * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
  5151. Validate std::atomic<char8_t>::is_always_lock_free
  5152. * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
  5153. Update line numbers.
  5154. * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
  5155. Likewise.
  5156. * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
  5157. Likewise.
  5158. * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
  5159. Validate std::experimental::pmr::u8string.
  5160. * testsuite/experimental/string_view/typedefs.cc: Validate that the
  5161. u8string_view typedef is defined.
  5162. * testsuite/util/testsuite_common_types.h: Add char8_t, char16_t and
  5163. char32_t to the typelists.
  5164. 2019-02-22 Tom Honermann <tom@honermann.net>
  5165. * include/ext/typelist.h: Constrain a partial specialization of
  5166. typelist::detail::append_ to only match chain<T1,T2>.
  5167. 2019-02-21 Jonathan Wakely <jwakely@redhat.com>
  5168. PR libstdc++/89416
  5169. * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Replace
  5170. class template with class. Replace move and copy member types with
  5171. member alias templates, so they are only instantiated when needed.
  5172. (__is_copy_insertable, __is_move_insertable): Adjust base class.
  5173. * testsuite/23_containers/vector/modifiers/push_back/89130.cc: Enable
  5174. test for C++11/14/17 as well.
  5175. * testsuite/23_containers/vector/modifiers/push_back/89416.cc: New
  5176. test.
  5177. 2019-02-20 Jakub Jelinek <jakub@redhat.com>
  5178. PR libstdc++/89402
  5179. * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
  5180. _GLIBCXX_PURE to the alias declaration.
  5181. 2019-02-19 Jonathan Wakely <jwakely@redhat.com>
  5182. * testsuite/21_strings/basic_string/literals/types.cc
  5183. [_GLIBCXX_USE_CHAR8_T]: Adjust expected string type for u8 literal.
  5184. * testsuite/21_strings/basic_string/literals/values.cc
  5185. [_GLIBCXX_USE_CHAR8_T]: Likewise.
  5186. * testsuite/22_locale/codecvt/char16_t.cc: Adjust for u8 literals
  5187. potentially having different type.
  5188. * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
  5189. * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: Cast u8 literal
  5190. to char.
  5191. * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: Likewise.
  5192. * testsuite/22_locale/codecvt/utf8.cc: Likewise.
  5193. * testsuite/22_locale/conversions/string/2.cc: Remove u8 prefix from
  5194. string literals only using basic character set.
  5195. * testsuite/22_locale/conversions/string/3.cc: Likewise. Cast other
  5196. u8 literals to char.
  5197. * testsuite/29_atomics/headers/atomic/macros.cc [_GLIBCXX_USE_CHAR8_T]:
  5198. Test ATOMIC_CHAR8_T_LOCK_FREE.
  5199. Add missing #error to ATOMIC_CHAR16_T_LOCK_FREE test.
  5200. * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
  5201. [_GLIBCXX_USE_CHAR8_T]: Check for std::atomic_char8_t.
  5202. * testsuite/experimental/string_view/literals/types.cc
  5203. [_GLIBCXX_USE_CHAR8_T]: Adjust expected string_view type for u8
  5204. literal.
  5205. * testsuite/experimental/string_view/literals/values.cc
  5206. [_GLIBCXX_USE_CHAR8_T]: Likewise.
  5207. 2019-02-19 Tom Honermann <tom@honermann.net>
  5208. * testsuite/18_support/numeric_limits/char8_t.cc: New test cloned
  5209. from char16_32_t.cc; validates numeric_limits<char8_t>.
  5210. * testsuite/21_strings/basic_string/literals/types-char8_t.cc: New
  5211. test cloned from types.cc; validates operator""s for char8_t
  5212. returns u8string.
  5213. * testsuite/21_strings/basic_string/literals/values-char8_t.cc: New
  5214. test cloned from values.cc; validates construction and comparison
  5215. of u8string values.
  5216. * testsuite/21_strings/basic_string/requirements/
  5217. /explicit_instantiation/char8_t/1.cc: New test cloned from
  5218. char16_t/1.cc; validates explicit instantiation of
  5219. basic_string<char8_t>.
  5220. * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
  5221. New test cloned from types.cc; validates operator""sv for char8_t
  5222. returns u8string_view.
  5223. * testsuite/21_strings/basic_string_view/literals/
  5224. values-char8_t.cc: New test cloned from values.cc; validates
  5225. construction and comparison of u8string_view values.
  5226. * testsuite/21_strings/basic_string_view/requirements/
  5227. explicit_instantiation/char8_t/1.cc: New test cloned from
  5228. char16_t/1.cc; validates explicit instantiation of
  5229. basic_string_view<char8_t>.
  5230. * testsuite/21_strings/char_traits/requirements/char8_t/65049.cc:
  5231. New test cloned from char16_t/65049.cc; validates that
  5232. char_traits<char8_t> is not vulnerable to the concerns in PR65049.
  5233. * testsuite/21_strings/char_traits/requirements/char8_t/
  5234. typedefs.cc: New test cloned from char16_t/typedefs.cc; validates
  5235. that char_traits<char8_t> member typedefs are present and correct.
  5236. * testsuite/21_strings/char_traits/requirements/
  5237. explicit_instantiation/char8_t/1.cc: New test cloned from
  5238. char16_t/1.cc; validates explicit instantiation of
  5239. char_traits<char8_t>.
  5240. * testsuite/22_locale/codecvt/char16_t-char8_t.cc: New test cloned
  5241. from char16_t.cc: validates
  5242. codecvt<char16_t, char8_t, mbstate_t>.
  5243. * testsuite/22_locale/codecvt/char32_t-char8_t.cc: New test cloned
  5244. from char32_t.cc: validates
  5245. codecvt<char32_t, char8_t, mbstate_t>.
  5246. * testsuite/22_locale/codecvt/utf8-char8_t.cc: New test cloned from
  5247. utf8.cc; validates codecvt<char16_t, char8_t, std::mbstate_t> and
  5248. codecvt<char32_t, char8_t, std::mbstate_t>.
  5249. * testsuite/27_io/filesystem/path/native/string-char8_t.cc: New
  5250. test cloned from string.cc; validates filesystem::path construction
  5251. from char8_t input.
  5252. * testsuite/experimental/feat-char8_t.cc: New test; validates that
  5253. the __cpp_lib_char8_t feature test macro is defined with the
  5254. correct value.
  5255. * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
  5256. New test cloned from string.cc; validates filesystem::path
  5257. construction from char8_t input.
  5258. * testsuite/experimental/string_view/literals/types-char8_t.cc: New
  5259. test cloned from types.cc; validates operator""sv for char8_t
  5260. returns u8string_view.
  5261. * testsuite/experimental/string_view/literals/values-char8_t.cc:
  5262. New test cloned from values.cc; validates construction and
  5263. comparison of u8string_view values.
  5264. * testsuite/experimental/string_view/requirements/
  5265. explicit_instantiation/char8_t/1.cc: New test cloned from
  5266. char16_t/1.cc; validates explicit instantiation of
  5267. basic_string_view<char8_t>.
  5268. * testsuite/ext/char8_t/atomic-1.cc: New test; validates that
  5269. ATOMIC_CHAR8_T_LOCK_FREE is not defined if char8_t support is not
  5270. enabled.
  5271. 2019-02-19 Tom Honermann <tom@honermann.net>
  5272. P0482R5 char8_t: Standard library support
  5273. * config/abi/pre/gnu-versioned-namespace.ver (CXXABI_2.0): Add
  5274. typeinfo symbols for char8_t.
  5275. * config/abi/pre/gnu.ver: Add CXXABI_1.3.12.
  5276. (GLIBCXX_3.4.26): Add symbols for specializations of
  5277. numeric_limits and codecvt that involve char8_t.
  5278. (CXXABI_1.3.12): Add typeinfo symbols for char8_t.
  5279. * include/bits/atomic_base.h: Add atomic_char8_t.
  5280. * include/bits/basic_string.h: Add std::hash<u8string> and
  5281. operator""s(const char8_t*, size_t).
  5282. * include/bits/c++config: Define _GLIBCXX_USE_CHAR8_T and
  5283. __cpp_lib_char8_t.
  5284. * include/bits/char_traits.h: Add char_traits<char8_t>.
  5285. * include/bits/codecvt.h: Add
  5286. codecvt<char16_t, char8_t, mbstate_t>,
  5287. codecvt<char32_t, char8_t, mbstate_t>,
  5288. codecvt_byname<char16_t, char8_t, mbstate_t>, and
  5289. codecvt_byname<char32_t, char8_t, mbstate_t>.
  5290. * include/bits/cpp_type_traits.h: Add __is_integer<char8_t> to
  5291. recognize char8_t as an integral type.
  5292. * include/bits/fs_path.h: (path::__is_encoded_char): Recognize
  5293. char8_t.
  5294. (path::u8string): Return std::u8string when char8_t support is
  5295. enabled.
  5296. (path::generic_u8string): Likewise.
  5297. (path::_S_convert): Handle conversion from char8_t input.
  5298. (path::_S_str_convert): Likewise.
  5299. * include/bits/functional_hash.h: Add hash<char8_t>.
  5300. * include/bits/locale_conv.h (__str_codecvt_out): Add overloads for
  5301. char8_t.
  5302. * include/bits/locale_facets.h (_GLIBCXX_NUM_UNICODE_FACETS): Bump
  5303. for new char8_t specializations.
  5304. * include/bits/localefwd.h: Add missing declarations of
  5305. codecvt<char16_t, char, mbstate_t> and
  5306. codecvt<char32_t, char, mbstate_t>. Add char8_t declarations
  5307. codecvt<char16_t, char8_t, mbstate_t> and
  5308. codecvt<char32_t, char8_t, mbstate_t>.
  5309. * include/bits/postypes.h: Add u8streampos
  5310. * include/bits/stringfwd.h: Add declarations of
  5311. char_traits<char8_t> and u8string.
  5312. * include/c_global/cstddef: Add __byte_operand<char8_t>.
  5313. * include/experimental/bits/fs_path.h (path::__is_encoded_char):
  5314. Recognize char8_t.
  5315. (path::u8string): Return std::u8string when char8_t support is
  5316. enabled.
  5317. (path::generic_u8string): Likewise.
  5318. (path::_S_convert): Handle conversion from char8_t input.
  5319. (path::_S_str_convert): Likewise.
  5320. * include/experimental/string: Add u8string.
  5321. * include/experimental/string_view: Add u8string_view,
  5322. hash<experimental::u8string_view>, and
  5323. operator""sv(const char8_t*, size_t).
  5324. * include/std/atomic: Add atomic<char8_t> and atomic_char8_t.
  5325. * include/std/charconv (__is_int_to_chars_type): Recognize char8_t
  5326. as a character type.
  5327. * include/std/limits: Add numeric_limits<char8_t>.
  5328. * include/std/string_view: Add u8string_view,
  5329. hash<experimental::u8string_view>, and
  5330. operator""sv(const char8_t*, size_t).
  5331. * include/std/type_traits: Add __is_integral_helper<char8_t>,
  5332. __make_unsigned<char8_t>, and __make_signed<char8_t>.
  5333. * libsupc++/atomic_lockfree_defines.h: Define
  5334. ATOMIC_CHAR8_T_LOCK_FREE.
  5335. * src/c++11/Makefile.am: Compile with -fchar8_t when compiling
  5336. codecvt.cc and limits.cc so that char8_t specializations of
  5337. numeric_limits and codecvt and emitted.
  5338. * src/c++11/Makefile.in: Likewise.
  5339. * src/c++11/codecvt.cc: Define members of
  5340. codecvt<char16_t, char8_t, mbstate_t>,
  5341. codecvt<char32_t, char8_t, mbstate_t>,
  5342. codecvt_byname<char16_t, char8_t, mbstate_t>, and
  5343. codecvt_byname<char32_t, char8_t, mbstate_t>.
  5344. * src/c++11/limits.cc: Define members of
  5345. numeric_limits<char8_t>.
  5346. * src/c++98/Makefile.am: Compile with -fchar8_t when compiling
  5347. locale_init.cc and localename.cc.
  5348. * src/c++98/Makefile.in: Likewise.
  5349. * src/c++98/locale_init.cc: Add initialization for the
  5350. codecvt<char16_t, char8_t, mbstate_t> and
  5351. codecvt<char32_t, char8_t, mbstate_t> facets.
  5352. * src/c++98/localename.cc: Likewise.
  5353. * testsuite/util/testsuite_abi.cc: Validate ABI bump.
  5354. 2019-02-18 Wilco Dijkstra <wdijkstr@arm.com>
  5355. * 27_io/filesystem/operations/all.cc: Add dg-require-filesystem-ts.
  5356. * 27_io/filesystem/operations/resize_file.cc: Likewise.
  5357. * 27_io/filesystem/path/generation/normal2.cc: Likewise.
  5358. 2019-02-14 Jonathan Wakely <jwakely@redhat.com>
  5359. * doc/xml/manual/status_cxx2020.xml: Update P0887R1 status.
  5360. * doc/html/*: Regenerate.
  5361. * doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
  5362. * doc/html/*: Regenerate.
  5363. * doc/xml/manual/intro.xml: Document LWG 2586 status.
  5364. * include/bits/uses_allocator.h (__uses_alloc): Use const lvalue
  5365. allocator type in is_constructible checks.
  5366. * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
  5367. * testsuite/20_util/scoped_allocator/dr2586.cc: New test.
  5368. * testsuite/20_util/tuple/cons/allocators.cc: Add test using
  5369. problematic type from LWG 2586 discussion.
  5370. * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error.
  5371. * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
  5372. * configure.ac: Check for C11 timespec_get function.
  5373. * crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
  5374. (openbsd): Likewise
  5375. * config.h.in: Regenerate.
  5376. * configure: Regenerate.
  5377. * include/c_global/ctime (timespec, timespec_get): Add to namespace
  5378. std for C++17 and up.
  5379. * doc/xml/manual/intro.xml: Document LWG 2537 status.
  5380. * include/bits/stl_queue.h
  5381. (priority_queue(const Compare&, const Container&, const Alloc&))
  5382. (priority_queue(const Compare&, Container&&, const Alloc&)): Call
  5383. make_heap.
  5384. * testsuite/23_containers/priority_queue/dr2537.cc: New test.
  5385. * doc/xml/manual/intro.xml: Document LWG 2566 status.
  5386. * include/bits/stl_queue.h (queue, priority_queue): Add static
  5387. assertions to enforce LWG 2566 requirement on value_type.
  5388. * include/bits/stl_stack.h (stack): Likewise.
  5389. PR middle-end/89303
  5390. * testsuite/20_util/enable_shared_from_this/89303.cc: New test.
  5391. * doc/xml/manual/intro.xml: Document LWG 2735 status.
  5392. * include/bits/std_abs.h: Add comment about LWG 2735.
  5393. * testsuite/26_numerics/headers/cstdlib/dr2735.cc: New test.
  5394. 2019-02-13 Jonathan Wakely <jwakely@redhat.com>
  5395. PR libstdc++/89345
  5396. * include/std/version [__cpp_impl_destroying_delete]
  5397. (__cpp_lib_destroying_delete): Only define for C++2a and later.
  5398. * libsupc++/new [__cpp_impl_destroying_delete]
  5399. (__cpp_lib_destroying_delete): Likewise.
  5400. (destroying_delete_t, destroying_delete): Likewise, but define even
  5401. when __cpp_impl_destroying_delete is not defined.
  5402. * testsuite/18_support/destroying_delete.cc: New test.
  5403. 2019-02-11 Jonathan Wakely <jwakely@redhat.com>
  5404. PR libstdc++/89023
  5405. * testsuite/17_intro/headers/c++2011/parallel_mode.cc: New test.
  5406. * testsuite/17_intro/headers/c++2014/parallel_mode.cc: New test.
  5407. * testsuite/17_intro/headers/c++2017/parallel_mode.cc: New test.
  5408. * testsuite/28_regex/headers/regex/parallel_mode.cc: Remove.
  5409. 2019-02-09 Jonathan Wakely <jwakely@redhat.com>
  5410. PR libstdc++/71044
  5411. * include/bits/fs_path.h (path::has_root_name)
  5412. (path::has_root_directory, path::has_root_path)
  5413. (path::has_relative_path, path::has_parent_path)
  5414. (path::has_filename, path::has_stem, path::has_extension)
  5415. (path::is_absolute, path::is_relative, path::_M_find_extension): Add
  5416. noexcept.
  5417. * src/c++17/fs_path.cc (path::has_root_name)
  5418. (path::has_root_directory, path::has_root_path)
  5419. (path::has_relative_path, path::has_parent_path)
  5420. (path::has_filename, path::_M_find_extension): Add noexcept.
  5421. 2019-02-06 Jonathan Wakely <jwakely@redhat.com>
  5422. PR libstdc++/89102 (partial)
  5423. * include/std/type_traits (common_type<>): Define.
  5424. (common_type<T>): Derive from common_type<T, T>.
  5425. * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
  5426. Test zero-length template argument list.
  5427. * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
  5428. Test additional single argument cases.
  5429. * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
  5430. Adjust expected error.
  5431. 2019-02-05 Jonathan Wakely <jwakely@redhat.com>
  5432. PR libstdc++/89128
  5433. * include/bits/stl_queue.h (queue, priority_queue): Add deduction
  5434. guides.
  5435. * include/bits/stl_stack.h (stack): Likewise.
  5436. * testsuite/23_containers/priority_queue/deduction.cc: New test.
  5437. * testsuite/23_containers/queue/deduction.cc: New test.
  5438. * testsuite/23_containers/stack/deduction.cc: New test.
  5439. PR libstdc++/89194
  5440. * include/std/type_traits (__is_convertible_helper)
  5441. (__is_convertible_helper<_From, _To, false>): Revert changes to
  5442. support is_nothrow_convertible.
  5443. (__is_nt_convertible_helper): New helper.
  5444. (is_nothrow_convertible): Use __is_nt_convertible_helper.
  5445. * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
  5446. use of CopyConsOnlyType, but also test DelAnyAssign for completeness.
  5447. PR libstdc++/89130
  5448. * include/bits/alloc_traits.h (__is_copy_insertable_impl): Rename to
  5449. __is_alloc_insertable_impl. Replace single type member with two
  5450. members, one for each of copy and move insertable.
  5451. (__is_move_insertable): New trait for internal use.
  5452. * include/bits/stl_vector.h (vector::_S_nothrow_relocate(true_type))
  5453. (vector::_S_nothrow_relocate(true_type)): New functions to
  5454. conditionally check if __relocate_a can throw.
  5455. (vector::_S_use_relocate()): Dispatch to _S_nothrow_relocate based
  5456. on __is_move_insertable.
  5457. (vector::_S_do_relocate): New overloaded functions to conditionally
  5458. call __relocate_a.
  5459. (vector::_S_relocate): New function that dispatches to _S_do_relocate
  5460. based on _S_use_relocate.
  5461. * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
  5462. (vector::_M_default_append): Call _S_relocate instead of __relocate_a.
  5463. * testsuite/23_containers/vector/modifiers/push_back/89130.cc: New.
  5464. PR libstdc++/89090
  5465. * include/bits/stl_uninitialized.h (__relocate_a_1): Make unused
  5466. parameter unnamed. Add message to static assertion.
  5467. * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
  5468. (vector::_M_default_append): Use _GLIBCXX17_CONSTEXPR for if constexpr
  5469. in C++11 code.
  5470. 2019-02-05 Marc Glisse <marc.glisse@inria.fr>
  5471. PR libstdc++/87106
  5472. * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
  5473. Rename...
  5474. (__is_bitwise_relocatable): ... to this.
  5475. (__relocate_a_1): Adapt.
  5476. * include/bits/stl_deque.h (__is_trivially_relocatable): Rename...
  5477. (__is_bitwise_relocatable): ... to this.
  5478. 2019-01-30 Jonathan Wakely <jwakely@redhat.com>
  5479. PR libstdc++/89117
  5480. * src/c++17/fs_path.cc (path::replace_extension): Erase extension from
  5481. final component as well as from _M_pathname. Append the dot using
  5482. operator+= instead of only to _M_pathname.
  5483. (path::_M_find_extension): Reformat slightly.
  5484. * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
  5485. Add more test cases.
  5486. 2019-01-30 Ulrich Drepper <drepper@redhat.com>
  5487. * doc/xml/manual/status_cxx2020.xml: Update P0600 entry.
  5488. 2019-01-29 Jonathan Wakely <jwakely@redhat.com>
  5489. * testsuite/26_numerics/headers/complex/synopsis.cc: Remove incorrect
  5490. constexpr specifiers from arg and proj.
  5491. * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
  5492. __shared_ptr instantiations used by gcc4-compatible ABI.
  5493. * include/experimental/forward_list (experimental::erase): Qualify
  5494. call to erase_if.
  5495. * include/experimental/list (experimental::erase): Likewise.
  5496. * include/std/forward_list (std::erase): Likewise.
  5497. * include/std/list (std::erase): Likewise.
  5498. * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
  5499. C++2a.
  5500. * testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
  5501. * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
  5502. * testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
  5503. * testsuite/30_threads/async/54297.cc: Suppress nodiscard warning.
  5504. * testsuite/ext/array_allocator/26875.cc: Likewise.
  5505. * testsuite/ext/pool_allocator/allocate_chunk.cc: Likewise.
  5506. * testsuite/util/replacement_memory_operators.h: Likewise.
  5507. * testsuite/util/testsuite_allocator.h: Likewise.
  5508. * include/std/memory_resource (__pool_resource::_M_unpooled): Use
  5509. normal mode vector, even for debug mode.
  5510. * include/std/vector [_GLIBCXX_DEBUG] (_GLIBCXX_STD_C::pmr::vector):
  5511. Define alias template for normal mode vector.
  5512. 2019-01-28 Jonathan Wakely <jwakely@redhat.com>
  5513. PR libstdc++/68737
  5514. * config/locale/generic/c_locale.h (__convert_from_v)
  5515. [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
  5516. * config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
  5517. * include/bits/locale_facets.tcc (num_put::_M_insert_float)
  5518. [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
  5519. 2019-01-24 Jonathan Wakely <jwakely@redhat.com>
  5520. PR libstdc++/88840
  5521. * include/bits/stl_vector.h (vector::__use_relocate): Replace static
  5522. data member with static member function _S_use_relocate().
  5523. * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
  5524. (vector::_M_default_append): Use _S_use_relocate() instead of
  5525. __use_relocate.
  5526. * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
  5527. sign of results.
  5528. 2019-01-22 Jonathan Wakely <jwakely@redhat.com>
  5529. PR libstdc++/88740
  5530. * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
  5531. write to stderr instead of using printf.
  5532. 2019-01-21 Jakub Jelinek <jakub@redhat.com>
  5533. PR libstdc++/86590
  5534. * include/bits/char_traits.h (__constant_string_p,
  5535. __constant_char_array_p): Use __builtin_is_constant_evaluated if
  5536. available.
  5537. 2019-01-20 Ulrich Drepper <drepper@redhat.com>
  5538. Implement C++20 P0600r1.
  5539. * include/backward/hash_map: Add nodiscard attribute to empty.
  5540. * include/backward/hash_set: Likewise.
  5541. * backward/hashtable.h: Likewise.
  5542. * include/bits/basic_string.h: Likewise.
  5543. * include/bits/forward_list.h: Likewise.
  5544. * include/bits/hashtable.h: Likewise.
  5545. * include/bits/regex.h: Likewise.
  5546. * include/bits/stl_deque.h: Likewise.
  5547. * include/bits/stl_list.h: Likewise.
  5548. * include/bits/stl_map.h: Likewise.
  5549. * include/bits/stl_multimap.h: Likewise.
  5550. * include/bits/stl_multiset.h: Likewise.
  5551. * include/bits/stl_queue.h: Likewise.
  5552. * include/bits/stl_set.h: Likewise.
  5553. * include/bits/stl_stack.h: Likewise.
  5554. * include/bits/stl_tree.h: Likewise.
  5555. * include/bits/stl_vector.h: Likewise.
  5556. * include/bits/unordered_map.h: Likewise.
  5557. * include/bits/unordered_set.h: Likewise.
  5558. * include/debug/array: Likewise.
  5559. * include/experimental/any: Likewise.
  5560. * include/experimental/bits/fs_path.h: Likewise.
  5561. * include/experimental/internet: Likewise.
  5562. * include/experimental/string_view: Likewise.
  5563. * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
  5564. Likewise.
  5565. * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
  5566. Likewise.
  5567. * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
  5568. Likewise.
  5569. * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
  5570. Likewise.
  5571. * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
  5572. Likewise.
  5573. * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
  5574. Likewise.
  5575. * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
  5576. Likewise.
  5577. * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
  5578. Likewise.
  5579. * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
  5580. info_fn_imps.hpp: Likewise.
  5581. * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
  5582. left_child_next_sibling_heap_.hpp: Likewise.
  5583. * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
  5584. Likewise.
  5585. * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
  5586. Likewise.
  5587. * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
  5588. Likewise.
  5589. * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
  5590. Likewise.
  5591. * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
  5592. Likewise.
  5593. * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
  5594. Likewise.
  5595. * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
  5596. Likewise.
  5597. * include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
  5598. * include/ext/pb_ds/trie_policy.hpp: Likewise.
  5599. * include/ext/rope: Likewise.
  5600. * include/ext/slist: Likewise.
  5601. * include/ext/vstring.h: Likewise.
  5602. * include/profile/array: Likewise.
  5603. * include/std/array: Likewise.
  5604. * include/tr1/array: Likewise.
  5605. * include/tr1/hashtable.h: Likewise.
  5606. * include/tr1/regex: Likewise.
  5607. * include/tr2/dynamic_bitset: Likewise.
  5608. * include/bits/alloc_traits.h: Add nodiscard attribute to
  5609. allocate.
  5610. * include/experimental/memory_resource: Likewise.
  5611. * include/ext/alloc_traits.h: Likewise.
  5612. * include/ext/array_allocator.h: Likewise.
  5613. * include/ext/bitmap_allocator.h: Likewise.
  5614. * include/ext/debug_allocator.h: Likewise.
  5615. * include/ext/extptr_allocator.h: Likewise.
  5616. * include/ext/mt_allocator.h: Likewise.
  5617. * include/ext/new_allocator.h: Likewise.
  5618. * include/ext/pool_allocator.h: Likewise.
  5619. * include/ext/throw_allocator.h: Likewise.
  5620. * include/std/scoped_allocator: Likewise.
  5621. * libsupc++/eh_alloc.cc: Likewise.
  5622. * include/std/future: Add nodiscard attribute to async.
  5623. * libsupc++/new: Add nodiscard attribute to new.
  5624. 2019-01-18 Jonathan Wakely <jwakely@redhat.com>
  5625. PR libstdc++/87514
  5626. PR libstdc++/87520
  5627. PR libstdc++/88782
  5628. * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
  5629. * include/bits/shared_ptr.h
  5630. (shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
  5631. (allocate_shared): Change to use new tag type.
  5632. * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
  5633. Declare new member function.
  5634. (_Sp_alloc_shared_tag): Define new type.
  5635. (_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
  5636. (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
  5637. _Sp_make_shared_tag::_S_eq to check type_info.
  5638. (__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
  5639. Constrain to prevent being called with _Sp_alloc_shared_tag.
  5640. (__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
  5641. Replace constructor with ...
  5642. (__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
  5643. reference parameter so address of the new object can be returned to
  5644. the caller. Obtain the allocator from the tag type.
  5645. (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
  5646. constructor with ...
  5647. (__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
  5648. to the __shared_count constructor.
  5649. (__allocate_shared): Change to use new tag type.
  5650. * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.
  5651. 2019-01-17 Jonathan Wakely <jwakely@redhat.com>
  5652. * src/c++17/fs_ops.cc
  5653. (equivalent(const path&, const path&, error_code&))
  5654. [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
  5655. compare files instead of relying on incomplete info returned by stat.
  5656. PR libstdc++/88884
  5657. * src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
  5658. if the path is already absolute.
  5659. [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
  5660. [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
  5661. PR libstdc++/88881
  5662. * src/c++17/fs_ops.cc (canonical(const path&, error_code&))
  5663. [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
  5664. of filesystem::exists.
  5665. (create_directories(const path&, error_code&)): Add assertions.
  5666. (status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
  5667. Add workaround for bug in _wstat for paths with trailing slash.
  5668. * testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
  5669. for expected behaviour on mingw.
  5670. * testsuite/experimental/filesystem/operations/create_directories.cc:
  5671. Likewise.
  5672. * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
  5673. "TMP" instead of "TMPDIR" and clean environment before each test. Do
  5674. not test permissions on mingw targets.
  5675. 2019-01-16 Jonathan Wakely <jwakely@redhat.com>
  5676. * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add exports for fstream
  5677. constructors and open members taking wide strings. Fix patterns for
  5678. filesystem::path members to match wstring_view parameters. Add
  5679. exports for shared_ptr members used by directory iterators.
  5680. * src/c++17/fs_ops.cc (remove(const path&, error_code&)): Clear the
  5681. error code parameter if the file doesn't exist.
  5682. * src/filesystem/ops.cc (remove(const path&, error_code&)):
  5683. Likewise.
  5684. * testsuite/27_io/filesystem/operations/canonical.cc: Fix expected
  5685. values for mingw targets, where "/" is not an absolute path. Do not
  5686. test symlinks on mingw targets.
  5687. * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
  5688. * testsuite/27_io/filesystem/operations/copy.cc: Do not test symlinks
  5689. on mingw targets.
  5690. * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
  5691. * testsuite/27_io/filesystem/operations/create_directories.cc: Check
  5692. that each component of the path is created.
  5693. * testsuite/experimental/filesystem/operations/create_directories.cc:
  5694. Likewise.
  5695. * testsuite/27_io/filesystem/operations/exists.cc: Do not test
  5696. permissions on mingw targets.
  5697. * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
  5698. * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
  5699. * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
  5700. * testsuite/27_io/filesystem/operations/permissions.cc: XFAIL for
  5701. mingw targets.
  5702. * testsuite/experimental/filesystem/operations/permissions.cc:
  5703. Likewise.
  5704. * testsuite/27_io/filesystem/operations/remove.cc: Do not test
  5705. symlinks or permissions on mingw targets.
  5706. * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
  5707. * testsuite/27_io/filesystem/operations/remove_all.cc: Do not test
  5708. symlinks on mingw targets.
  5709. * testsuite/experimental/filesystem/operations/remove_all.cc:
  5710. Likewise.
  5711. * testsuite/27_io/filesystem/operations/status.cc: Do not test
  5712. permissions on mingw targets.
  5713. * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Do not
  5714. test symlinks on mingw targets.
  5715. * testsuite/experimental/filesystem/operations/space.cc: Fix test
  5716. for mingw targets.
  5717. 2019-02-14 Ulrich Drepper <drepper@redhat.com>
  5718. PR libstdc++/88738
  5719. Warn about unused comparisons of shared_ptr/unique_ptr
  5720. * include/bits/c++config [_GLIBCXX_NODISCARD]: Define.
  5721. * include/bits/shared_ptr.h: Use it for operator ==, !=,
  5722. <, <=, >, >= for shared_ptr.
  5723. * include/bits/unique_ptr.h: Likewise for unique_ptr.
  5724. 2019-01-15 Jonathan Wakely <jwakely@redhat.com>
  5725. * include/bits/shared_ptr_base.h (__cpp_lib_shared_ptr_arrays): Define
  5726. as 201611L, because P0497R0 changes are supported.
  5727. * include/std/version (__cpp_lib_shared_ptr_arrays): Likewise.
  5728. * include/bits/erase_if.h [__cplusplus > 201703L]
  5729. (__cpp_lib_erase_if): Only define for C++2a.
  5730. * include/std/iterator [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
  5731. (__cpp_lib_null_iterators): Define.
  5732. * include/std/version [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
  5733. (__cpp_lib_null_iterators): Define.
  5734. [__cpp_impl_destroying_delete] (__cpp_lib_destroying_delete): Define.
  5735. * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
  5736. status.
  5737. * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
  5738. Define.
  5739. * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
  5740. changes are supported.
  5741. * include/std/optional (__cpp_lib_optional): Likewise.
  5742. * include/std/variant (__cpp_lib_variant): Likewise.
  5743. * include/std/version [!__STRICT_ANSI__]
  5744. (__cpp_lib_uncaught_exceptions): Define as long integer.
  5745. [__cplusplus >= 201703L] (__cpp_lib_any)
  5746. (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions)
  5747. (__cpp_lib_variant): Define for C++17.
  5748. [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define
  5749. as long integer.
  5750. * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
  5751. integer.
  5752. * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
  5753. 2019-01-12 Jonathan Wakely <jwakely@redhat.com>
  5754. PR libstdc++/88811
  5755. PR libstdc++/83306
  5756. * src/filesystem/path.cc: Fix typo. If first path is empty, show []
  5757. before second path.
  5758. * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
  5759. test.
  5760. 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
  5761. * doc/xml/manual/intro.xml: Include new section.
  5762. * doc/xml/manual/status_cxx2017.xml: Document more
  5763. implementation-defined properties of the library.
  5764. * doc/xml/manual/status_cxx2020.xml: Document C++2a status.
  5765. * doc/html/*: Regenerate.
  5766. * include/bits/refwrap.h [__cplusplus > 201703L]
  5767. (_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base)
  5768. (_Reference_wrapper_base_memfun): Do not define for C++2a.
  5769. (reference_wrapper): Do not derive from _Reference_wrapper_base_memfun
  5770. for C++2a.
  5771. (reference_wrapper::operator()): Add static assertion.
  5772. * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
  5773. * include/std/chrono (duration_values::zero(), duration_values::min())
  5774. (duration_values::max()): Add noexcept.
  5775. (duration::zero(), duration::min(), duration::max()): Likewise.
  5776. (time_point::zero(), time_point::min(), time_point::max()): Likewise.
  5777. * testsuite/20_util/duration/requirements/noexcept.cc: New test.
  5778. * testsuite/20_util/time_point/requirements/noexcept.cc: New test.
  5779. * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
  5780. 2019-01-11 Jakub Jelinek <jakub@redhat.com>
  5781. * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
  5782. * include/std/version (__cpp_lib_is_constant_evaluated): Define.
  5783. 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
  5784. PR libstdc++/88802
  5785. * include/bits/functional_hash.h (hash<nullptr_t>): Define
  5786. specialization for C++17 (P0513R0, LWG 2817).
  5787. * testsuite/20_util/hash/nullptr.cc: New test.
  5788. PR libstdc++/88125
  5789. * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
  5790. pattern for std::basic_stringbuf::str().
  5791. * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
  5792. basic_ostream::operator<< patterns.
  5793. 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
  5794. * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
  5795. test failures on targets with 32-bit time_t.
  5796. * include/bits/erase_if.h: Define __cpp_lib_erase_if.
  5797. * include/std/deque: Likewise.
  5798. * include/std/forward_list: Likewise.
  5799. * include/std/list: Likewise.
  5800. * include/std/string: Likewise.
  5801. * include/std/vector: Likewise.
  5802. * include/std/version: Likewise.
  5803. * testsuite/21_strings/basic_string/erasure.cc: Test macro.
  5804. * testsuite/23_containers/deque/erasure.cc: Likewise.
  5805. * testsuite/23_containers/forward_list/erasure.cc: Likewise.
  5806. * testsuite/23_containers/list/erasure.cc: Likewise.
  5807. * testsuite/23_containers/map/erasure.cc: Likewise.
  5808. * testsuite/23_containers/set/erasure.cc: Likewise.
  5809. * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
  5810. * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
  5811. * testsuite/23_containers/vector/erasure.cc: Likewise.
  5812. * include/experimental/internet [AI_NUMERICSERV]
  5813. (resolver_base::numeric_service): Define conditionally.
  5814. * testsuite/experimental/net/internet/resolver/base.cc: Test it
  5815. conditionally.
  5816. * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
  5817. Likewise.
  5818. 2019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
  5819. Jonathan Wakely <jwakely@redhat.com>
  5820. Implement LWG 2221
  5821. * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten patterns.
  5822. (GLIBCXX_3.4.26): Add new exports.
  5823. * include/Makefile.am: Add ostream-inst.cc. Move string-inst.cc to
  5824. correct list of sources.
  5825. * include/Makefile.in: Regenerate.
  5826. * include/std/ostream (operator<<(nullptr_t)): New member function.
  5827. * src/c++17/ostream-inst.cc: New file.
  5828. * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: New
  5829. test.
  5830. 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
  5831. * testsuite/util/testsuite_fs.h (nonexistent_path): Include name
  5832. of the source file containing the caller.
  5833. * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Remove
  5834. directories created by test.
  5835. * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
  5836. Likewise.
  5837. * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
  5838. Likewise.
  5839. * testsuite/experimental/filesystem/iterators/
  5840. recursive_directory_iterator.cc: Likewise.
  5841. 2019-01-10 Jakub Jelinek <jakub@redhat.com>
  5842. PR tree-optimization/88775
  5843. * include/bits/stl_function.h (greater<_Tp*>::operator(),
  5844. less<_Tp*>::operator(), greater_equal<_Tp*>::operator(),
  5845. less_equal<_Tp*>::operator()): Use __builtin_is_constant_evaluated
  5846. instead of __builtin_constant_p if available. Don't bother with
  5847. the pointer comparison in C++11 and earlier.
  5848. 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
  5849. PR other/16615
  5850. * include/ext/bitmap_allocator.h: Mechanically replace "can not"
  5851. with "cannot".
  5852. 2019-01-09 Jonathan Wakely <jwakely@redhat.com>
  5853. * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
  5854. for filesystem::path. Give variables more distinctive names.
  5855. * include/std/optional (_Optional_payload_base::_M_copy_assign): New
  5856. member function to perform non-trivial assignment.
  5857. (_Optional_payload_base::_M_move_assign): Likewise.
  5858. (_Optional_payload<T, true, false, true>::operator=)
  5859. (_Optional_payload<T, true, true, false>::operator=)
  5860. (_Optional_payload<T, true, false, false>::operator=): Call
  5861. _M_copy_assign and/or _M_move_assign to do non-trivial assignments.
  5862. PR libstdc++/88204
  5863. * testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
  5864. test std::complex<long double> if long double format is IBM128.
  5865. * testsuite/26_numerics/complex/requirements/more_constexpr.cc:
  5866. Likewise.
  5867. 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
  5868. * testsuite/libstdc++-prettyprinters/compat.cc: Test printer support
  5869. for old std::unique_ptr layout.
  5870. * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix std::variant test
  5871. to become valueless. Add filesystem::path tests.
  5872. PR libstdc++/87855
  5873. * include/std/optional (_Optional_payload_base): New class template
  5874. for common code hoisted from _Optional_payload specializations. Use
  5875. a template for the union, to allow a partial specialization for
  5876. types with non-trivial destructors. Add constructors for in-place
  5877. initialization to the union.
  5878. (_Optional_payload(bool, const _Optional_payload&)): Use _M_construct
  5879. to perform non-trivial copy construction, instead of relying on
  5880. non-standard copy elision in a delegating constructor.
  5881. (_Optional_payload(bool, _Optional_payload&&)): Likewise for
  5882. non-trivial move construction.
  5883. (_Optional_payload): Derive from _Optional_payload_base and use it
  5884. for everything except the non-trivial assignment operators, which are
  5885. defined as needed.
  5886. (_Optional_payload<false, C, M>): Derive from the specialization
  5887. _Optional_payload<true, false, false> and add a destructor.
  5888. (_Optional_base_impl::_M_destruct, _Optional_base_impl::_M_reset):
  5889. Forward to corresponding members of _Optional_payload.
  5890. (_Optional_base_impl::_M_is_engaged, _Optional_base_impl::_M_get):
  5891. Hoist common members from _Optional_base.
  5892. (_Optional_base): Make all members and base class public.
  5893. (_Optional_base::_M_get, _Optional_base::_M_is_engaged): Move to
  5894. _Optional_base_impl.
  5895. * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter): Add
  5896. support for new std::optional layout.
  5897. * testsuite/libstdc++-prettyprinters/compat.cc: New test.
  5898. PR libstdc++/88066
  5899. * include/bits/locale_conv.h: Use <> for includes not "".
  5900. * include/ext/random: Likewise.
  5901. * include/ext/vstring.h: Likewise.
  5902. 2019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
  5903. * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
  5904. (GLIBCXX_3.4.21): Likewise.
  5905. 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
  5906. PR libstdc++/88749
  5907. * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
  5908. to match the one that controls whether utimbuf and utime are declared.
  5909. 2019-01-07 Jonathan Wakely <jwakely@redhat.com>
  5910. PR libstdc++/87787
  5911. * include/bits/char_traits.h (char_traits::move): Do not pass null
  5912. pointers to memmove.
  5913. * include/bits/locale_facets.h
  5914. (ctype<char>::widen(const char*, const char*, char*)): Do not
  5915. pass null pointers to memcpy.
  5916. (ctype<char>::narrow(const char*, const char*, char, char*)):
  5917. Likewise.
  5918. (ctype<char>::do_widen(const char*, const char*, char*)):
  5919. Likewise.
  5920. (ctype<char>::do_narrow(const char*, const char*, char, char*)):
  5921. Likewise.
  5922. * doc/xml/manual/spine.xml: Update copyright years.
  5923. * doc/xml/manual/status_cxx2017.xml: Adjust note about -lstdc++fs.
  5924. * doc/xml/manual/using.xml: Remove requirement to link with -lstdc++fs
  5925. for C++17 filesystem library.
  5926. * doc/html/*: Regenerate.
  5927. * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for truncate.
  5928. * config.h.in: Regenerate.
  5929. * config/abi/pre/gnu.ver: Order patterns for filesystem operations
  5930. alphabetically and add missing entries for copy_symlink,
  5931. hard_link_count, rename, and resize_file.
  5932. * configure: Regenerate.
  5933. * src/c++17/fs_ops.cc (resize_file): Remove #if so posix::truncate is
  5934. used unconditionally.
  5935. * src/filesystem/ops-common.h (__gnu_posix::truncate)
  5936. [!_GLIBCXX_HAVE_TRUNCATE]: Provide fallback definition that only
  5937. supports truncating to zero length.
  5938. * testsuite/27_io/filesystem/operations/all.cc: New test.
  5939. * testsuite/27_io/filesystem/operations/resize_file.cc: New test.
  5940. 2019-01-06 Jonathan Wakely <jwakely@redhat.com>
  5941. PR libstdc++/86756
  5942. * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
  5943. lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
  5944. * config.h.in: Regenerate.
  5945. * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
  5946. remaining std::filesystem types and functions.
  5947. * configure: Regenerate.
  5948. * src/c++17/Makefile.am: Add C++17 filesystem sources.
  5949. * src/c++17/Makefile.in: Regenerate.
  5950. * src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
  5951. here, and change name of included file.
  5952. * src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
  5953. here, and change name of included file.
  5954. * src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
  5955. path to dir-common.h.
  5956. * src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
  5957. path to ops-common.h. Disable -Wunused-parameter warnings.
  5958. (internal_file_clock): Define unconditionally.
  5959. [!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
  5960. define.
  5961. (do_copy_file, do_space): Move definitions to ops.common.h.
  5962. (copy, file_size, hard_link_count, last_write_time, space): Only
  5963. perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
  5964. report an error.
  5965. (last_write_time, read_symlink): Remove unused attributes from
  5966. parameters.
  5967. * src/filesystem/Makefile.am: Remove C++17 filesystem sources.
  5968. * src/filesystem/Makefile.in: Regenerate.
  5969. * src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
  5970. * src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
  5971. * src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
  5972. * src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
  5973. * src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
  5974. dummy types and functions instead of using #error.
  5975. * src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
  5976. * src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
  5977. in terms of stat.
  5978. [!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
  5979. (do_copy_file, do_space): Move definitions here from std-ops.cc.
  5980. * src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
  5981. to account for new namespace.
  5982. * testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
  5983. -lstdc++fs from dg-options.
  5984. * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
  5985. * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
  5986. * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
  5987. * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
  5988. * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
  5989. Likewise.
  5990. * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
  5991. * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
  5992. Likewise.
  5993. * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
  5994. * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
  5995. * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
  5996. * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
  5997. * testsuite/27_io/filesystem/operations/create_directories.cc:
  5998. Likewise.
  5999. * testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
  6000. * testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
  6001. * testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
  6002. * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
  6003. * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
  6004. * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
  6005. * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
  6006. * testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
  6007. * testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
  6008. * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
  6009. * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
  6010. * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
  6011. * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
  6012. * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
  6013. * testsuite/27_io/filesystem/operations/space.cc: Likewise.
  6014. * testsuite/27_io/filesystem/operations/status.cc: Likewise.
  6015. * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
  6016. * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
  6017. Likewise.
  6018. * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
  6019. PR libstdc++/86756
  6020. * config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
  6021. typeinfo and vtables less greedy.
  6022. (GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
  6023. * src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
  6024. * src/c++17/Makefile.in: Regenerate.
  6025. * src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
  6026. here, and change name of included file.
  6027. * src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
  6028. * src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
  6029. from sources.
  6030. * src/filesystem/Makefile.in: Regenerate.
  6031. * src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
  6032. * src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
  6033. * testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
  6034. from dg-options and remove dg-require-filesystem-ts.
  6035. * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
  6036. * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
  6037. * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
  6038. * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
  6039. * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
  6040. * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
  6041. * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
  6042. * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
  6043. * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
  6044. * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
  6045. * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
  6046. * testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
  6047. * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
  6048. * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
  6049. * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
  6050. * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
  6051. * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
  6052. * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
  6053. * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
  6054. * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
  6055. * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
  6056. Likewise.
  6057. * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
  6058. * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
  6059. * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
  6060. * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
  6061. * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
  6062. * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
  6063. * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
  6064. * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
  6065. * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
  6066. * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
  6067. * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
  6068. * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
  6069. Likewise.
  6070. * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
  6071. Likewise.
  6072. * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
  6073. Likewise.
  6074. * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
  6075. Likewise.
  6076. * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
  6077. * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
  6078. * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
  6079. * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
  6080. * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
  6081. * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
  6082. * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
  6083. * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
  6084. * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
  6085. * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
  6086. Likewise.
  6087. * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
  6088. * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
  6089. * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
  6090. * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
  6091. * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
  6092. PR libstdc++/87431
  6093. * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
  6094. Check is_trivially_copyable instead of is_scalar.
  6095. (variant::emplace<N, Args>(Args&&...)): If construction of the new
  6096. contained value can throw and its type is trivially copyable then
  6097. construct into a temporary variant and move from it, to provide the
  6098. strong exception safety guarantee.
  6099. (variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
  6100. Likewise.
  6101. * testsuite/20_util/variant/87431.cc: New test.
  6102. * testsuite/20_util/variant/run.cc: Adjust test so that throwing
  6103. conversion causes valueless state.
  6104. PR libstdc++/88607
  6105. * testsuite/17_intro/headers/c++1998/charset.cc: New test.
  6106. * testsuite/17_intro/headers/c++2011/charset.cc: New test.
  6107. * testsuite/17_intro/headers/c++2014/charset.cc: New test.
  6108. * testsuite/17_intro/headers/c++2017/charset.cc: New test.
  6109. * testsuite/17_intro/headers/c++2020/charset.cc: New test.
  6110. 2019-01-05 Jonathan Wakely <jwakely@redhat.com>
  6111. * include/bits/fs_fwd.h (__file_clock): Define new clock.
  6112. (file_time_type): Redefine in terms of __file_clock.
  6113. * src/filesystem/ops-common.h (file_time): Add FIXME comment about
  6114. overflow.
  6115. * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
  6116. internal linkage.
  6117. (internal_file_lock): New helper type for accessing __file_clock.
  6118. (do_copy_file): Use internal_file_lock to convert system time to
  6119. file_time_type.
  6120. (last_write_time(const path&, error_code&)): Likewise.
  6121. (last_write_time(const path&, file_time_type, error_code&)): Likewise.
  6122. 2019-01-04 Jonathan Wakely <jwakely@redhat.com>
  6123. * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
  6124. for const member functions of std::basic_string.
  6125. (GLIBCXX_3.4.26): Export member functions of std::basic_string added
  6126. in C++17.
  6127. * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
  6128. Make non-standard constructor private.
  6129. [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
  6130. Likewise.
  6131. * include/bits/basic_string.tcc (std::string, std::wstring): Declare
  6132. explicit instantiations for C++17 as well as earlier dialects.
  6133. * src/c++17/Makefile.am: Add new source files.
  6134. * src/c++17/Makefile.in: Regenerate.
  6135. * src/c++17/cow-string-inst.cc: New file defining explicit
  6136. instantiations for basic_string member functions added in C++17.
  6137. * src/c++17/string-inst.cc: Likewise.
  6138. * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
  6139. copy/move constructors for old std::basic_string.
  6140. * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
  6141. (basic_string::reference, basic_string::const_reference): Define
  6142. as plain references for C++11 and later.
  6143. (basic_string::basic_string()): Put constructor body outside
  6144. preprocessor conditional groups.
  6145. (basic_string::basic_string(basic_string&&)): Move _Alloc_hider
  6146. instead of copying it.
  6147. (basic_string::basic_string(const basic_string&, const _Alloc&)):
  6148. Define.
  6149. (basic_string::basic_string(basic_string&&, const _Alloc&)):
  6150. Define.
  6151. * include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
  6152. cases for old basic_string.
  6153. * testsuite/21_strings/basic_string/cons/char/8.cc: Test
  6154. allocator-extended constructors unconditionally. Add extra members to
  6155. allocator type when using old string ABI.
  6156. * testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
  6157. for old string ABI.
  6158. * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
  6159. * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
  6160. -fno-inline added to test flags.
  6161. * testsuite/21_strings/basic_string/requirements/
  6162. explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
  6163. * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
  6164. assertion failures with old std::string ABI.
  6165. * include/bits/fs_path.h (path::_List::erase): Replace both overloads
  6166. with ...
  6167. (path::pop_back(), path::_M_erase_from(const_iterator)): New member
  6168. functions that will only erase elements at the end.
  6169. * src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
  6170. (path::_List::_Impl::_M_erase_from(const_iterator)): Define.
  6171. (path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
  6172. of erase(p, end()).
  6173. (path::_List::pop_back()): Define.
  6174. (path::_List::_M_erase_from(const_iterator)): Define.
  6175. (path::operator/=(const path&)): Use pop_back to remove last component
  6176. and _M_erase_from to remove multiple components.
  6177. (path::_M_append(basic_string_view<value_type>)): Likewise.
  6178. (path::operator+=(const path&)): Likewise.
  6179. (path::_M_concat(basic_string_view<value_type>)): Likewise.
  6180. (path::remove_filename()): Likewise.
  6181. (path::lexically_normal()): Use _List::_Impl iterators instead of
  6182. path::iterator. Use pop_back to remove components from the end. Clear
  6183. trailing filename, instead of using erase(const_iterator) to remove
  6184. a non-final component.
  6185. * testsuite/27_io/filesystem/path/generation/normal.cc: Test
  6186. additional cases.
  6187. * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
  6188. * src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
  6189. incorrect treatment of empty filename after trailing slash.
  6190. * testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.
  6191. * testsuite/21_strings/basic_string/modifiers/assign/char/
  6192. move_assign_optim.cc: Avoid spurious failure when -fno-inline added
  6193. to test flags.
  6194. * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
  6195. move_assign_optim.cc: Likewise.
  6196. 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
  6197. Jakub Jelinek <jakub@redhat.com>
  6198. PR libstdc++/88607
  6199. * include/experimental/memory: Replace UTF-8 quote characters.
  6200. * include/std/future: Replace UTF-8 "em dash" characters.
  6201. 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
  6202. PR libstdc++/88607
  6203. * include/bits/forward_list.h: Replace UTF-8 "ligature fi" character.
  6204. * include/debug/forward_list: Likewise.
  6205. * include/experimental/bits/shared_ptr.h: Remove UTF-8 "section sign"
  6206. character.
  6207. * include/experimental/chrono: Likewise.
  6208. * include/experimental/functional: Likewise.
  6209. * include/experimental/ratio: Likewise.
  6210. * include/experimental/system_error: Likewise.
  6211. * include/experimental/tuple: Likewise.
  6212. * include/experimental/type_traits: Likewise.
  6213. * include/parallel/workstealing.h: Replace UTF-8 "en dash" character.
  6214. * include/parallel/multiseq_selection.h: Likewise.
  6215. PR libstdc++/88681
  6216. * config/abi/pre/gnu.ver: Add missing exports.
  6217. * testsuite/22_locale/collate_byname/88681.cc: New test.
  6218. * testsuite/22_locale/time_get/get/char/88681.cc: New test.
  6219. * testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.
  6220. 2019-01-02 Jonathan Wakely <jwakely@redhat.com>
  6221. * testsuite/23_containers/map/cons/deduction.cc: Test deduction from
  6222. initializer_list<value_type> and from input iterator ranges.
  6223. * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
  6224. * testsuite/experimental/string_view/element_access/char/empty.cc:
  6225. Fix year range in copyright header.
  6226. 2019-01-02 Joel Brobecker <brobecker@adacore.com>
  6227. * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
  6228. Fix year range in copyright header.
  6229. 2019-01-01 Jakub Jelinek <jakub@redhat.com>
  6230. Update copyright years.
  6231. Copyright (C) 2019-2020 Free Software Foundation, Inc.
  6232. Copying and distribution of this file, with or without modification,
  6233. are permitted in any medium without royalty provided the copyright
  6234. notice and this notice are preserved.