123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702 |
- This file contains information about GCC releases which has been generated
- automatically from the online release notes. It covers releases of GCC
- (and the former EGCS project) since EGCS 1.0, on the line of development
- that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
- see ONEWS.
- ======================================================================
- http://gcc.gnu.org/gcc-5/index.html
- GCC 5 Release Series
- July 16, 2015
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 5.2.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 5.1 relative to previous releases of GCC.
- Release History
- GCC 5.2
- July 16, 2015 ([2]changes, [3]documentation)
- GCC 5.1
- April 22, 2015 ([4]changes, [5]documentation)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [6]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [7]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [8]GCC project
- web site or contact the [9]GCC development mailing list.
- To obtain GCC please use [10]our mirror sites or [11]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [12]GCC manuals. If that fails, the
- [13]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [14]gcc@gcc.gnu.org. All of [15]our lists have public
- archives.
- Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [17]maintained by the GCC team. Last modified
- 2015-07-16[18].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-5/changes.html
- 3. http://gcc.gnu.org/onlinedocs/5.2.0/
- 4. http://gcc.gnu.org/gcc-5/changes.html
- 5. http://gcc.gnu.org/onlinedocs/5.1.0/
- 6. http://gcc.gnu.org/gcc-5/buildstat.html
- 7. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 8. http://gcc.gnu.org/index.html
- 9. mailto:gcc@gcc.gnu.org
- 10. http://gcc.gnu.org/mirrors.html
- 11. http://gcc.gnu.org/svn.html
- 12. https://gcc.gnu.org/onlinedocs/
- 13. mailto:gcc-help@gcc.gnu.org
- 14. mailto:gcc@gcc.gnu.org
- 15. https://gcc.gnu.org/lists.html
- 16. http://www.fsf.org/
- 17. https://gcc.gnu.org/about.html
- 18. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-5/changes.html
- GCC 5 Release Series
- Changes, New Features, and Fixes
- Caveats
- * The default mode for C is now -std=gnu11 instead of -std=gnu89.
- * The C++ runtime library (libstdc++) uses a new ABI by default (see
- [1]below).
- * The Graphite framework for loop optimizations no longer requires
- the CLooG library, only ISL version 0.14 (recommended) or 0.12.2.
- The installation manual contains more information about
- requirements to build GCC.
- * The non-standard C++0x type traits has_trivial_default_constructor,
- has_trivial_copy_constructor and has_trivial_copy_assign have been
- deprecated and will be removed in a future version. The standard
- C++11 traits is_trivially_default_constructible,
- is_trivially_copy_constructible and is_trivially_copy_assignable
- should be used instead.
- * On AVR, support has been added for the devices
- ATtiny4/5/9/10/20/40. This requires Binutils 2.25 or newer.
- * The AVR port uses a new scheme to describe supported devices: For
- each supported device the compiler provides a device-specific
- [2]spec file. If the compiler is used together with AVR-LibC, this
- requires at least GCC 5.2 and a version of AVR-LibC which
- implements [3]feature #44574.
- General Optimizer Improvements
- * Inter-procedural optimization improvements:
- + An Identical Code Folding (ICF) pass (controlled via
- -fipa-icf) has been added. Compared to the identical code
- folding performed by the Gold linker this pass does not
- require function sections. It also performs merging before
- inlining, so inter-procedural optimizations are aware of the
- code re-use. On the other hand not all unifications performed
- by a linker are doable by GCC which must honor aliasing
- information. During link-time optimization of Firefox, this
- pass unifies about 31000 functions, that is 14% overall.
- + The devirtualization pass was significantly improved by adding
- better support for speculative devirtualization and dynamic
- type detection. About 50% of virtual calls in Firefox are now
- speculatively devirtualized during link-time optimization.
- + A new comdat localization pass allows the linker to eliminate
- more dead code in presence of C++ inline functions.
- + Virtual tables are now optimized. Local aliases are used to
- reduce dynamic linking time of C++ virtual tables on ELF
- targets and data alignment has been reduced to limit data
- segment bloat.
- + A new -fno-semantic-interposition option can be used to
- improve code quality of shared libraries where interposition
- of exported symbols is not allowed.
- + Write-only variables are now detected and optimized out.
- + With profile feedback the function inliner can now bypass
- --param inline-insns-auto and --param inline-insns-single
- limits for hot calls.
- + The IPA reference pass was significantly sped up making it
- feasible to enable -fipa-reference with -fprofile-generate.
- This also solves a bottleneck seen when building Chromium with
- link-time optimization.
- + The symbol table and call-graph API was reworked to C++ and
- simplified.
- + The interprocedural propagation of constants now also
- propagates alignments of pointer parameters. This for example
- means that the vectorizer often does not need to generate loop
- prologues and epilogues to make up for potential
- misalignments.
- * Link-time optimization improvements:
- + One Definition Rule based merging of C++ types has been
- implemented. Type merging enables better devirtualization and
- alias analysis. Streaming extra information needed to merge
- types adds about 2-6% of memory size and object size increase.
- This can be controlled by -flto-odr-type-merging.
- + Command-line optimization and target options are now streamed
- on a per-function basis and honored by the link-time
- optimizer. This change makes link-time optimization a more
- transparent replacement of per-file optimizations. It is now
- possible to build projects that require different optimization
- settings for different translation units (such as -ffast-math,
- -mavx, or -finline). Contrary to earlier GCC releases, the
- optimization and target options passed on the link command
- line are ignored.
- Note that this applies only to those command-line options that
- can be passed to optimize and target attributes. Command-line
- options affecting global code generation (such as -fpic),
- warnings (such as -Wodr), optimizations affecting the way
- static variables are optimized (such as -fcommon), debug
- output (such as -g), and --param parameters can be applied
- only to the whole link-time optimization unit. In these cases,
- it is recommended to consistently use the same options at both
- compile time and link time.
- + GCC bootstrap now uses slim LTO object files.
- + Memory usage and link times were improved. Tree merging was
- sped up, memory usage of GIMPLE declarations and types was
- reduced, and, support for on-demand streaming of variable
- constructors was added.
- * Feedback directed optimization improvements:
- + A new auto-FDO mode uses profiles collected by low overhead
- profiling tools (perf) instead of more expensive program
- instrumentation (via -fprofile-generate). SPEC2006 benchmarks
- on x86-64 improve by 4.7% with auto-FDO and by 7.3% with
- traditional feedback directed optimization.
- + Profile precision was improved in presence of C++ inline and
- extern inline functions.
- + The new gcov-tool utility allows manipulating profiles.
- + Profiles are now more tolerant to source file changes (this
- can be controlled by --param profile-func-internal-id).
- * Register allocation improvements:
- + A new local register allocator (LRA) sub-pass, controlled by
- -flra-remat, implements control-flow sensitive global register
- rematerialization. Instead of spilling and restoring a
- register value, it is recalculated if it is profitable. The
- sub-pass improved SPEC2000 generated code by 1% and 0.5%
- correspondingly on ARM and x86-64.
- + Reuse of the PIC hard register, instead of using a fixed
- register, was implemented on x86/x86-64 targets. This improves
- generated PIC code performance as more hard registers can be
- used. Shared libraries can significantly benefit from this
- optimization. Currently it is switched on only for x86/x86-64
- targets. As RA infrastructure is already implemented for PIC
- register reuse, other targets might follow this in the future.
- + A simple form of inter-procedural RA was implemented. When it
- is known that a called function does not use caller-saved
- registers, save/restore code is not generated around the call
- for such registers. This optimization can be controlled by
- -fipa-ra
- + LRA is now much more effective at generating spills of general
- registers into vector registers instead of memory on
- architectures (e.g., modern Intel processors) where this is
- profitable.
- * UndefinedBehaviorSanitizer gained a few new sanitization options:
- + -fsanitize=float-divide-by-zero: detect floating-point
- division by zero;
- + -fsanitize=float-cast-overflow: check that the result of
- floating-point type to integer conversions do not overflow;
- + -fsanitize=bounds: enable instrumentation of array bounds and
- detect out-of-bounds accesses;
- + -fsanitize=alignment: enable alignment checking, detect
- various misaligned objects;
- + -fsanitize=object-size: enable object size checking, detect
- various out-of-bounds accesses.
- + -fsanitize=vptr: enable checking of C++ member function calls,
- member accesses and some conversions between pointers to base
- and derived classes, detect if the referenced object does not
- have the correct dynamic type.
- * Pointer Bounds Checker, a bounds violation detector, has been added
- and can be enabled via -fcheck-pointer-bounds. Memory accesses are
- instrumented with run-time checks of used pointers against their
- bounds to detect pointer bounds violations (overflows). The Pointer
- Bounds Checker is available on x86/x86-64 GNU/Linux targets with a
- new ISA extension Intel MPX support. See the Pointer Bounds Checker
- [4]Wiki page for more details.
- New Languages and Language specific improvements
- * [5]OpenMP 4.0 specification offloading features are now supported
- by the C, C++, and Fortran compilers. Generic changes:
- + Infrastructure (suitable for any vendor).
- + Testsuite which covers offloading from the [6]OpenMP 4.0
- Examples document.
- Specific for upcoming Intel Xeon Phi products:
- + Run-time library.
- + Card emulator.
- * GCC 5 includes a preliminary implementation of the OpenACC 2.0a
- specification. OpenACC is intended for programming accelerator
- devices such as GPUs. See [7]the OpenACC wiki page for more
- information.
- C family
- * The default setting of the -fdiagnostics-color= command-line option
- is now [8]configurable when building GCC using configuration option
- --with-diagnostics-color=. The possible values are: never, always,
- auto and auto-if-env. The new default auto uses color only when the
- standard error is a terminal. The default in GCC 4.9 was
- auto-if-env, which is equivalent to auto if there is a non-empty
- GCC_COLORS environment variable, and never otherwise. As in GCC
- 4.9, an empty GCC_COLORS variable in the environment will always
- disable colors, no matter what the default is or what command-line
- options are used.
- * A new command-line option -Wswitch-bool has been added for the C
- and C++ compilers, which warns whenever a switch statement has an
- index of boolean type.
- * A new command-line option -Wlogical-not-parentheses has been added
- for the C and C++ compilers, which warns about "logical not" used
- on the left hand side operand of a comparison.
- * A new command-line option -Wsizeof-array-argument has been added
- for the C and C++ compilers, which warns when the sizeof operator
- is applied to a parameter that has been declared as an array in a
- function definition.
- * A new command-line option -Wbool-compare has been added for the C
- and C++ compilers, which warns about boolean expressions compared
- with an integer value different from true/false.
- * Full support for [9]Cilk Plus has been added to the GCC compiler.
- Cilk Plus is an extension to the C and C++ languages to support
- data and task parallelism.
- * A new attribute no_reorder prevents reordering of selected symbols
- against other such symbols or inline assembler. This enables to
- link-time optimize the Linux kernel without having to resort to
- -fno-toplevel-reorder that disables several optimizations.
- * New preprocessor constructs, __has_include and __has_include_next,
- to test the availability of headers have been added.
- This demonstrates a way to include the header <optional> only if it
- is available:
- #ifdef __has_include
- # if __has_include(<optional>)
- # include <optional>
- # define have_optional 1
- # elif __has_include(<experimental/optional>)
- # include <experimental/optional>
- # define have_optional 1
- # define experimental_optional
- # else
- # define have_optional 0
- # endif
- #endif
- The header search paths for __has_include and __has_include_next
- are equivalent to those of the standard directive #include and the
- extension #include_next respectively.
- * A new built-in function-like macro to determine the existence of an
- attribute, __has_attribute, has been added. The equivalent built-in
- macro __has_cpp_attribute was added to C++ to support
- [10]Feature-testing recommendations for C++. The macro
- __has_attribute is added to all C-like languages as an extension:
- int
- #ifdef __has_attribute
- # if __has_attribute(__noinline__)
- __attribute__((__noinline__))
- # endif
- #endif
- foo(int x);
- If an attribute exists, a nonzero constant integer is returned. For
- standardized C++ attributes a date is returned, otherwise the
- constant returned is 1. Both __has_attribute and
- __has_cpp_attribute will add underscores to an attribute name if
- necessary to resolve the name. For C++11 and onwards the attribute
- may be scoped.
- * A new set of built-in functions for arithmetics with overflow
- checking has been added: __builtin_add_overflow,
- __builtin_sub_overflow and __builtin_mul_overflow and for
- compatibility with clang also other variants. These builtins have
- two integral arguments (which don't need to have the same type),
- the arguments are extended to infinite precision signed type, +, -
- or * is performed on those, and the result is stored in an integer
- variable pointed to by the last argument. If the stored value is
- equal to the infinite precision result, the built-in functions
- return false, otherwise true. The type of the integer variable that
- will hold the result can be different from the types of the first
- two arguments. The following snippet demonstrates how this can be
- used in computing the size for the calloc function:
- void *
- calloc (size_t x, size_t y)
- {
- size_t sz;
- if (__builtin_mul_overflow (x, y, &sz))
- return NULL;
- void *ret = malloc (sz);
- if (ret) memset (res, 0, sz);
- return ret;
- }
- On e.g. i?86 or x86-64 the above will result in a mul instruction
- followed by a jump on overflow.
- * The option -fextended-identifiers is now enabled by default for
- C++, and for C99 and later C versions. Various bugs in the
- implementation of extended identifiers have been fixed.
- C
- * The default mode has been changed to -std=gnu11.
- * A new command-line option -Wc90-c99-compat has been added to warn
- about features not present in ISO C90, but present in ISO C99.
- * A new command-line option -Wc99-c11-compat has been added to warn
- about features not present in ISO C99, but present in ISO C11.
- * It is possible to disable warnings about conversions between
- pointers that have incompatible types via a new warning option
- -Wno-incompatible-pointer-types; warnings about implicit
- incompatible integer to pointer and pointer to integer conversions
- via a new warning option -Wno-int-conversion; and warnings about
- qualifiers on pointers being discarded via a new warning option
- -Wno-discarded-qualifiers.
- * To allow proper use of const qualifiers with multidimensional
- arrays, GCC will not warn about incompatible pointer types anymore
- for conversions between pointers to arrays with and without const
- qualifier (except when using -pedantic). Instead, a new warning is
- emitted only if the const qualifier is lost. This can be controlled
- with a new warning option -Wno-discarded-array-qualifiers.
- * The C front end now generates more precise caret diagnostics.
- * The -pg command-line option now only affects the current file in an
- LTO build.
- C++
- * G++ now supports [11]C++14 variable templates.
- * -Wnon-virtual-dtor doesn't warn anymore for final classes.
- * Excessive template instantiation depth is now a fatal error. This
- prevents excessive diagnostics that usually do not help to identify
- the problem.
- * G++ and libstdc++ now implement the feature-testing macros from
- [12]Feature-testing recommendations for C++.
- * G++ now allows typename in a template template parameter.
- template<template<typename> typename X> struct D; // OK
- * G++ now supports [13]C++14 aggregates with non-static data member
- initializers.
- struct A { int i, j = i; };
- A a = { 42 }; // a.j is also 42
- * G++ now supports [14]C++14 extended constexpr.
- constexpr int f (int i)
- {
- int j = 0;
- for (; i > 0; --i)
- ++j;
- return j;
- }
- constexpr int i = f(42); // i is 42
- * G++ now supports the [15]C++14 sized deallocation functions.
- void operator delete (void *, std::size_t) noexcept;
- void operator delete[] (void *, std::size_t) noexcept;
- * A new One Definition Rule violation warning (controlled by -Wodr)
- detects mismatches in type definitions and virtual table contents
- during link-time optimization.
- * New warnings -Wsuggest-final-types and -Wsuggest-final-methods help
- developers to annotate programs with final specifiers (or anonymous
- namespaces) to improve code generation. These warnings can be used
- at compile time, but they are more useful in combination with
- link-time optimization.
- * G++ no longer supports [16]N3639 variable length arrays, as they
- were removed from the C++14 working paper prior to ratification.
- GNU VLAs are still supported, so VLA support is now the same in
- C++14 mode as in C++98 and C++11 modes.
- * G++ now allows passing a non-trivially-copyable class via C
- varargs, which is conditionally-supported with
- implementation-defined semantics in the standard. This uses the
- same calling convention as a normal value parameter.
- * G++ now defaults to -fabi-version=9 and -fabi-compat-version=2. So
- various mangling bugs are fixed, but G++ will still emit aliases
- with the old, wrong mangling where feasible. -Wabi=2 will warn
- about differences between ABI version 2 and the current setting.
- * G++ 5.2 fixes the alignment of std::nullptr_t. Most code is likely
- to be unaffected, but -Wabi=8 will warn about a non-static data
- member with type std::nullptr_t which changes position due to this
- change.
- Runtime Library (libstdc++)
- * A [17]Dual ABI is provided by the library. A new ABI is enabled by
- default. The old ABI is still supported and can be used by defining
- the macro _GLIBCXX_USE_CXX11_ABI to 0 before including any C++
- standard library headers.
- * A new implementation of std::string is enabled by default, using
- the small string optimization instead of copy-on-write reference
- counting.
- * A new implementation of std::list is enabled by default, with an
- O(1) size() function;
- * [18]Full support for C++11, including the following new features:
- + std::deque and std::vector<bool> meet the allocator-aware
- container requirements;
- + movable and swappable iostream classes;
- + support for std::align and std::aligned_union;
- + type traits std::is_trivially_copyable,
- std::is_trivially_constructible, std::is_trivially_assignable
- etc.;
- + I/O manipulators std::put_time, std::get_time, std::hexfloat
- and std::defaultfloat;
- + generic locale-aware std::isblank;
- + locale facets for Unicode conversion;
- + atomic operations for std::shared_ptr;
- + std::notify_all_at_thread_exit() and functions for making
- futures ready at thread exit.
- * Support for the C++11 hexfloat manipulator changes how the num_put
- facet formats floating point types when
- ios_base::fixed|ios_base::scientific is set in a stream's fmtflags.
- This change affects all language modes, even though the C++98
- standard gave no special meaning to that combination of flags. To
- prevent the use of hexadecimal notation for floating point types
- use str.unsetf(std::ios_base::floatfield) to clear the relevant
- bits in str.flags().
- * [19]Full experimental support for C++14, including the following
- new features:
- + std::is_final type trait;
- + heterogeneous comparison lookup in associative containers.
- + global functions cbegin, cend, rbegin, rend, crbegin, and
- crend for range access to containers, arrays and initializer
- lists.
- * [20]Improved experimental support for the Library Fundamentals TS,
- including:
- + class std::experimental::any;
- + function template std::experimental::apply;
- + function template std::experimental::sample;
- + function template std::experimental::search and related
- searcher types;
- + variable templates for type traits;
- + function template std::experimental::not_fn.
- * New random number distributions logistic_distribution and
- uniform_on_sphere_distribution as extensions.
- * [21]GDB Xmethods for containers and std::unique_ptr.
- Fortran
- * Compatibility notice:
- + The version of the module files (.mod) has been incremented.
- + For free-form source files, [22]-Werror=line-truncation is now
- enabled by default; note that comments exceeding the line
- length are not diagnosed. (For fixed-form source code, the
- same warning is available but turned off by default, such that
- excess characters are ignored. -ffree-line-length-n and
- -ffixed-line-length-n can be used to modify the default line
- lengths of 132 and 72 columns, respectively.)
- + The -Wtabs option is now more sensible: with -Wtabs the
- compiler warns if it encounters tabs and with -Wno-tabs this
- warning is turned off. Before, -Wno-tabs warned and -Wtabs
- turned the warning off. As before, the warning is also enabled
- by -Wall, -pedantic and the f95, f2003, f2008 and f2008ts
- options of -std=.
- * Incomplete support for colorizing diagnostics emitted by gfortran
- has been added. The option [23]-fdiagnostics-color controls when
- color is used in diagnostics. The default value of this option can
- be [24]configured when building GCC. The GCC_COLORS environment
- variable can be used to customize the colors or disable coloring
- completely. Sample diagnostics output:
- $ gfortran -fdiagnostics-color=always -Wuse-without-only test.f90
- test.f90:6:1:
- 0 continue
- 1
- Error: Zero is not a valid statement label at (1)
- test.f90:9:6:
- USE foo
- 1
- Warning: USE statement at (1) has no ONLY qualifier [-Wuse-without-only]
- * The -Wuse-without-only option has been added to warn when a USE
- statement has no ONLY qualifier and thus implicitly imports all
- public entities of the used module.
- * Formatted READ and WRITE statements now work correctly in
- locale-aware programs. For more information and potential caveats,
- see [25]Section 5.3 Thread-safety of the runtime library in the
- manual.
- * [26]Fortran 2003:
- + The intrinsic IEEE modules (IEEE_FEATURES, IEEE_EXCEPTIONS and
- IEEE_ARITHMETIC) are now supported.
- * [27]Fortran 2008:
- + [28]Coarrays: Full experimental support of Fortran 2008's
- coarrays with -fcoarray=lib except for allocatable/pointer
- components of derived-type coarrays. GCC currently only ships
- with a single-image library (libcaf_single), but multi-image
- support based on MPI and GASNet is provided by the libraries
- of the [29]OpenCoarrays project.
- * TS18508 Additional Parallel Features in Fortran:
- + Support for the collective intrinsic subroutines CO_MAX,
- CO_MIN, CO_SUM, CO_BROADCAST and CO_REDUCE has been added,
- including -fcoarray=lib support.
- + Support for the new atomic intrinsics has been added,
- including -fcoarray=lib support.
- * Fortran 2015:
- + Support for IMPLICIT NONE (external, type).
- + ERROR STOP is now permitted in pure procedures.
- Go
- * GCC 5 provides a complete implementation of the Go 1.4.2 release.
- * Building GCC 5 with Go enabled will install two new programs:
- [30]go and [31]gofmt.
- libgccjit
- New in GCC 5 is the ability to build GCC as a shared library for
- embedding in other processes (such as interpreters), suitable for
- Just-In-Time compilation to machine code.
- The shared library has a [32]C API and a [33]C++ wrapper API providing
- some "syntactic sugar". There are also bindings available from 3rd
- parties for [34]Python and for [35]D.
- For example, this library can be used by interpreters for [36]compiling
- functions from bytecode to machine code.
- The library can also be used for ahead-of-time compilation, enabling
- GCC to be plugged into a pre-existing frontend. An example of using
- this to build a compiler for an esoteric language we'll refer to as
- "brainf" can be seen [37]here.
- libgccjit is licensed under the GPLv3 (or at your option, any later
- version)
- It should be regarded as experimental at this time.
- New Targets and Target Specific Improvements
- AArch64
- * Code generation for the ARM Cortex-A57 processor has been improved.
- A more accurate instruction scheduling model for the processor is
- now used, and a number of compiler tuning parameters have been set
- to offer increased performance when compiling with -mcpu=cortex-a57
- or -mtune=cortex-a57.
- * A workaround for the ARM Cortex-A53 erratum 835769 has been added
- and can be enabled by giving the -mfix-cortex-a53-835769 option.
- Alternatively it can be enabled by default by configuring GCC with
- the --enable-fix-cortex-a53-835769 option.
- * The optional cryptographic extensions to the ARMv8-A architecture
- are no longer enabled by default when specifying the
- -mcpu=cortex-a53, -mcpu=cortex-a57 or -mcpu=cortex-a57.cortex-a53
- options. To enable these extensions add +crypto to the value of
- -mcpu or -march e.g. -mcpu=cortex-a53+crypto.
- * Support has been added for the following processors (GCC
- identifiers in parentheses): ARM Cortex-A72 (cortex-a72) and
- initial support for its big.LITTLE combination with the ARM
- Cortex-A53 (cortex-a72.cortex-a53), Cavium ThunderX (thunderx),
- Applied Micro X-Gene 1 (xgene1), and Samsung Exynos M1 (exynos-m1).
- The GCC identifiers can be used as arguments to the -mcpu or -mtune
- options, for example: -mcpu=xgene1 or -mtune=cortex-a72.cortex-a53.
- Using -mcpu=cortex-a72 requires a version of GNU binutils that has
- support for the Cortex-A72.
- * The transitional options -mlra and -mno-lra have been removed. The
- AArch64 backend now uses the local register allocator (LRA) only.
- ARM
- * Thumb-1 assembly code is now generated in unified syntax. The new
- option -masm-syntax-unified specifies whether inline assembly code
- is using unified syntax. By default the option is off which means
- non-unified syntax is used. However this is subject to change in
- future releases. Eventually the non-unified syntax will be
- deprecated.
- * It is now a configure-time error to use the --with-cpu configure
- option with either of --with-tune or --with-arch.
- * Code generation for the ARM Cortex-A57 processor has been improved.
- A more accurate instruction scheduling model for the processor is
- now used, and a number of compiler tuning parameters have been set
- to offer increased performance when compiling with -mcpu=cortex-a57
- or -mtune=cortex-a57.
- * Support has been added for the following processors (GCC
- identifiers in parentheses): ARM Cortex-A17 (cortex-a17) and
- initial support for its big.LITTLE combination with the ARM
- Cortex-A7 (cortex-a17.cortex-a7), ARM Cortex-A72 (cortex-a72) and
- initial support for its big.LITTLE combination with the ARM
- Cortex-A53 (cortex-a72.cortex-a53), ARM Cortex-M7 (cortex-m7),
- Applied Micro X-Gene 1 (xgene1), and Samsung Exynos M1 (exynos-m1).
- The GCC identifiers can be used as arguments to the -mcpu or -mtune
- options, for example: -mcpu=xgene1 or -mtune=cortex-a72.cortex-a53.
- Using -mcpu=cortex-a72 requires a version of GNU binutils that has
- support for the Cortex-A72.
- * The deprecated option -mwords-little-endian has been removed.
- * The options -mapcs, -mapcs-frame, -mtpcs-frame and
- -mtpcs-leaf-frame which are only applicable to the old ABI have
- been deprecated.
- * The transitional options -mlra and -mno-lra have been removed. The
- ARM backend now uses the local register allocator (LRA) only.
- AVR
- * The compiler no more supports individual devices like ATmega8.
- Specifying, say, -mmcu=atmega8 triggers the usage of the
- device-specific [38]spec file specs-atmega8 which is part of the
- installation and describes options for the sub-processes like
- compiler proper, assembler and linker. You can add support for a
- new device -mmcu=mydevice as follows:
- 1. In an empty directory /someplace, create a new directory
- device-specs.
- 2. Copy a device spec file from the installed device-specs
- folder, follow the comments in that file and then save it as
- /someplace/device-specs/specs-mydevice.
- 3. Add -B /someplace -mmcu=mydevice to the compiler's
- command-line options. Notice that /someplace must specify an
- absolute path and that mydevice must not start with "avr".
- 4. Provided you have a device-specific library libmydevice.a
- available, you can put it at /someplace, dito for a
- device-specific startup file crtmydevice.o.
- The contents of the device spec files depend on the compiler's
- configuration, in particular on --with-avrlibc=no and whether or
- not it is configured for RTEMS.
- * A new command-line option -nodevicelib has been added. It prevents
- the compiler from linking against AVR-LibC's device-specific
- library libdevice.a.
- * The following three command-line options have been added:
- -mrmw
- Set if the device supports the read-modify-write
- instructions LAC, LAS, LAT and XCH.
- -mn-flash=size
- Specify the flash size of the device in units of 64 KiB,
- rounded up to the next integer as needed. This option
- affects the availability of the [39]AVR address-spaces.
- -mskip-bug
- Set if the device is affected by the respective silicon
- bug.
- In general, you don't need to set these options by hand. The new
- device-specific spec file will set them as needed.
- IA-32/x86-64
- * New ISA extensions support [40]AVX-512{BW,DQ,VL,IFMA,VBMI} of
- Intel's CPU codenamed Skylake Server was added to GCC. That
- includes inline assembly support, new intrinsics, and basic
- autovectorization. These new AVX-512 extensions are available via
- the following GCC switches: AVX-512 Vector Length EVEX feature:
- -mavx512vl, AVX-512 Byte and Word instructions: -mavx512bw, AVX-512
- Dword and Qword instructions: -mavx512dq, AVX-512 FMA-52
- instructions: -mavx512ifma and for AVX-512 Vector Bit Manipulation
- Instructions: -mavx512vbmi.
- * New ISA extensions support [41]Intel MPX was added to GCC. This new
- extension is available via the -mmpx compiler switch. Intel MPX is
- a set of processor features which, with compiler, run-time library
- and OS support, brings increased robustness to software by run-time
- checking pointer references against their bounds. In GCC Intel MPX
- is supported by Pointer Bounds Checker and libmpx run-time
- libraries.
- * The new -mrecord-mcount option for -pg generates a Linux kernel
- style table of pointers to mcount or __fentry__ calls at the
- beginning of functions. The new -mnop-mcount option in addition
- also generates nops in place of the __fentry__ or mcount call, so
- that a call per function can be later patched in. This can be used
- for low overhead tracing or hot code patching.
- * The new -malign-data option controls how GCC aligns variables.
- -malign-data=compat uses increased alignment compatible with GCC
- 4.8 and earlier, -malign-data=abi uses alignment as specified by
- the psABI, and -malign-data=cacheline uses increased alignment to
- match the cache line size. -malign-data=compat is the default.
- * The new -mskip-rax-setup option skips setting up the RAX register
- when SSE is disabled and there are no variable arguments passed in
- vector registers. This can be used to optimize the Linux kernel.
- MIPS
- * MIPS Releases 3 and 5 are now directly supported. Use the
- command-line options -mips32r3, -mips64r3, -mips32r5 and -mips64r5
- to enable code-generation for these processors.
- * The Imagination P5600 processor is now supported using the
- -march=p5600 command-line option.
- * The Cavium Octeon3 processor is now supported using the
- -march=octeon3 command-line option.
- * MIPS Release 6 is now supported using the -mips32r6 and -mips64r6
- command-line options.
- * The o32 ABI has been modified and extended. The o32 64-bit
- floating-point register support is now obsolete and has been
- removed. It has been replaced by three ABI extensions FPXX, FP64A,
- and FP64. The meaning of the -mfp64 command-line option has
- changed. It is now used to enable the FP64A and FP64 ABI
- extensions.
- + The FPXX extension requires that code generated to access
- double-precision values use even-numbered registers. Code that
- adheres to this extension is link-compatible with all other
- o32 double-precision ABI variants and will execute correctly
- in all hardware FPU modes. The command-line options -mabi=32
- -mfpxx can be used to enable this extension. MIPS II is the
- minimum processor required.
- + The o32 FP64A extension requires that floating-point registers
- be 64-bit and odd-numbered single-precision registers are not
- allowed. Code that adheres to the o32 FP64A variant is
- link-compatible with all other o32 double-precision ABI
- variants. The command-line options -mabi=32 -mfp64
- -mno-odd-spreg can be used to enable this extension. MIPS32R2
- is the minimum processor required.
- + The o32 FP64 extension also requires that floating-point
- registers be 64-bit, but permits the use of single-precision
- registers. Code that adheres to the o32 FP64 variant is
- link-compatible with o32 FPXX and o32 FP64A variants only,
- i.e. it is not compatible with the original o32
- double-precision ABI. The command-line options -mabi=32 -mfp64
- -modd-spreg can be used to enable this extension. MIPS32R2 is
- the minimum processor required.
- The new ABI variants can be enabled by default using the configure
- time options --with-fp-32=[32|xx|64] and --with(out)-odd-sp-reg-32.
- It is strongly recommended that all vendors begin to set o32 FPXX
- as the default ABI. This will be required to run the generated code
- on MIPSR5 cores in conjunction with future MIPS SIMD (MSA) code and
- MIPSR6 cores.
- * GCC will now pass all floating-point options to the assembler if
- GNU binutils 2.25 is used. As a result, any inline assembly code
- that uses hard-float instructions should be amended to include a
- .set directive to override the global assembler options when
- compiling for soft-float targets.
- NDS32
- * The variadic function ABI implementation is now compatible with
- past Andes toolchains where the caller uses registers to pass
- arguments and the callee is in charge of pushing them on stack.
- * The options -mforce-fp-as-gp, -mforbid-fp-as-gp, and -mex9 have
- been removed since they are not yet available in the nds32 port of
- GNU binutils.
- * A new option -mcmodel=[small|medium|large] supports varied code
- models on code generation. The -mgp-direct option became
- meaningless and can be discarded.
- RX
- * A new command line option -mno-allow-string-insns can be used to
- disable the generation of the SCMPU, SMOVU, SMOVB, SMOVF, SUNTIL,
- SWHILE and RMPA instructions. An erratum released by Renesas shows
- that it is unsafe to use these instructions on addresses within the
- I/O space of the processor. The new option can be used when the
- programmer is concerned that the I/O space might be accessed. The
- default is still to enable these instructions.
- SH
- * The compiler will now pass the appropriate --isa= option to the
- assembler.
- * The default handling for the GBR has been changed from call
- clobbered to call preserved. The old behavior can be reinstated by
- specifying the option -fcall-used-gbr.
- * Support for the SH4A fpchg instruction has been added which will be
- utilized when switching between single and double precision FPU
- modes.
- * The compiler no longer uses the __fpscr_values array for switching
- between single and double FPU precision modes on non-SH4A targets.
- Instead mode switching will now be performed by storing, modifying
- and reloading the FPSCR, so that other FPSCR bits are preserved
- across mode switches. The __fpscr_values array that is defined in
- libgcc is still present for backwards compatibility, but it will
- not be referenced by compiler generated code anymore.
- * New builtin functions __builtin_sh_get_fpscr and
- __builtin_sh_set_fpscr have been added. The __builtin_sh_set_fpscr
- function will mask the specified bits in such a way that the SZ, PR
- and FR mode bits will be preserved, while changing the other bits.
- These new functions do not reference the __fpscr_values array. The
- old functions __set_fpscr and __get_fpscr in libgcc which access
- the __fpscr_values array are still present for backwards
- compatibility, but their usage is highly discouraged.
- * Some improvements to code generated for __atomic built-in
- functions.
- * When compiling for SH2E the compiler will no longer force the usage
- of delay slots for conditional branch instructions bt and bf. The
- old behavior can be reinstated (e.g. to work around a hardware bug
- in the original SH7055) by specifying the new option
- -mcbranch-force-delay-slot.
- Operating Systems
- DragonFly BSD
- * GCC now supports the DragonFly BSD operating system.
- FreeBSD
- * GCC now supports the FreeBSD operating system for the arm port
- through the arm*-*-freebsd* target triplets.
- VxWorks MILS
- * GCC now supports the MILS (Multiple Independent Levels of Security)
- variant of WindRiver's VxWorks operating system for PowerPC
- targets.
- Other significant improvements
- * The gcc-ar, gcc-nm, gcc-ranlib wrappers now understand a -B option
- to set the compiler to use.
- * When the new command-line option -freport-bug is used, GCC
- automatically generates a developer-friendly reproducer whenever an
- internal compiler error is encountered.
- GCC 5.2
- This is the [42]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 5.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- Target Specific Changes
- IA-32/x86-64
- * Support for new AMD instructions monitorx and mwaitx has been
- added. This includes new intrinsic and built-in support. It is
- enabled through option -mmwaitx. The instructions monitorx and
- mwaitx implement the same functionality as the old monitor and
- mwait instructions. In addition mwaitx adds a configurable timer.
- The timer value is received as third argument and stored in
- register %ebx.
- For questions related to the use of GCC, please consult these web
- pages and the [43]GCC manuals. If that fails, the
- [44]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [45]gcc@gcc.gnu.org. All of [46]our lists have public
- archives.
- Copyright (C) [47]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [48]maintained by the GCC team. Last modified
- 2015-07-16[49].
- References
- 1. http://gcc.gnu.org/gcc-5/changes.html#libstdcxx
- 2. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
- 3. https://savannah.nongnu.org/bugs/?44574
- 4. https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
- 5. http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf
- 6. http://openmp.org/mp-documents/OpenMP4.0.0.Examples.pdf
- 7. https://gcc.gnu.org/wiki/OpenACC
- 8. https://gcc.gnu.org/install/configure.html
- 9. https://www.cilkplus.org/
- 10. http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
- 11. http://gcc.gnu.org/projects/cxx1y.html
- 12. http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
- 13. http://gcc.gnu.org/projects/cxx1y.html
- 14. http://gcc.gnu.org/projects/cxx1y.html
- 15. http://gcc.gnu.org/projects/cxx1y.html
- 16. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html
- 17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
- 18. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2011
- 19. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
- 20. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
- 21. https://sourceware.org/gdb/current/onlinedocs/gdb/Xmethods-In-Python.html
- 22. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Error-and-Warning-Options.html
- 23. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Language-Independent-Options.html
- 24. https://gcc.gnu.org/install/configure.html
- 25. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Thread-safety-of-the-runtime-library.html
- 26. https://gcc.gnu.org/wiki/Fortran2003Status
- 27. https://gcc.gnu.org/wiki/Fortran2008Status
- 28. https://gcc.gnu.org/wiki/Coarray
- 29. http://www.opencoarrays.org/
- 30. http://golang.org/cmd/go
- 31. http://golang.org/cmd/gofmt
- 32. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/index.html
- 33. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/cp/index.html
- 34. https://github.com/davidmalcolm/pygccjit
- 35. https://github.com/ibuclaw/gccjitd
- 36. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial04.html
- 37. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial05.html
- 38. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
- 39. https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html
- 40. https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf
- 41. https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf
- 42. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.2.0
- 43. https://gcc.gnu.org/onlinedocs/
- 44. mailto:gcc-help@gcc.gnu.org
- 45. mailto:gcc@gcc.gnu.org
- 46. https://gcc.gnu.org/lists.html
- 47. http://www.fsf.org/
- 48. https://gcc.gnu.org/about.html
- 49. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.9/index.html
- GCC 4.9 Release Series
- June 26, 2015
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.9.3.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 4.9.2 relative to previous releases of GCC.
- Release History
- GCC 4.9.3
- June 26, 2015 ([2]changes, [3]documentation)
- GCC 4.9.2
- October 30, 2014 ([4]changes, [5]documentation)
- GCC 4.9.1
- July 16, 2014 ([6]changes, [7]documentation)
- GCC 4.9.0
- April 22, 2014 ([8]changes, [9]documentation)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [10]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [11]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [12]GCC
- project web site or contact the [13]GCC development mailing list.
- To obtain GCC please use [14]our mirror sites or [15]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [16]GCC manuals. If that fails, the
- [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [18]gcc@gcc.gnu.org. All of [19]our lists have public
- archives.
- Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [21]maintained by the GCC team. Last modified
- 2015-06-26[22].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-4.9/changes.html
- 3. http://gcc.gnu.org/onlinedocs/4.9.3/
- 4. http://gcc.gnu.org/gcc-4.9/changes.html
- 5. http://gcc.gnu.org/onlinedocs/4.9.2/
- 6. http://gcc.gnu.org/gcc-4.9/changes.html
- 7. http://gcc.gnu.org/onlinedocs/4.9.1/
- 8. http://gcc.gnu.org/gcc-4.9/changes.html
- 9. https://gcc.gnu.org/onlinedocs/4.9.0/
- 10. http://gcc.gnu.org/gcc-4.9/buildstat.html
- 11. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 12. http://gcc.gnu.org/index.html
- 13. mailto:gcc@gcc.gnu.org
- 14. http://gcc.gnu.org/mirrors.html
- 15. http://gcc.gnu.org/svn.html
- 16. https://gcc.gnu.org/onlinedocs/
- 17. mailto:gcc-help@gcc.gnu.org
- 18. mailto:gcc@gcc.gnu.org
- 19. https://gcc.gnu.org/lists.html
- 20. http://www.fsf.org/
- 21. https://gcc.gnu.org/about.html
- 22. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.9/changes.html
- GCC 4.9 Release Series
- Changes, New Features, and Fixes
- Caveats
- * The mudflap run time checker has been removed. The mudflap options
- remain, but do nothing.
- * Support for a number of older systems and recently unmaintained or
- untested target ports of GCC has been declared obsolete in GCC 4.9.
- Unless there is activity to revive them, the next release of GCC
- will have their sources permanently removed.
- The following ports for individual systems on particular
- architectures have been obsoleted:
- + Solaris 9 (*-*-solaris2.9). Details can be found in the
- [1]announcement.
- * On AArch64, the singleton vector types int64x1_t, uint64x1_t and
- float64x1_t exported by arm_neon.h are defined to be the same as
- their base types. This results in incorrect application of
- parameter passing rules to arguments of types int64x1_t and
- uint64x1_t, with respect to the AAPCS64 ABI specification. In
- addition, names of C++ functions with parameters of these types
- (including float64x1_t) are not mangled correctly. The current
- typedef declarations also unintentionally allow implicit casting
- between singleton vector types and their base types. These issues
- will be resolved in a near future release. See [2]PR60825 for more
- information.
- More information on porting to GCC 4.9 from previous versions of GCC
- can be found in the [3]porting guide for this release.
- General Optimizer Improvements
- * AddressSanitizer, a fast memory error detector, is now available on
- ARM.
- * UndefinedBehaviorSanitizer (ubsan), a fast undefined behavior
- detector, has been added and can be enabled via
- -fsanitize=undefined. Various computations will be instrumented to
- detect undefined behavior at runtime. UndefinedBehaviorSanitizer is
- currently available for the C and C++ languages.
- * Link-time optimization (LTO) improvements:
- + Type merging was rewritten. The new implementation is
- significantly faster and uses less memory.
- + Better partitioning algorithm resulting in less streaming
- during link time.
- + Early removal of virtual methods reduces the size of object
- files and improves link-time memory usage and compile time.
- + Function bodies are now loaded on-demand and released early
- improving overall memory usage at link time.
- + C++ hidden keyed methods can now be optimized out.
- + When using a linker plugin, compiling with the -flto option
- now generates slim object files (.o) which only contain
- intermediate language representation for LTO. Use
- -ffat-lto-objects to create files which contain additionally
- the object code. To generate static libraries suitable for LTO
- processing, use gcc-ar and gcc-ranlib; to list symbols from a
- slim object file use gcc-nm. (This requires that ar, ranlib
- and nm have been compiled with plugin support.)
- Memory usage building Firefox with debug enabled was reduced from
- 15GB to 3.5GB; link time from 1700 seconds to 350 seconds.
- * Inter-procedural optimization improvements:
- + New type inheritance analysis module improving
- devirtualization. Devirtualization now takes into account
- anonymous name-spaces and the C++11 final keyword.
- + New speculative devirtualization pass (controlled by
- -fdevirtualize-speculatively.
- + Calls that were speculatively made direct are turned back to
- indirect where direct call is not cheaper.
- + Local aliases are introduced for symbols that are known to be
- semantically equivalent across shared libraries improving
- dynamic linking times.
- * Feedback directed optimization improvements:
- + Profiling of programs using C++ inline functions is now more
- reliable.
- + New time profiling determines typical order in which functions
- are executed.
- + A new function reordering pass (controlled by
- -freorder-functions) significantly reduces startup time of
- large applications. Until binutils support is completed, it is
- effective only with link-time optimization.
- + Feedback driven indirect call removal and devirtualization now
- handle cross-module calls when link-time optimization is
- enabled.
- New Languages and Language specific improvements
- * Version 4.0 of the [4]OpenMP specification is now supported in the
- C and C++ compilers and starting with the 4.9.1 release also in the
- Fortran compiler. The new -fopenmp-simd option can be used to
- enable OpenMP's SIMD directives while ignoring other OpenMP
- directives. The new [5]-fsimd-cost-model= option permits to tune
- the vectorization cost model for loops annotated with OpenMP and
- Cilk Plus simd directives. -Wopenmp-simd warns when the current
- cost model overrides simd directives set by the user.
- * The -Wdate-time option has been added for the C, C++ and Fortran
- compilers, which warns when the __DATE__, __TIME__ or __TIMESTAMP__
- macros are used. Those macros might prevent bit-wise-identical
- reproducible compilations.
- Ada
- * GNAT switched to Ada 2012 instead of Ada 2005 by default.
- C family
- * Support for colorizing diagnostics emitted by GCC has been added.
- The [6]-fdiagnostics-color=auto will enable it when outputting to
- terminals, -fdiagnostics-color=always unconditionally. The
- GCC_COLORS environment variable can be used to customize the colors
- or disable coloring. If GCC_COLORS variable is present in the
- environment, the default is -fdiagnostics-color=auto, otherwise
- -fdiagnostics-color=never.
- Sample diagnostics output:
- $ g++ -fdiagnostics-color=always -S -Wall test.C
- test.C: In function `int foo()':
- test.C:1:14: warning: no return statement in function returning non-void [-W
- return-type]
- int foo () { }
- ^
- test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use
- -ftemplate-depth= to increase the maximum) instantiating `struct X<100>'
- template <int N> struct X { static const int value = X<N-1>::value; }; temp
- late struct X<1000>;
- ^
- test.C:2:46: recursively required from `const int X<999>::value'
- test.C:2:46: required from `const int X<1000>::value'
- test.C:2:88: required from here
- test.C:2:46: error: incomplete type `X<100>' used in nested name specifier
- * With the new [7]#pragma GCC ivdep, the user can assert that there
- are no loop-carried dependencies which would prevent concurrent
- execution of consecutive iterations using SIMD (single instruction
- multiple data) instructions.
- * Support for [8]Cilk Plus has been added and can be enabled with the
- -fcilkplus option. Cilk Plus is an extension to the C and C++
- languages to support data and task parallelism. The present
- implementation follows ABI version 1.2; all features but _Cilk_for
- have been implemented.
- C
- * ISO C11 atomics (the _Atomic type specifier and qualifier and the
- <stdatomic.h> header) are now supported.
- * ISO C11 generic selections (_Generic keyword) are now supported.
- * ISO C11 thread-local storage (_Thread_local, similar to GNU C
- __thread) is now supported.
- * ISO C11 support is now at a similar level of completeness to ISO
- C99 support: substantially complete modulo bugs, extended
- identifiers (supported except for corner cases when
- -fextended-identifiers is used), floating-point issues (mainly but
- not entirely relating to optional C99 features from Annexes F and
- G) and the optional Annexes K (Bounds-checking interfaces) and L
- (Analyzability).
- * A new C extension __auto_type provides a subset of the
- functionality of C++11 auto in GNU C.
- C++
- * The G++ implementation of [9]C++1y return type deduction for normal
- functions has been updated to conform to [10]N3638, the proposal
- accepted into the working paper. Most notably, it adds
- decltype(auto) for getting decltype semantics rather than the
- template argument deduction semantics of plain auto:
- int& f();
- auto i1 = f(); // int
- decltype(auto) i2 = f(); // int&
- * G++ supports [11]C++1y lambda capture initializers:
- [x = 42]{ ... };
- Actually, they have been accepted since GCC 4.5, but now the
- compiler doesn't warn about them with -std=c++1y, and supports
- parenthesized and brace-enclosed initializers as well.
- * G++ supports [12]C++1y variable length arrays. G++ has supported
- GNU/C99-style VLAs for a long time, but now additionally supports
- initializers and lambda capture by reference. In C++1y mode G++
- will complain about VLA uses that are not permitted by the draft
- standard, such as forming a pointer to VLA type or applying sizeof
- to a VLA variable. Note that it now appears that VLAs will not be
- part of C++14, but will be part of a separate document and then
- perhaps C++17.
- void f(int n) {
- int a[n] = { 1, 2, 3 }; // throws std::bad_array_length if n < 3
- [&a]{ for (int i : a) { cout << i << endl; } }();
- &a; // error, taking address of VLA
- }
- * G++ supports the [13]C++1y [[deprecated]] attribute modulo bugs in
- the underlying [[gnu::deprecated]] attribute. Classes and functions
- can be marked deprecated and a diagnostic message added:
- class A;
- int bar(int n);
- #if __cplusplus > 201103
- class [[deprecated("A is deprecated in C++14; Use B instead")]] A;
- [[deprecated("bar is unsafe; use foo() instead")]]
- int bar(int n);
- int foo(int n);
- class B;
- #endif
- A aa; // warning: 'A' is deprecated : A is deprecated in C++14; Use B instead
- int j = bar(2); // warning: 'int bar(int)' is deprecated : bar is unsafe; use fo
- o() instead
- * G++ supports [14]C++1y digit separators. Long numeric literals can
- be subdivided with a single quote ' to enhance readability:
- int i = 1048576;
- int j = 1'048'576;
- int k = 0x10'0000;
- int m = 0'004'000'000;
- int n = 0b0001'0000'0000'0000'0000'0000;
- double x = 1.602'176'565e-19;
- double y = 1.602'176'565e-1'9;
- * G++ supports [15]C++1y generic (polymorphic) lambdas.
- // a functional object that will increment any type
- auto incr = [](auto x) { return x++; };
- * As a GNU extension, G++ supports explicit template parameter syntax
- for generic lambdas. This can be combined in the expected way with
- the standard auto syntax.
- // a functional object that will add two like-type objects
- auto add = [] <typename T> (T a, T b) { return a + b; };
- * G++ supports unconstrained generic functions as specified by
- S:4.1.2 and S:5.1.1 of [16]N3889: Concepts Lite Specification.
- Briefly, auto may be used as a type-specifier in a parameter
- declaration of any function declarator in order to introduce an
- implicit function template parameter, akin to generic lambdas.
- // the following two function declarations are equivalent
- auto incr(auto x) { return x++; }
- template <typename T>
- auto incr(T x) { return x++; }
- Runtime Library (libstdc++)
- * [17]Improved support for C++11, including:
- + support for <regex>;
- + The associative containers in <map> and <set> and the
- unordered associative containers in <unordered_map> and
- <unordered_set> meet the allocator-aware container
- requirements;
- * [18]Improved experimental support for the upcoming ISO C++
- standard, C++14, including:
- + fixing constexpr member functions without const;
- + implementation of the std::exchange() utility function;
- + addressing tuples by type;
- + implemention of std::make_unique;
- + implemention of std::shared_lock;
- + making std::result_of SFINAE-friendly;
- + adding operator() to std::integral_constant;
- + adding user-defined literals for standard library types
- std::basic_string, std::chrono::duration, and std::complex;
- + adding two range overloads to non-modifying sequence oprations
- std::equal and std::mismatch;
- + adding IO manipulators for quoted strings;
- + adding constexpr members to <utility>, <complex>, <chrono>,
- and some containers;
- + adding compile-time std::integer_sequence;
- + adding cleaner transformation traits;
- + making <functional>s operator functors easier to use and more
- generic;
- * An implementation of std::experimental::optional.
- * An implementation of std::experimental::string_view.
- * The non-standard function std::copy_exception has been deprecated
- and will be removed in a future version. std::make_exception_ptr
- should be used instead.
- Fortran
- * Compatibility notice:
- + Module files: The version of the module files (.mod) has been
- incremented; additionally, module files are now compressed.
- Fortran MODULEs compiled by earlier GCC versions have to be
- recompiled, when they are USEd by files compiled with GCC 4.9.
- GCC 4.9 is not able to read .mod files of earlier GCC
- versions; attempting to do so gives an error message. Note:
- The ABI of the produced assembler data itself has not changed:
- object files and libraries are fully compatible with older
- versions (except as stated below).
- + ABI changes:
- o The [19]argument passing ABI has changed for scalar dummy
- arguments of type INTEGER, REAL, COMPLEX and LOGICAL,
- which have both the VALUE and the OPTIONAL attributes.
- o To support finalization the virtual table associated with
- polymorphic variables has changed. Code containing CLASS
- should be recompiled, including all files which define
- derived types involved in the type definition used by
- polymorphic variables. (Note: Due to the incremented
- module version, trying to mix old code with new code will
- usually give an error message.)
- + GNU Fortran no longer deallocates allocatable variables or
- allocatable components of variables declared in the main
- program. Since Fortran 2008, the standard explicitly states
- that variables declared in the Fortran main program
- automatically have the SAVE attribute.
- + When opening files, the close-on-exec flag is set if the
- system supports such a feature. This is generally considered
- good practice these days, but if there is a need to pass file
- descriptors to child processes the parent process must now
- remember to clear the close-on-exec flag by calling fcntl(),
- e.g. via ISO_C_BINDING, before executing the child process.
- * The deprecated command-line option -fno-whole-file has been
- removed. (-fwhole-file is the default since GCC 4.6.)
- -fwhole-file/-fno-whole-file continue to be accepted but do not
- influence the code generation.
- * The compiler no longer unconditionally warns about DO loops with
- zero iterations. This warning is now controlled by the -Wzerotrip
- option, which is implied by -Wall.
- * The new NO_ARG_CHECK attribute of the [20]!GCC$ directive can be
- used to disable the type-kind-rank (TKR) argument check for a dummy
- argument. The feature is similar to ISO/IEC TS 29133:2012's
- TYPE(*), except that it additionally also disables the rank check.
- Variables with NO_ARG_CHECK have to be dummy arguments and may only
- be used as argument to ISO_C_BINDING's C_LOC and as actual argument
- to another NO_ARG_CHECK dummy argument; also the other constraints
- of TYPE(*) apply. The dummy arguments should be declared as scalar
- or assumed-size variable of type type(*) (recommended) - or of type
- integer, real, complex or logical. With NO_ARG_CHECK, a pointer to
- the data without further type or shape information is passed,
- similar to C's void*. Note that also TS 29113's
- type(*),dimension(..) accepts arguments of any type and rank;
- contrary to NO_ARG_CHECK assumed-rank arguments pass an array
- descriptor which contains the array shape and stride of the
- argument.
- * [21]Fortran 2003:
- + Finalization is now supported. It is currently only done for a
- subset of those situations in which it should occur.
- + Experimental support for scalar character components with
- deferred length (i.e. allocatable string length) in derived
- types has been added. (Deferred-length character variables are
- supported since GCC 4.6.)
- * [22]Fortran 2008:
- + When STOP or ERROR STOP are used to terminate the execution
- and any exception (but inexact) is signaling, a warning is
- printed to ERROR_UNIT, indicating which exceptions are
- signaling. The [23]-ffpe-summary= command-line option can be
- used to fine-tune for which exceptions the warning should be
- shown.
- + Rounding on input (READ) is now handled on systems where
- strtod honours the rounding mode. (For output, rounding is
- supported since GCC 4.5.) Note that for input, the compatible
- rounding mode is handled as nearest (i.e., rounding to an even
- least significant [cf. IEC 60559:1989] for a tie, while
- compatible rounds away from zero in that case).
- Go
- * GCC 4.9 provides a complete implementation of the Go 1.2.1 release.
- New Targets and Target Specific Improvements
- AArch64
- * The ARMv8-A crypto and CRC instructions are now supported through
- intrinsics. These are enabled when the architecture supports these
- and are available through the -march=armv8-a+crc and
- -march=armv8-a+crypto options.
- * Initial support for ILP32 has now been added to the compiler. This
- is now available through the command-line option -mabi=ilp32.
- Support for ILP32 is considered experimental as the ABI
- specification is still beta.
- * Coverage of more of the ISA including the SIMD extensions has been
- added. The Advanced SIMD intrinsics have also been improved.
- * The new local register allocator (LRA) is now on by default for the
- AArch64 backend.
- * The REE (Redundant extension elimination) pass has now been enabled
- by default for the AArch64 backend.
- * Tuning for the Cortex-A53 and Cortex-A57 has been improved.
- * Initial big.LITTLE tuning support for the combination of Cortex-A57
- and Cortex-A53 was added through the -mcpu=cortex-a57.cortex-a53
- option.
- * A number of structural changes have been made to both the ARM and
- AArch64 backends to facilitate improved code-generation.
- * As of GCC 4.9.2 a workaround for the ARM Cortex-A53 erratum 835769
- has been added and can be enabled by giving the
- -mfix-cortex-a53-835769 option. Alternatively it can be enabled by
- default by configuring GCC with the --enable-fix-cortex-a53-835769
- option.
- ARC
- * A port for Synopsys Designware ARC has been contributed by Embecosm
- and Synopsys Inc.
- ARM
- * Use of Advanced SIMD (Neon) for 64-bit scalar computations has been
- disabled by default. This was found to generate better code in only
- a small number of cases. It can be turned back on with the
- -mneon-for-64bits option.
- * Further support for the ARMv8-A architecture, notably implementing
- the restriction around IT blocks in the Thumb32 instruction set has
- been added. The -mrestrict-it option can be used with
- -march=armv7-a or the -march=armv7ve options to make code
- generation fully compatible with the deprecated instructions in
- ARMv8-A.
- * Support has now been added for the ARMv7ve variant of the
- architecture. This can be used by the -march=armv7ve option.
- * The ARMv8-A crypto and CRC instructions are now supported through
- intrinsics and are available through the -march=armv8-a+crc and
- mfpu=crypto-neon-fp-armv8 options.
- * LRA is now on by default for the ARM target. This can be turned off
- using the -mno-lra option. This option is a purely transitionary
- command-line option and will be removed in a future release. We are
- interested in any bug reports regarding functional and performance
- regressions with LRA.
- * A new option -mslow-flash-data to improve performance of programs
- fetching data on slow flash memory has now been introduced for the
- ARMv7-M profile cores.
- * A new option -mpic-data-is-text-relative for targets that allows
- data segments to be relative to text segments has been added. This
- is on by default for all targets except VxWorks RTP.
- * A number of infrastructural changes have been made to both the ARM
- and AArch64 backends to facilitate improved code-generation.
- * GCC now supports Cortex-A12 and the Cortex-R7 through the
- -mcpu=cortex-a12 and -mcpu=cortex-r7 options.
- * GCC now has tuning for the Cortex-A57 and Cortex-A53 through the
- -mcpu=cortex-a57 and -mcpu=cortex-a53 options.
- * Initial big.LITTLE tuning support for the combination of Cortex-A57
- and Cortex-A53 was added through the -mcpu=cortex-a57.cortex-a53
- option. Similar support was added for the combination of Cortex-A15
- and Cortex-A7 through the -mcpu=cortex-a15.cortex-a7 option.
- * Further performance optimizations for the Cortex-A15 and the
- Cortex-M4 have been added.
- * A number of code generation improvements for Thumb2 to reduce code
- size when compiling for the M-profile processors.
- IA-32/x86-64
- * -mfpmath=sse is now implied by -ffast-math on all targets where
- SSE2 is supported.
- * Intel AVX-512 support was added to GCC. That includes inline
- assembly support, new registers and extending existing ones, new
- intrinsics (covered by corresponding testsuite), and basic
- autovectorization. AVX-512 instructions are available via the
- following GCC switches: AVX-512 foundation instructions: -mavx512f,
- AVX-512 prefetch instructions: -mavx512pf, AVX-512 exponential and
- reciprocal instructions: -mavx512er, AVX-512 conflict detection
- instructions: -mavx512cd.
- * It is now possible to call x86 intrinsics from select functions in
- a file that are tagged with the corresponding target attribute
- without having to compile the entire file with the -mxxx option.
- This improves the usability of x86 intrinsics and is particularly
- useful when doing [24]Function Multiversioning.
- * GCC now supports the new Intel microarchitecture named Silvermont
- through -march=silvermont.
- * GCC now supports the new Intel microarchitecture named Broadwell
- through -march=broadwell.
- * Optimizing for other Intel microarchitectures have been renamed to
- -march=nehalem, westmere, sandybridge, ivybridge, haswell, bonnell.
- * -march=generic has been retuned for better support of Intel core
- and AMD Bulldozer architectures. Performance of AMD K7, K8, Intel
- Pentium-M, and Pentium4 based CPUs is no longer considered
- important for generic.
- * -mtune=intel can now be used to generate code running well on the
- most current Intel processors, which are Haswell and Silvermont for
- GCC 4.9.
- * Support to encode 32-bit assembly instructions in 16-bit format is
- now available through the -m16 command-line option.
- * Better inlining of memcpy and memset that is aware of value ranges
- and produces shorter alignment prologues.
- * -mno-accumulate-outgoing-args is now honored when unwind
- information is output. Argument accumulation is also now turned off
- for portions of programs optimized for size.
- * Support for new AMD family 15h processors (Excavator core) is now
- available through the -march=bdver4 and -mtune=bdver4 options.
- MSP430
- * A new command-line option -mcpu= has been added to the MSP430
- backend. This option is used to specify the ISA to be used.
- Accepted values are msp430 (the default), msp430x and msp430xv2.
- The ISA is no longer deduced from the -mmcu= option as there are
- far too many different MCU names. The -mmcu= option is still
- supported, and this is still used to select linker scripts and
- generate a C preprocessor symbol that will be recognised by the
- msp430.h header file.
- NDS32
- * A new nds32 port supports the 32-bit architecture from Andes
- Technology Corporation.
- * The port provides initial support for the V2, V3, V3m instruction
- set architectures.
- Nios II
- * A port for the Altera Nios II has been contributed by Mentor
- Graphics.
- PowerPC / PowerPC64 / RS6000
- * GCC now supports Power ISA 2.07, which includes support for
- Hardware Transactional Memory (HTM), Quadword atomics and several
- VMX and VSX additions, including Crypto, 64-bit integer, 128-bit
- integer and decimal integer operations.
- * Support for the POWER8 processor is now available through the
- -mcpu=power8 and -mtune=power8 options.
- * The libitm library has been modified to add a HTM fastpath that
- automatically uses POWER's HTM hardware instructions when it is
- executing on a HTM enabled processor.
- * Support for the new powerpc64le-linux platform has been added. It
- defaults to generating code that conforms to the ELFV2 ABI.
- S/390, System z
- * Support for the Transactional Execution Facility included with the
- IBM zEnterprise zEC12 processor has been added. A set of GCC style
- builtins as well as XLC style builtins are provided. The builtins
- are enabled by default when using the -march=zEC12 option but can
- explicitly be disabled with -mno-htm. Using the GCC builtins also
- libitm supports hardware transactions on S/390.
- * The hotpatch features allows to prepare functions for hotpatching.
- A certain amount of bytes is reserved before the function entry
- label plus a NOP is inserted at its very beginning to implement a
- backward jump when applying a patch. The feature can either be
- enabled per compilation unit via the command-line option -mhotpatch
- or per function using the hotpatch attribute.
- * The shrink wrap optimization is now supported on S/390 and enabled
- by default.
- * A major rework of the routines to determine which registers need to
- be saved and restored in function prologue/epilogue now allow to
- use floating point registers as save slots. This will happen for
- certain leaf function with -march=z10 or higher.
- * The LRA rtl pass replaces reload by default on S/390.
- RX
- * The port now allows to specify the RX100, RX200, and RX600
- processors with the command-line options -mcpu=rx100, -mcpu=rx200
- and -mcpu=rx600.
- SH
- * Minor improvements to code generated for integer arithmetic and
- code that involves the T bit.
- * Added support for the SH2A clips and clipu instructions. The
- compiler will now try to utilize them for min/max expressions such
- as max (-128, min (127, x)).
- * Added support for the cmp/str instruction through built-in
- functions such as __builtin_strlen. When not optimizing for size,
- the compiler will now expand calls to e.g. strlen as an inlined
- sequences which utilize the cmp/str instruction.
- * Improved code generated around volatile memory loads and stores.
- * The option -mcbranchdi has been deprecated. Specifying it will
- result in a warning and will not influence code generation.
- * The option -mcmpeqdi has been deprecated. Specifying it will result
- in a warning and will not influence code generation.
- GCC 4.9.1
- This is the [25]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.9.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- Version 4.0 of the [26]OpenMP specification is supported even in
- Fortran, not just C and C++.
- GCC 4.9.2
- This is the [27]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.9.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.9.3
- This is the [28]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.9.3 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- For questions related to the use of GCC, please consult these web
- pages and the [29]GCC manuals. If that fails, the
- [30]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [31]gcc@gcc.gnu.org. All of [32]our lists have public
- archives.
- Copyright (C) [33]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [34]maintained by the GCC team. Last modified
- 2015-06-28[35].
- References
- 1. https://gcc.gnu.org/ml/gcc-patches/2013-05/msg00728.html
- 2. https://gcc.gnu.org/PR60825
- 3. https://gcc.gnu.org/gcc-4.9/porting_to.html
- 4. http://openmp.org/wp/openmp-specifications/
- 5. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Optimize-Options.html#index-fsimd-cost-model-908
- 6. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Language-Independent-Options.html#index-fdiagnostics-color-252
- 7. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Loop-Specific-Pragmas.html
- 8. https://www.cilkplus.org/
- 9. http://gcc.gnu.org/projects/cxx1y.html
- 10. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
- 11. http://gcc.gnu.org/projects/cxx1y.html
- 12. http://gcc.gnu.org/projects/cxx1y.html
- 13. http://gcc.gnu.org/projects/cxx1y.html
- 14. http://gcc.gnu.org/projects/cxx1y.html
- 15. http://gcc.gnu.org/projects/cxx1y.html
- 16. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3889.pdf
- 17. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/libstdc++/manual/manual/status.html#status.iso.2011
- 18. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2014
- 19. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Argument-passing-conventions.html
- 20. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/GNU-Fortran-Compiler-Directives.html
- 21. https://gcc.gnu.org/wiki/Fortran2003Status
- 22. https://gcc.gnu.org/wiki/Fortran2008Status
- 23. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Debugging-Options.html
- 24. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Multiversioning.html
- 25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.1
- 26. http://openmp.org/wp/openmp-specifications/
- 27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.2
- 28. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.3
- 29. https://gcc.gnu.org/onlinedocs/
- 30. mailto:gcc-help@gcc.gnu.org
- 31. mailto:gcc@gcc.gnu.org
- 32. https://gcc.gnu.org/lists.html
- 33. http://www.fsf.org/
- 34. https://gcc.gnu.org/about.html
- 35. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.8/index.html
- GCC 4.8 Release Series
- June 23, 2015
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.8.5.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 4.8.4 relative to previous releases of GCC.
- Release History
- GCC 4.8.5
- June 23, 2015 ([2]changes, [3]documentation)
- GCC 4.8.4
- December 19, 2014 ([4]changes, [5]documentation)
- GCC 4.8.3
- May 22, 2014 ([6]changes, [7]documentation)
- GCC 4.8.2
- October 16, 2013 ([8]changes, [9]documentation)
- GCC 4.8.1
- May 31, 2013 ([10]changes, [11]documentation)
- GCC 4.8.0
- March 22, 2013 ([12]changes, [13]documentation)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [14]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [15]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [16]GCC
- project web site or contact the [17]GCC development mailing list.
- To obtain GCC please use [18]our mirror sites or [19]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [20]GCC manuals. If that fails, the
- [21]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [22]gcc@gcc.gnu.org. All of [23]our lists have public
- archives.
- Copyright (C) [24]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [25]maintained by the GCC team. Last modified
- 2015-06-23[26].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-4.8/changes.html
- 3. https://gcc.gnu.org/onlinedocs/4.8.5/
- 4. http://gcc.gnu.org/gcc-4.8/changes.html
- 5. https://gcc.gnu.org/onlinedocs/4.8.4/
- 6. http://gcc.gnu.org/gcc-4.8/changes.html
- 7. https://gcc.gnu.org/onlinedocs/4.8.3/
- 8. http://gcc.gnu.org/gcc-4.8/changes.html
- 9. https://gcc.gnu.org/onlinedocs/4.8.2/
- 10. http://gcc.gnu.org/gcc-4.8/changes.html
- 11. https://gcc.gnu.org/onlinedocs/4.8.1/
- 12. http://gcc.gnu.org/gcc-4.8/changes.html
- 13. https://gcc.gnu.org/onlinedocs/4.8.0/
- 14. http://gcc.gnu.org/gcc-4.8/buildstat.html
- 15. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 16. http://gcc.gnu.org/index.html
- 17. mailto:gcc@gcc.gnu.org
- 18. http://gcc.gnu.org/mirrors.html
- 19. http://gcc.gnu.org/svn.html
- 20. https://gcc.gnu.org/onlinedocs/
- 21. mailto:gcc-help@gcc.gnu.org
- 22. mailto:gcc@gcc.gnu.org
- 23. https://gcc.gnu.org/lists.html
- 24. http://www.fsf.org/
- 25. https://gcc.gnu.org/about.html
- 26. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.8/changes.html
- GCC 4.8 Release Series
- Changes, New Features, and Fixes
- Caveats
- GCC now uses C++ as its implementation language. This means that to
- build GCC from sources, you will need a C++ compiler that understands
- C++ 2003. For more details on the rationale and specific changes,
- please refer to the [1]C++ conversion page.
- To enable the Graphite framework for loop optimizations you now need
- CLooG version 0.18.0 and ISL version 0.11.1. Both can be obtained from
- the [2]GCC infrastructure directory. The installation manual contains
- more information about requirements to build GCC.
- GCC now uses a more aggressive analysis to derive an upper bound for
- the number of iterations of loops using constraints imposed by language
- standards. This may cause non-conforming programs to no longer work as
- expected, such as SPEC CPU 2006 464.h264ref and 416.gamess. A new
- option, -fno-aggressive-loop-optimizations, was added to disable this
- aggressive analysis. In some loops that have known constant number of
- iterations, but undefined behavior is known to occur in the loop before
- reaching or during the last iteration, GCC will warn about the
- undefined behavior in the loop instead of deriving lower upper bound of
- the number of iterations for the loop. The warning can be disabled with
- -Wno-aggressive-loop-optimizations.
- On ARM, a bug has been fixed in GCC's implementation of the AAPCS rules
- for the layout of vectors that could lead to wrong code being
- generated. Vectors larger than 8 bytes in size are now by default
- aligned to an 8-byte boundary. This is an ABI change: code that makes
- explicit use of vector types may be incompatible with binary objects
- built with older versions of GCC. Auto-vectorized code is not affected
- by this change.
- On AVR, support has been removed for the command-line option
- -mshort-calls deprecated in GCC 4.7.
- On AVR, the configure option --with-avrlibc supported since GCC 4.7.2
- is turned on per default for all non-RTEMS configurations. This option
- arranges for a better integration of [3]AVR Libc with avr-gcc. For
- technical details, see [4]PR54461. To turn off the option in non-RTEMS
- configurations, use --with-avrlibc=no. If the compiler is configured
- for RTEMS, the option is always turned off.
- More information on porting to GCC 4.8 from previous versions of GCC
- can be found in the [5]porting guide for this release.
- General Optimizer Improvements (and Changes)
- * DWARF4 is now the default when generating DWARF debug information.
- When -g is used on a platform that uses DWARF debugging
- information, GCC will now default to -gdwarf-4
- -fno-debug-types-section.
- GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 debug information
- consumers support DWARF4 by default. Before GCC 4.8 the default
- version used was DWARF2. To make GCC 4.8 generate an older DWARF
- version use -g together with -gdwarf-2 or -gdwarf-3. The default
- for Darwin and VxWorks is still -gdwarf-2 -gstrict-dwarf.
- * A new general optimization level, -Og, has been introduced. It
- addresses the need for fast compilation and a superior debugging
- experience while providing a reasonable level of run-time
- performance. Overall experience for development should be better
- than the default optimization level -O0.
- * A new option -ftree-partial-pre was added to control the partial
- redundancy elimination (PRE) optimization. This option is enabled
- by default at the -O3 optimization level, and it makes PRE more
- aggressive.
- * The option -fconserve-space has been removed; it was no longer
- useful on most targets since GCC supports putting variables into
- BSS without making them common.
- * The struct reorg and matrix reorg optimizations (command-line
- options -fipa-struct-reorg and -fipa-matrix-reorg) have been
- removed. They did not always work correctly, nor did they work with
- link-time optimization (LTO), hence were only applicable to
- programs consisting of a single translation unit.
- * Several scalability bottle-necks have been removed from GCC's
- optimization passes. Compilation of extremely large functions, e.g.
- due to the use of the flatten attribute in the "Eigen" C++ linear
- algebra templates library, is significantly faster than previous
- releases of GCC.
- * Link-time optimization (LTO) improvements:
- + LTO partitioning has been rewritten for better reliability and
- maintanibility. Several important bugs leading to link
- failures have been fixed.
- * Interprocedural optimization improvements:
- + A new symbol table has been implemented. It builds on existing
- callgraph and varpool modules and provide a new API. Unusual
- symbol visibilities and aliases are handled more consistently
- leading to, for example, more aggressive unreachable code
- removal with LTO.
- + The inline heuristic can now bypass limits on the size of of
- inlined functions when the inlining is particularly
- profitable. This happens, for example, when loop bounds or
- array strides get propagated.
- + Values passed through aggregates (either by value or
- reference) are now propagated at the inter-procedural level
- leading to better inlining decisions (for example in the case
- of Fortran array descriptors) and devirtualization.
- * [6]AddressSanitizer , a fast memory error detector, has been added
- and can be enabled via -fsanitize=address. Memory access
- instructions will be instrumented to detect heap-, stack-, and
- global-buffer overflow as well as use-after-free bugs. To get nicer
- stacktraces, use -fno-omit-frame-pointer. The AddressSanitizer is
- available on IA-32/x86-64/x32/PowerPC/PowerPC64 GNU/Linux and on
- x86-64 Darwin.
- * [7]ThreadSanitizer has been added and can be enabled via
- -fsanitize=thread. Instructions will be instrumented to detect data
- races. The ThreadSanitizer is available on x86-64 GNU/Linux.
- * A new local register allocator (LRA) has been implemented, which
- replaces the 26 year old reload pass and improves generated code
- quality. For now it is active on the IA-32 and x86-64 targets.
- * Support for transactional memory has been implemented on the
- following architectures: IA-32/x86-64, ARM, PowerPC, SH, SPARC, and
- Alpha.
- New Languages and Language specific improvements
- C family
- * Each diagnostic emitted now includes the original source line and a
- caret '^' indicating the column. The option
- -fno-diagnostics-show-caret suppresses this information.
- * The option -ftrack-macro-expansion=2 is now enabled by default.
- This allows the compiler to display the macro expansion stack in
- diagnostics. Combined with the caret information, an example
- diagnostic showing these two features is:
- t.c:1:94: error: invalid operands to binary < (have `struct mystruct' and `float
- ')
- #define MYMAX(A,B) __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
- _b = (B); __a < __b ? __b : __a; })
- ^
- t.c:7:7: note: in expansion of macro 'MYMAX'
- X = MYMAX(P, F);
- ^
- * A new -Wsizeof-pointer-memaccess warning has been added (also
- enabled by -Wall) to warn about suspicious length parameters to
- certain string and memory built-in functions if the argument uses
- sizeof. This warning warns e.g. about memset (ptr, 0, sizeof
- (ptr)); if ptr is not an array, but a pointer, and suggests a
- possible fix, or about memcpy (&foo, ptr, sizeof (&foo));.
- * The new option -Wpedantic is an alias for -pedantic, which is now
- deprecated. The forms -Wno-pedantic, -Werror=pedantic, and
- -Wno-error=pedantic work in the same way as for any other -W
- option. One caveat is that -Werror=pedantic is not equivalent to
- -pedantic-errors, since the latter makes into errors some warnings
- that are not controlled by -Wpedantic, and the former only affects
- diagnostics that are disabled when using -Wno-pedantic.
- * The option -Wshadow no longer warns if a declaration shadows a
- function declaration, unless the former declares a function or
- pointer to function, because this is [8]a common and valid case in
- real-world code.
- C++
- * G++ now implements the [9]C++11 thread_local keyword; this differs
- from the GNU __thread keyword primarily in that it allows dynamic
- initialization and destruction semantics. Unfortunately, this
- support requires a run-time penalty for references to
- non-function-local thread_local variables defined in a different
- translation unit even if they don't need dynamic initialization, so
- users may want to continue to use __thread for TLS variables with
- static initialization semantics.
- If the programmer can be sure that no use of the variable in a
- non-defining TU needs to trigger dynamic initialization (either
- because the variable is statically initialized, or a use of the
- variable in the defining TU will be executed before any uses in
- another TU), they can avoid this overhead with the
- -fno-extern-tls-init option.
- OpenMP threadprivate variables now also support dynamic
- initialization and destruction by the same mechanism.
- * G++ now implements the [10]C++11 attribute syntax, e.g.
- [[noreturn]] void f();
- and also the alignment specifier, e.g.
- alignas(double) int i;
- * G++ now implements [11]C++11 inheriting constructors, e.g.
- struct A { A(int); };
- struct B: A { using A::A; }; // defines B::B(int)
- B b(42); // OK
- * As of GCC 4.8.1, G++ implements the change to decltype semantics
- from [12]N3276.
- struct A f();
- decltype(f()) g(); // OK, return type of f() is not required to be complete.
- * As of GCC 4.8.1, G++ implements [13]C++11 ref-qualifiers, e.g.
- struct A { int f() &; };
- int i = A().f(); // error, f() requires an lvalue object
- * G++ now supports a -std=c++1y option for experimentation with
- features proposed for the next revision of the standard, expected
- around 2014. Currently the only difference from -std=c++11 is
- support for return type deduction in normal functions, as proposed
- in [14]N3386. Status of C++1y features in GCC 4.8 can be found
- [15]here.
- * The G++ namespace association extension, __attribute ((strong)),
- has been deprecated. Inline namespaces should be used instead.
- * G++ now supports a -fext-numeric-literal option to control whether
- GNU numeric literal suffixes are accepted as extensions or
- processed as C++11 user-defined numeric literal suffixes. The flag
- is on (use suffixes for GNU literals) by default for -std=gnu++*,
- and -std=c++98. The flag is off (use suffixes for user-defined
- literals) by default for -std=c++11 and later.
- Runtime Library (libstdc++)
- * [16]Improved experimental support for the new ISO C++ standard,
- C++11, including:
- + forward_list meets the allocator-aware container requirements;
- + this_thread::sleep_for(), this_thread::sleep_until() and
- this_thread::yield() are defined without requiring the
- configure option --enable-libstdcxx-time;
- * Improvements to <random>:
- + SSE optimized normal_distribution.
- + Use of hardware RNG instruction for random_device on new x86
- processors (requires the assembler to support the
- instruction.)
- and <ext/random>:
- + New random number engine simd_fast_mersenne_twister_engine
- with an optimized SSE implementation.
- + New random number distributions beta_distribution,
- normal_mv_distribution, rice_distribution,
- nakagami_distribution, pareto_distribution, k_distribution,
- arcsine_distribution, hoyt_distribution.
- * Added --disable-libstdcxx-verbose configure option to disable
- diagnostic messages issued when a process terminates abnormally.
- This may be useful for embedded systems to reduce the size of
- executables that link statically to the library.
- Fortran
- * Compatibility notice:
- + Module files: The version of module files (.mod) has been
- incremented. Fortran MODULEs compiled by earlier GCC versions
- have to be recompiled, when they are USEd by files compiled
- with GCC 4.8. GCC 4.8 is not able to read .mod files created
- by earlier versions; attempting to do so gives an error
- message.
- Note: The ABI of the produced assembler data itself has not
- changed; object files and libraries are fully compatible with
- older versions except as noted below.
- + ABI: Some internal names (used in the assembler/object file)
- have changed for symbols declared in the specification part of
- a module. If an affected module - or a file using it via use
- association - is recompiled, the module and all files which
- directly use such symbols have to be recompiled as well. This
- change only affects the following kind of module symbols:
- o Procedure pointers. Note: C-interoperable function
- pointers (type(c_funptr)) are not affected nor are
- procedure-pointer components.
- o Deferred-length character strings.
- * The [17]BACKTRACE intrinsic subroutine has been added. It shows a
- backtrace at an arbitrary place in user code; program execution
- continues normally afterwards.
- * The [18]-Wc-binding-type warning option has been added (disabled by
- default). It warns if the a variable might not be C interoperable;
- in particular, if the variable has been declared using an intrinsic
- type with default kind instead of using a kind parameter defined
- for C interoperability in the intrinsic ISO_C_Binding module.
- Before, this warning was always printed. The -Wc-binding-type
- option is enabled by -Wall.
- * The [19]-Wrealloc-lhs and -Wrealloc-lhs-all warning command-line
- options have been added, which diagnose when code is inserted for
- automatic (re)allocation of a variable during assignment. This
- option can be used to decide whether it is safe to use
- [20]-fno-realloc-lhs. Additionally, it can be used to find
- automatic (re)allocation in hot loops. (For arrays, replacing
- "var=" by "var(:)=" disables the automatic reallocation.)
- * The [21]-Wcompare-reals command-line option has been added. When
- this is set, warnings are issued when comparing REAL or COMPLEX
- types for equality and inequality; consider replacing a == b by
- abs(a -b) < eps with a suitable eps. -Wcompare-reals is enabled by
- -Wextra.
- * The [22]-Wtarget-lifetime command-line option has been added
- (enabled with -Wall), which warns if the pointer in a pointer
- assignment might outlive its target.
- * Reading floating point numbers which use "q" for the exponential
- (such as 4.0q0) is now supported as vendor extension for better
- compatibility with old data files. It is strongly recommended to
- use for I/O the equivalent but standard conforming "e" (such as
- 4.0e0).
- (For Fortran source code, consider replacing the "q" in
- floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
- suitable qp). Note that - in Fortran source code - replacing "q" by
- a simple "e" is not equivalent.)
- * The GFORTRAN_TMPDIR environment variable for specifying a
- non-default directory for files opened with STATUS="SCRATCH", is
- not used anymore. Instead gfortran checks the POSIX/GNU standard
- TMPDIR environment variable. If TMPDIR is not defined, gfortran
- falls back to other methods to determine the directory for
- temporary files as documented in the [23]user manual.
- * [24]Fortran 2003:
- + Support for unlimited polymorphic variables (CLASS(*)) has
- been added. Nonconstant character lengths are not yet
- supported.
- * [25]TS 29113:
- + Assumed types (TYPE(*)) are now supported.
- + Experimental support for assumed-rank arrays (dimension(..))
- has been added. Note that currently gfortran's own array
- descriptor is used, which is different from the one defined in
- TS29113, see [26]gfortran's header file or use the [27]Chasm
- Language Interoperability Tools.
- Go
- * GCC 4.8.2 provides a complete implementation of the Go 1.1.2
- release.
- * GCC 4.8.0 and 4.8.1 implement a preliminary version of the Go 1.1
- release. The library support is not quite complete.
- * Go has been tested on GNU/Linux and Solaris platforms for various
- processors including x86, x86_64, PowerPC, SPARC, and Alpha. It may
- work on other platforms as well.
- New Targets and Target Specific Improvements
- AArch64
- * A new port has been added to support AArch64, the new 64-bit
- architecture from ARM. Note that this is a separate port from the
- existing 32-bit ARM port.
- * The port provides initial support for the Cortex-A53 and the
- Cortex-A57 processors with the command line options
- -mcpu=cortex-a53 and -mcpu=cortex-a57.
- * As of GCC 4.8.4 a workaround for the ARM Cortex-A53 erratum 835769
- has been added and can be enabled by giving the
- -mfix-cortex-a53-835769 option. Alternatively it can be enabled by
- default by configuring GCC with the --enable-fix-cortex-a53-835769
- option.
- ARM
- * Initial support has been added for the AArch32 extensions defined
- in the ARMv8 architecture.
- * Code generation improvements for the Cortex-A7 and Cortex-A15 CPUs.
- * A new option, -mcpu=marvell-pj4, has been added to generate code
- for the Marvell PJ4 processor.
- * The compiler can now automatically generate the VFMA, VFMS, REVSH
- and REV16 instructions.
- * A new vectorizer cost model for Advanced SIMD configurations to
- improve the auto-vectorization strategies used.
- * The scheduler now takes into account the number of live registers
- to reduce the amount of spilling that can occur. This should
- improve code performance in large functions. The limit can be
- removed by using the option -fno-sched-pressure.
- * Improvements have been made to the Marvell iWMMX code generation
- and support for the iWMMX2 SIMD unit has been added. The option
- -mcpu=iwmmxt2 can be used to enable code generation for the latter.
- * A number of code generation improvements for Thumb2 to reduce code
- size when compiling for the M-profile processors.
- * The RTEMS (arm-rtems) port has been updated to use the EABI.
- * Code generation support for the old FPA and Maverick floating-point
- architectures has been removed. Ports that previously relied on
- these features have also been removed. This includes the targets:
- + arm*-*-linux-gnu (use arm*-*-linux-gnueabi)
- + arm*-*-elf (use arm*-*-eabi)
- + arm*-*-uclinux* (use arm*-*-uclinux*eabi)
- + arm*-*-ecos-elf (no alternative)
- + arm*-*-freebsd (no alternative)
- + arm*-wince-pe* (no alternative).
- AVR
- * Support for the "Embedded C" fixed-point has been added. For
- details, see the [28]GCC wiki and the [29]user manual. The support
- is not complete.
- * A new print modifier %r for register operands in inline assembler
- is supported. It will print the raw register number without the
- register prefix 'r':
- /* Return the most significant byte of 'val', a 64-bit value. */
- unsigned char msb (long long val)
- {
- unsigned char c;
- __asm__ ("mov %0, %r1+7" : "=r" (c) : "r" (val));
- return c;
- }
- The inline assembler in this example will generate code like
- mov r24, 8+7
- provided c is allocated to R24 and val is allocated to R8...R15.
- This works because the GNU assembler accepts plain register numbers
- without register prefix.
- * Static initializers with 3-byte symbols are supported now:
- extern const __memx char foo;
- const __memx void *pfoo = &foo;
- This requires at least Binutils 2.23.
- IA-32/x86-64
- * Allow -mpreferred-stack-boundary=3 for the x86-64 architecture with
- SSE extensions disabled. Since the x86-64 ABI requires 16 byte
- stack alignment, this is ABI incompatible and intended to be used
- in controlled environments where stack space is an important
- limitation. This option will lead to wrong code when functions
- compiled with 16 byte stack alignment (such as functions from a
- standard library) are called with misaligned stack. In this case,
- SSE instructions may lead to misaligned memory access traps. In
- addition, variable arguments will be handled incorrectly for 16
- byte aligned objects (including x87 long double and __int128),
- leading to wrong results. You must build all modules with
- -mpreferred-stack-boundary=3, including any libraries. This
- includes the system libraries and startup modules.
- * Support for the new Intel processor codename Broadwell with RDSEED,
- ADCX, ADOX, PREFETCHW is available through -madx, -mprfchw,
- -mrdseed command-line options.
- * Support for the Intel RTM and HLE intrinsics, built-in functions
- and code generation is available via -mrtm and -mhle.
- * Support for the Intel FXSR, XSAVE and XSAVEOPT instruction sets.
- Intrinsics and built-in functions are available via -mfxsr, -mxsave
- and -mxsaveopt respectively.
- * New -maddress-mode=[short|long] options for x32.
- -maddress-mode=short overrides default 64-bit addresses to 32-bit
- by emitting the 0x67 address-size override prefix. This is the
- default address mode for x32.
- * New built-in functions to detect run-time CPU type and ISA:
- + A built-in function __builtin_cpu_is has been added to detect
- if the run-time CPU is of a particular type. It returns a
- positive integer on a match and zero otherwise. It accepts one
- string literal argument, the CPU name. For example,
- __builtin_cpu_is("westmere") returns a positive integer if the
- run-time CPU is an Intel Core i7 Westmere processor. Please
- refer to the [30]user manual for the list of valid CPU names
- recognized.
- + A built-in function __builtin_cpu_supports has been added to
- detect if the run-time CPU supports a particular ISA feature.
- It returns a positive integer on a match and zero otherwise.
- It accepts one string literal argument, the ISA feature. For
- example, __builtin_cpu_supports("ssse3") returns a positive
- integer if the run-time CPU supports SSSE3 instructions.
- Please refer to the [31]user manual for the list of valid ISA
- names recognized.
- Caveat: If these built-in functions are called before any static
- constructors are invoked, like during IFUNC initialization, then
- the CPU detection initialization must be explicitly run using this
- newly provided built-in function, __builtin_cpu_init. The
- initialization needs to be done only once. For example, this is how
- the invocation would look like inside an IFUNC initializer:
- static void (*some_ifunc_resolver(void))(void)
- {
- __builtin_cpu_init();
- if (__builtin_cpu_is("amdfam10h") ...
- if (__builtin_cpu_supports("popcnt") ...
- }
- * Function Multiversioning Support with G++:
- It is now possible to create multiple function versions each
- targeting a specific processor and/or ISA. Function versions have
- the same signature but different target attributes. For example,
- here is a program with function versions:
- __attribute__ ((target ("default")))
- int foo(void)
- {
- return 1;
- }
- __attribute__ ((target ("sse4.2")))
- int foo(void)
- {
- return 2;
- }
- int main (void)
- {
- int (*p) = &foo;
- assert ((*p)() == foo());
- return 0;
- }
- Please refer to this [32]wiki for more information.
- * The x86 back end has been improved to allow option -fschedule-insns
- to work reliably. This option can be used to schedule instructions
- better and leads to improved performace in certain cases.
- * Windows MinGW-w64 targets (*-w64-mingw*) require at least r5437
- from the Mingw-w64 trunk.
- * Support for new AMD family 15h processors (Steamroller core) is now
- available through the -march=bdver3 and -mtune=bdver3 options.
- * Support for new AMD family 16h processors (Jaguar core) is now
- available through the -march=btver2 and -mtune=btver2 options.
- FRV
- * This target now supports the -fstack-usage command-line option.
- MIPS
- * GCC can now generate code specifically for the R4700, Broadcom XLP
- and MIPS 34kn processors. The associated -march options are
- -march=r4700, -march=xlp and -march=34kn respectively.
- * GCC now generates better DSP code for MIPS 74k cores thanks to
- further scheduling optimizations.
- * The MIPS port now supports the -fstack-check option.
- * GCC now passes the -mmcu and -mno-mcu options to the assembler.
- * Previous versions of GCC would silently accept -fpic and -fPIC for
- -mno-abicalls targets like mips*-elf. This combination was not
- intended or supported, and did not generate position-independent
- code. GCC 4.8 now reports an error when this combination is used.
- PowerPC / PowerPC64 / RS6000
- * SVR4 configurations (GNU/Linux, FreeBSD, NetBSD) no longer save,
- restore or update the VRSAVE register by default. The respective
- operating systems manage the VRSAVE register directly.
- * Large TOC support has been added for AIX through the command line
- option -mcmodel=large.
- * Native Thread-Local Storage support has been added for AIX.
- * VMX (Altivec) and VSX instruction sets now are enabled implicitly
- when targetting processors that support those hardware features on
- AIX 6.1 and above.
- RX
- * This target will now issue a warning message whenever multiple fast
- interrupt handlers are found in the same compilation unit. This
- feature can be turned off by the new
- -mno-warn-multiple-fast-interrupts command-line option.
- S/390, System z
- * Support for the IBM zEnterprise zEC12 processor has been added.
- When using the -march=zEC12 option, the compiler will generate code
- making use of the following new instructions:
- + load and trap instructions
- + 2 new compare and trap instructions
- + rotate and insert selected bits - without CC clobber
- The -mtune=zEC12 option enables zEC12 specific instruction
- scheduling without making use of new instructions.
- * Register pressure sensitive instruction scheduling is enabled by
- default.
- * The ifunc function attribute is enabled by default.
- * memcpy and memcmp invokations on big memory chunks or with run time
- lengths are not generated inline anymore when tuning for z10 or
- higher. The purpose is to make use of the IFUNC optimized versions
- in Glibc.
- SH
- * The default alignment settings have been reduced to be less
- aggressive. This results in more compact code for optimization
- levels other than -Os.
- * Improved support for the __atomic built-in functions:
- + A new option -matomic-model=model selects the model for the
- generated atomic sequences. The following models are
- supported:
- soft-gusa
- Software gUSA sequences (SH3* and SH4* only). On
- SH4A targets this will now also partially utilize
- the movco.l and movli.l instructions. This is the
- default when the target is sh3*-*-linux* or
- sh4*-*-linux*.
- hard-llcs
- Hardware movco.l / movli.l sequences (SH4A only).
- soft-tcb
- Software thread control block sequences.
- soft-imask
- Software interrupt flipping sequences (privileged
- mode only). This is the default when the target is
- sh1*-*-linux* or sh2*-*-linux*.
- none
- Generates function calls to the respective __atomic
- built-in functions. This is the default for SH64
- targets or when the target is not sh*-*-linux*.
- + The option -msoft-atomic has been deprecated. It is now an
- alias for -matomic-model=soft-gusa.
- + A new option -mtas makes the compiler generate the tas.b
- instruction for the __atomic_test_and_set built-in function
- regardless of the selected atomic model.
- + The __sync functions in libgcc now reflect the selected atomic
- model when building the toolchain.
- * Added support for the mov.b and mov.w instructions with
- displacement addressing.
- * Added support for the SH2A instructions movu.b and movu.w.
- * Various improvements to code generated for integer arithmetic.
- * Improvements to conditional branches and code that involves the T
- bit. A new option -mzdcbranch tells the compiler to favor
- zero-displacement branches. This is enabled by default for SH4*
- targets.
- * The pref instruction will now be emitted by the __builtin_prefetch
- built-in function for SH3* targets.
- * The fmac instruction will now be emitted by the fmaf standard
- function and the __builtin_fmaf built-in function.
- * The -mfused-madd option has been deprecated in favor of the
- machine-independent -ffp-contract option. Notice that the fmac
- instruction will now be generated by default for expressions like a
- * b + c. This is due to the compiler default setting
- -ffp-contract=fast.
- * Added new options -mfsrra and -mfsca to allow the compiler using
- the fsrra and fsca instructions on targets other than SH4A (where
- they are already enabled by default).
- * Added support for the __builtin_bswap32 built-in function. It is
- now expanded as a sequence of swap.b and swap.w instructions
- instead of a library function call.
- * The behavior of the -mieee option has been fixed and the negative
- form -mno-ieee has been added to control the IEEE conformance of
- floating point comparisons. By default -mieee is now enabled and
- the option -ffinite-math-only implicitly sets -mno-ieee.
- * Added support for the built-in functions __builtin_thread_pointer
- and __builtin_set_thread_pointer. This assumes that GBR is used to
- hold the thread pointer of the current thread. Memory loads and
- stores relative to the address returned by __builtin_thread_pointer
- will now also utilize GBR based displacement address modes.
- * The -mdiv= option for targets other than SHmedia has been fixed and
- documented.
- SPARC
- * Added optimized instruction scheduling for Niagara4.
- TILE-Gx
- * Added support for the -mcmodel=MODEL command-line option. The
- models supported are small and large.
- V850
- * This target now supports the E3V5 architecture via the use of the
- new -mv850e3v5 command-line option. It also has experimental
- support for the e3v5 LOOP instruction which can be enabled via the
- new -mloop command-line option.
- XStormy16
- * This target now supports the -fstack-usage command-line option.
- Operating Systems
- Windows (Cygwin)
- * Executables are now linked against shared libgcc by default. The
- previous default was to link statically, which can still be done by
- explicitly specifying -static or static-libgcc on the command line.
- However it is strongly advised against, as it will cause problems
- for any application that makes use of DLLs compiled by GCC. It
- should be alright for a monolithic stand-alone application that
- only links against the Windows DLLs, but offers little or no
- benefit.
- GCC 4.8.1
- This is the [33]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.8.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- The C++11 <chrono> std::chrono::system_clock and
- std::chrono::steady_clock classes have changed ABI in GCC 4.8.1, they
- both are now separate (never typedefs of each other), both use
- std::chrono::nanoseconds resolution, on most GNU/Linux configurations
- std::chrono::steady_clock is now finally monotonic, and both classes
- are mangled differently than in the previous GCC releases.
- std::chrono::system_clock::now() with std::chrono::microseconds resp.
- std::chrono::seconds resolution is still exported for backwards
- compatibility with default configured libstdc++. Note that libstdc++
- configured with --enable-libstdcxx-time= used to be ABI incompatible
- with default configured libstdc++ for those two classes and no ABI
- compatibility can be offered for those configurations, so any C++11
- code that uses those classes and has been compiled and linked against
- libstdc++ configured with the non-default --enable-libstdcxx-time=
- configuration option needs to be recompiled.
- GCC 4.8.2
- This is the [34]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.8.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.8.3
- This is the [35]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.8.3 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- Support for the new powerpc64le-linux platform has been added. It
- defaults to generating code that conforms to the ELFV2 ABI.
- GCC 4.8.4
- This is the [36]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.8.4 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.8.5
- This is the [37]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.8.5 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- For questions related to the use of GCC, please consult these web
- pages and the [38]GCC manuals. If that fails, the
- [39]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [40]gcc@gcc.gnu.org. All of [41]our lists have public
- archives.
- Copyright (C) [42]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [43]maintained by the GCC team. Last modified
- 2015-06-23[44].
- References
- 1. https://gcc.gnu.org/wiki/cxx-conversion
- 2. ftp://gcc.gnu.org/pub/gcc/infrastructure/
- 3. http://www.nongnu.org/avr-libc/
- 4. https://gcc.gnu.org/PR54461
- 5. https://gcc.gnu.org/gcc-4.8/porting_to.html
- 6. https://code.google.com/p/address-sanitizer/
- 7. https://code.google.com/p/data-race-test/wiki/ThreadSanitizer
- 8. https://lkml.org/lkml/2006/11/28/239
- 9. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
- 10. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
- 11. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
- 12. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
- 13. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
- 14. http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3386.html
- 15. http://gcc.gnu.org/projects/cxx1y.html
- 16. https://gcc.gnu.org/onlinedocs/gcc-4.8.4/libstdc++/manual/manual/status.html#status.iso.2011
- 17. https://gcc.gnu.org/onlinedocs/gfortran/BACKTRACE.html
- 18. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
- 19. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
- 20. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
- 21. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
- 22. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
- 23. https://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html
- 24. https://gcc.gnu.org/wiki/Fortran2003Status
- 25. https://gcc.gnu.org/wiki/TS29113Status
- 26. https://gcc.gnu.org/viewcvs/trunk/libgfortran/libgfortran.h?content-type=text%2Fplain&view=co
- 27. http://chasm-interop.sourceforge.net/
- 28. https://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
- 29. https://gcc.gnu.org/onlinedocs/gcc/Fixed-Point.html
- 30. https://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions
- 31. https://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions
- 32. https://gcc.gnu.org/wiki/FunctionMultiVersioning
- 33. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.1
- 34. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.2
- 35. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.3
- 36. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.4
- 37. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.5
- 38. https://gcc.gnu.org/onlinedocs/
- 39. mailto:gcc-help@gcc.gnu.org
- 40. mailto:gcc@gcc.gnu.org
- 41. https://gcc.gnu.org/lists.html
- 42. http://www.fsf.org/
- 43. https://gcc.gnu.org/about.html
- 44. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.7/index.html
- GCC 4.7 Release Series
- June 12, 2014
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.7.4.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 4.7.3 relative to previous releases of GCC.
- Release History
- GCC 4.7.4
- June 12, 2014 ([2]changes, [3]documentation)
- GCC 4.7.3
- April 11, 2013 ([4]changes, [5]documentation)
- GCC 4.7.2
- September 20, 2012 ([6]changes, [7]documentation)
- GCC 4.7.1
- June 14, 2012 ([8]changes, [9]documentation)
- GCC 4.7.0
- March 22, 2012 ([10]changes, [11]documentation)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [12]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [13]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [14]GCC
- project web site or contact the [15]GCC development mailing list.
- To obtain GCC please use [16]our mirror sites or [17]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [18]GCC manuals. If that fails, the
- [19]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [20]gcc@gcc.gnu.org. All of [21]our lists have public
- archives.
- Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [23]maintained by the GCC team. Last modified
- 2014-06-12[24].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-4.7/changes.html
- 3. https://gcc.gnu.org/onlinedocs/4.7.4/
- 4. http://gcc.gnu.org/gcc-4.7/changes.html
- 5. https://gcc.gnu.org/onlinedocs/4.7.3/
- 6. http://gcc.gnu.org/gcc-4.7/changes.html
- 7. https://gcc.gnu.org/onlinedocs/4.7.2/
- 8. http://gcc.gnu.org/gcc-4.7/changes.html
- 9. https://gcc.gnu.org/onlinedocs/4.7.1/
- 10. http://gcc.gnu.org/gcc-4.7/changes.html
- 11. https://gcc.gnu.org/onlinedocs/4.7.0/
- 12. http://gcc.gnu.org/gcc-4.7/buildstat.html
- 13. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 14. http://gcc.gnu.org/index.html
- 15. mailto:gcc@gcc.gnu.org
- 16. http://gcc.gnu.org/mirrors.html
- 17. http://gcc.gnu.org/svn.html
- 18. https://gcc.gnu.org/onlinedocs/
- 19. mailto:gcc-help@gcc.gnu.org
- 20. mailto:gcc@gcc.gnu.org
- 21. https://gcc.gnu.org/lists.html
- 22. http://www.fsf.org/
- 23. https://gcc.gnu.org/about.html
- 24. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.7/changes.html
- GCC 4.7 Release Series
- Changes, New Features, and Fixes
- Caveats
- * The -fconserve-space flag has been deprecated. The flag had no
- effect for most targets: only targets without a global .bss section
- and without support for switchable sections. Furthermore, the flag
- only had an effect for G++, where it could result in wrong
- semantics (please refer to the GCC manual for further details). The
- flag will be removed in GCC 4.8
- * Support for a number of older systems and recently unmaintained or
- untested target ports of GCC has been declared obsolete in GCC 4.7.
- Unless there is activity to revive them, the next release of GCC
- will have their sources permanently removed.
- All GCC ports for the following processor architectures have been
- declared obsolete:
- + picoChip (picochip-*)
- The following ports for individual systems on particular
- architectures have been obsoleted:
- + IRIX 6.5 (mips-sgi-irix6.5)
- + MIPS OpenBSD (mips*-*-openbsd*)
- + Solaris 8 (*-*-solaris2.8). Details can be found in the
- [1]announcement.
- + Tru64 UNIX V5.1 (alpha*-dec-osf5.1*)
- * On ARM, when compiling for ARMv6 (but not ARMv6-M), ARMv7-A,
- ARMv7-R, or ARMv7-M, the new option -munaligned-access is active by
- default, which for some sources generates code that accesses memory
- on unaligned addresses. This requires the kernel of those systems
- to enable such accesses (controlled by CP15 register c1, refer to
- ARM documentation). Alternatively, or for compatibility with
- kernels where unaligned accesses are not supported, all code has to
- be compiled with -mno-unaligned-access. Upstream Linux kernel
- releases have automatically and unconditionally supported unaligned
- accesses as emitted by GCC due to this option being active since
- version 2.6.28.
- * Support on ARM for the legacy floating-point accelerator (FPA) and
- the mixed-endian floating-point format that it used has been
- obsoleted. The ports that still use this format have been obsoleted
- as well. Many legacy ARM ports already provide an alternative that
- uses the VFP floating-point format. The obsolete ports will be
- deleted in the next release.
- The obsolete ports with alternatives are:
- + arm*-*-rtems (use arm*-*-rtemseabi)
- + arm*-*-linux-gnu (use arm*-*-linux-gnueabi)
- + arm*-*-elf (use arm*-*-eabi)
- + arm*-*-uclinux* (use arm*-*-uclinux*eabi)
- Note, however, that these alternatives are not binary compatible
- with their legacy counterparts (although some can support running
- legacy applications).
- The obsolete ports that currently lack a modern alternative are:
- + arm*-*-ecos-elf
- + arm*-*-freebsd
- + arm*-wince-pe*
- New ports that support more recent versions of the architecture are
- welcome.
- * Support for the Maverick co-processor on ARM has been obsoleted.
- Code to support it will be deleted in the next release.
- * Support has been removed for Unix International threads on Solaris
- 2, so the --enable-threads=solaris configure option and the
- -threads compiler option don't work any longer.
- * Support has been removed for the Solaris BSD Compatibility Package,
- which lives in /usr/ucbinclude and /usr/ucblib. It has been removed
- from Solaris 11, and was only intended as a migration aid from
- SunOS 4 to SunOS 5. The -compat-bsd compiler option is not
- recognized any longer.
- * The AVR port's libgcc has been improved and its multilib structure
- has been enhanced. As a result, all objects contributing to an
- application must either be compiled with GCC versions up to 4.6.x
- or with GCC versions 4.7.1 or later. If the compiler is used with
- AVR Libc, you need a version that supports the new layout, i.e.
- implements [2]#35407.
- * The AVR port's -mshort-calls command-line option has been
- deprecated. It will be removed in the GCC 4.8 release. See -mrelax
- for a replacement.
- * The AVR port only references startup code that clears .bss and the
- common section resp. initializes the .data and .rodata section
- provided respective sections (or subsections thereof) are not
- empty, see [3]PR18145. Applications that put all static storage
- objects into non-standard sections and / or define all static
- storage objects in assembler modules, must reference __do_clear_bss
- resp. __do_copy_data by hand or undefine the symbol(s) by means of
- -Wl,-u,__do_clear_bss resp. -Wl,-u,__do_copy_data.
- * The ARM port's -mwords-little-endian option has been deprecated. It
- will be removed in a future release.
- * Support has been removed for the NetWare x86 configuration
- obsoleted in GCC 4.6.
- * It is no longer possible to use the "l" constraint in MIPS16 asm
- statements.
- * GCC versions 4.7.0 and 4.7.1 had changes to the C++ standard
- library which affected the ABI in C++11 mode: a data member was
- added to std::list changing its size and altering the definitions
- of some member functions, and std::pair's move constructor was
- non-trivial which altered the calling convention for functions with
- std::pair arguments or return types. The ABI incompatibilities have
- been fixed for GCC version 4.7.2 but as a result C++11 code
- compiled with GCC 4.7.0 or 4.7.1 may be incompatible with C++11
- code compiled with different GCC versions and with C++98/C++03 code
- compiled with any version.
- * On ARM, a bug has been fixed in GCC's implementation of the AAPCS
- rules for the layout of vectors that could lead to wrong code being
- generated. Vectors larger than 8 bytes in size are now by default
- aligned to an 8-byte boundary. This is an ABI change: code that
- makes explicit use of vector types may be incompatible with binary
- objects built with older versions of GCC. Auto-vectorized code is
- not affected by this change. (This change affects GCC versions
- 4.7.2 and later.)
- * More information on porting to GCC 4.7 from previous versions of
- GCC can be found in the [4]porting guide for this release.
- General Optimizer Improvements
- * Support for a new parameter --param case-values-threshold=n was
- added to allow users to control the cutoff between doing switch
- statements as a series of if statements and using a jump table.
- * Link-time optimization (LTO) improvements:
- + Improved scalability and reduced memory usage. Link time
- optimization of Firefox now requires 3GB of RAM on a 64-bit
- system, while over 8GB was needed previously. Linking time has
- been improved, too. The serial stage of linking Firefox has
- been sped up by about a factor of 10.
- + Reduced size of object files and temporary storage used during
- linking.
- + Streaming performance (both outbound and inbound) has been
- improved.
- + ld -r is now supported with LTO.
- + Several bug fixes, especially in symbol table handling and
- merging.
- * Interprocedural optimization improvements:
- + Heuristics now take into account that after inlining code will
- be optimized out because of known values (or properties) of
- function parameters. For example:
- void foo(int a)
- {
- if (a > 10)
- ... huge code ...
- }
- void bar (void)
- {
- foo (0);
- }
- The call of foo will be inlined into bar even when optimizing
- for code size. Constructs based on __builtin_constant_p are
- now understood by the inliner and code size estimates are
- evaluated a lot more realistically.
- + The representation of C++ virtual thunks and aliases (both
- implicit and defined via the alias attribute) has been
- re-engineered. Aliases no longer pose optimization barriers
- and calls to an alias can be inlined and otherwise optimized.
- + The inter-procedural constant propagation pass has been
- rewritten. It now performs generic function specialization.
- For example when compiling the following:
- void foo(bool flag)
- {
- if (flag)
- ... do something ...
- else
- ... do something else ...
- }
- void bar (void)
- {
- foo (false);
- foo (true);
- foo (false);
- foo (true);
- foo (false);
- foo (true);
- }
- GCC will now produce two copies of foo. One with flag being
- true, while other with flag being false. This leads to
- performance improvements previously possible only by inlining
- all calls. Cloning causes a lot less code size growth.
- * A string length optimization pass has been added. It attempts to
- track string lengths and optimize various standard C string
- functions like strlen, strchr, strcpy, strcat, stpcpy and their
- _FORTIFY_SOURCE counterparts into faster alternatives. This pass is
- enabled by default at -O2 or above, unless optimizing for size, and
- can be disabled by the -fno-optimize-strlen option. The pass can
- e.g. optimize
- char *bar (const char *a)
- {
- size_t l = strlen (a) + 2;
- char *p = malloc (l); if (p == NULL) return p;
- strcpy (p, a); strcat (p, "/"); return p;
- }
- into:
- char *bar (const char *a)
- {
- size_t tmp = strlen (a);
- char *p = malloc (tmp + 2); if (p == NULL) return p;
- memcpy (p, a, tmp); memcpy (p + tmp, "/", 2); return p;
- }
- or for hosted compilations where stpcpy is available in the runtime
- and headers provide its prototype, e.g.
- void foo (char *a, const char *b, const char *c, const char *d)
- {
- strcpy (a, b); strcat (a, c); strcat (a, d);
- }
- can be optimized into:
- void foo (char *a, const char *b, const char *c, const char *d)
- {
- strcpy (stpcpy (stpcpy (a, b), c), d);
- }
- New Languages and Language specific improvements
- * Version 3.1 of the [5]OpenMP specification is now supported for the
- C, C++, and Fortran compilers.
- Ada
- * The command-line option -feliminate-unused-debug-types has been
- re-enabled by default, as it is for the other languages, leading to
- a reduction in debug info size of 12.5% and more for relevant
- cases, as well as to a small compilation speedup.
- C family
- * A new built-in, __builtin_assume_aligned, has been added, through
- which the compiler can be hinted about pointer alignment and can
- use it to improve generated code.
- * A new warning option -Wunused-local-typedefs was added for C, C++,
- Objective-C and Objective-C++. This warning diagnoses typedefs
- locally defined in a function, and otherwise not used.
- * A new experimental command-line option -ftrack-macro-expansion was
- added for C, C++, Objective-C, Objective-C++ and Fortran. It allows
- the compiler to emit diagnostic about the current macro expansion
- stack when a compilation error occurs in a macro expansion.
- * Experimental support for transactional memory has been added. It
- includes support in the compiler, as well as a supporting runtime
- library called libitm. To compile code with transactional memory
- constructs, use the -fgnu-tm option.
- Support is currently available for Alpha, ARM, PowerPC, SH, SPARC,
- and 32-bit/64-bit x86 platforms.
- For more details on transactional memory see [6]the GCC WiKi.
- * Support for atomic operations specifying the C++11/C11 memory model
- has been added. These new __atomic routines replace the existing
- __sync built-in routines.
- Atomic support is also available for memory blocks. Lock-free
- instructions will be used if a memory block is the same size and
- alignment as a supported integer type. Atomic operations which do
- not have lock-free support are left as function calls. A set of
- library functions is available on the GCC atomic wiki in the
- "External Atomics Library" section.
- For more details on the memory models and features, see the
- [7]atomic wiki.
- * When a binary operation is performed on vector types and one of the
- operands is a uniform vector, it is possible to replace the vector
- with the generating element. For example:
- typedef int v4si __attribute__ ((vector_size (16)));
- v4si res, a = {1,2,3,4};
- int x;
- res = 2 + a; /* means {2,2,2,2} + a */
- res = a - x; /* means a - {x,x,x,x} */
- C
- * There is support for some more features from the C11 revision of
- the ISO C standard. GCC now accepts the options -std=c11 and
- -std=gnu11, in addition to the previous -std=c1x and -std=gnu1x.
- + Unicode strings (previously supported only with options such
- as -std=gnu11, now supported with -std=c11), and the
- predefined macros __STDC_UTF_16__ and __STDC_UTF_32__.
- + Nonreturning functions (_Noreturn and <stdnoreturn.h>).
- + Alignment support (_Alignas, _Alignof, max_align_t,
- <stdalign.h>).
- + A built-in function __builtin_complex is provided to support C
- library implementation of the CMPLX family of macros.
- C++
- * G++ now accepts the -std=c++11, -std=gnu++11, and -Wc++11-compat
- options, which are equivalent to -std=c++0x, -std=gnu++0x, and
- -Wc++0x-compat, respectively.
- * G++ now implements [8]C++11 extended friend syntax:
- template<class W>
- class Q
- {
- static const int I = 2;
- public:
- friend W;
- };
- struct B
- {
- int ar[Q<B>::I];
- };
- * Thanks to Ville Voutilainen, G++ now implements [9]C++11 explicit
- override control.
- struct B {
- virtual void f() const final;
- virtual void f(int);
- };
- struct D : B {
- void f() const; // error: D::f attempts to override final B::f
- void f(long) override; // error: doesn't override anything
- void f(int) override; // ok
- };
- struct E final { };
- struct F: E { }; // error: deriving from final class
- * G++ now implements [10]C++11 non-static data member initializers.
- struct A {
- int i = 42;
- } a; // initializes a.i to 42
- * Thanks to Ed Smith-Rowland, G++ now implements [11]C++11
- user-defined literals.
- // Not actually a good approximation. :)
- constexpr long double operator"" _degrees (long double d) { return d * 0.0175; }
- long double pi = 180.0_degrees;
- * G++ now implements [12]C++11 alias-declarations.
- template <class T> using Ptr = T*;
- Ptr<int> ip; // decltype(ip) is int*
- * Thanks to Ville Voutilainen and Pedro Lamarao, G++ now implements
- [13]C++11 delegating constructors.
- struct A {
- A(int);
- A(): A(42) { } // delegate to the A(int) constructor
- };
- * G++ now fully implements C++11 atomic classes rather than just
- integer derived classes.
- class POD {
- int a;
- int b;
- };
- std::atomic<POD> my_atomic_POD;
- * G++ now sets the predefined macro __cplusplus to the correct value,
- 199711L for C++98/03, and 201103L for C++11.
- * G++ now correctly implements the two-phase lookup rules such that
- an unqualified name used in a template must have an appropriate
- declaration found either in scope at the point of definition of the
- template or by argument-dependent lookup at the point of
- instantiation. As a result, code that relies on a second
- unqualified lookup at the point of instantiation to find functions
- declared after the template or in dependent bases will be rejected.
- The compiler will suggest ways to fix affected code, and using the
- -fpermissive compiler flag will allow the code to compile with a
- warning.
- template <class T>
- void f() { g(T()); } // error, g(int) not found by argument-dependent lookup
- void g(int) { } // fix by moving this declaration before the declaration of f
- template <class T>
- struct A: T {
- // error, B::g(B) not found by argument-dependent lookup
- void f() { g(T()); } // fix by using this->g or A::g
- };
- struct B { void g(B); };
- int main()
- {
- f<int>();
- A<B>().f();
- }
- * G++ now properly re-uses stack space allocated for temporary
- objects when their lifetime ends, which can significantly lower
- stack consumption for some C++ functions. As a result of this, some
- code with undefined behavior will now break:
- const int &f(const int &i) { return i; }
- ....
- const int &x = f(1);
- const int &y = f(2);
- Here, x refers to the temporary allocated to hold the 1 argument,
- which only lives until the end of the initialization; it
- immediately becomes a dangling reference. So the next statement
- re-uses the stack slot to hold the 2 argument, and users of x get
- that value instead.
- Note that this should not cause any change of behavior for
- temporaries of types with non-trivial destructors, as they are
- already destroyed at end of full-expression; the change is that now
- the storage is released as well.
- * A new command-line option -Wdelete-non-virtual-dtor has been added
- to warn when delete is used to destroy an instance of a class which
- has virtual functions and non-virtual destructor. It is unsafe to
- delete an instance of a derived class through a pointer to a base
- class if the base class does not have a virtual destructor. This
- warning is enabled by -Wall.
- * A new command-line option -Wzero-as-null-pointer-constant has been
- added to warn when a literal '0' is used as null pointer constant.
- It can be useful to facilitate the conversion to nullptr in C++11.
- * As per C++98, access-declarations are now deprecated by G++.
- Using-declarations are to be used instead. Furthermore, some
- efforts have been made to improve the support of class scope
- using-declarations. In particular, using-declarations referring to
- a dependent type now work as expected ([14]bug c++/14258).
- * The ELF symbol visibility of a template instantiation is now
- properly constrained by the visibility of its template arguments
- ([15]bug c++/35688).
- Runtime Library (libstdc++)
- * [16]Improved experimental support for the new ISO C++ standard,
- C++11, including:
- + using noexcept in most of the library;
- + implementations of pointer_traits, allocator_traits and
- scoped_allocator_adaptor;
- + uses-allocator construction for tuple;
- + vector meets the allocator-aware container requirements;
- + replacing monotonic_clock with steady_clock;
- + enabling the thread support library on most POSIX targets;
- + many small improvements to conform to the FDIS.
- * Added --enable-clocale=newlib configure option.
- * Debug Mode iterators for unordered associative containers.
- * Avoid polluting the global namespace and do not include <unistd.h>.
- Fortran
- * The compile flag [17]-fstack-arrays has been added, which causes
- all local arrays to be put on stack memory. For some programs this
- will improve the performance significantly. If your program uses
- very large local arrays, it is possible that you will have to
- extend your runtime limits for stack memory.
- * The [18]-Ofast flag now also implies [19]-fno-protect-parens and
- [20]-fstack-arrays.
- * Front-end optimizations can now be selected by the
- [21]-ffrontend-optimize option and deselected by the
- -fno-frontend-optimize option.
- * When front-end optimization removes a function call,
- [22]-Wfunction-elimination warns about that.
- * When performing front-end-optimization, the
- [23]-faggressive-function-elimination option allows the removal of
- duplicate function calls even for impure functions.
- * The flag [24]-Wreal-q-constant has been added, which warns if
- floating-point literals have been specified using q (such as
- 1.0q0); the q marker is now supported as a vendor extension to
- denote quad precision (REAL(16) or, if not available, REAL(10)).
- Consider using a kind parameter (such as in 1.0_qp) instead, which
- can be obtained via [25]SELECTED_REAL_KIND.
- * The GFORTRAN_USE_STDERR environment variable has been removed. GNU
- Fortran now always prints error messages to standard error. If you
- wish to redirect standard error, please consult the manual for your
- OS, shell, batch environment etc. as appropriate.
- * The -fdump-core option and GFORTRAN_ERROR_DUMPCORE environment
- variable have been removed. When encountering a serious error,
- gfortran will now always abort the program. Whether a core dump is
- generated depends on the user environment settings; see the ulimit
- -c setting for POSIX shells, limit coredumpsize for C shells, and
- the [26]WER user-mode dumps settings on Windows.
- * The [27]-fbacktrace option is now enabled by default. When
- encountering a fatal error, gfortran will attempt to print a
- backtrace to standard error before aborting. It can be disabled
- with -fno-backtrace. Note: On POSIX targets with the addr2line
- utility from GNU binutils, GNU Fortran can print a backtrace with
- function name, file name, line number information in addition to
- the addresses; otherwise only the addresses are printed.
- * [28]Fortran 2003:
- + Generic interface names which have the same name as derived
- types are now supported, which allows to write constructor
- functions. Note that Fortran does not support static
- constructor functions; only default initialization or an
- explicit structure-constructor initialization are available.
- + [29]Polymorphic (class) arrays are now supported.
- * [30]Fortran 2008:
- + Support for the DO CONCURRENT construct has been added, which
- allows the user to specify that individual loop iterations
- have no interdependencies.
- + [31]Coarrays: Full single-image support except for polymorphic
- coarrays. Additionally, preliminary support for multiple
- images via an MPI-based [32]coarray communication library has
- been added. Note: The library version is not yet usable as
- remote coarray access is not yet possible.
- * [33]TS 29113:
- + New flag [34]-std=f2008ts permits programs that are expected
- to conform to the Fortran 2008 standard and the draft
- Technical Specification (TS) 29113 on Further Interoperability
- of Fortran with C.
- + The OPTIONAL attribute is now allowed for dummy arguments of
- BIND(C) procedures.
- + The RANK intrinsic has been added.
- + The implementation of the ASYNCHRONOUS attribute in GCC is
- compatible with the candidate draft of TS 29113 (since GCC
- 4.6).
- Go
- * GCC 4.7 implements the [35]Go 1 language standard. The library
- support in 4.7.0 is not quite complete, due to release timing.
- Release 4.7.1 includes complete support for Go 1. The Go library is
- from the Go 1.0.1 release.
- * Go has been tested on GNU/Linux and Solaris platforms. It may work
- on other platforms as well.
- New Targets and Target Specific Improvements
- ARM
- * GCC now supports the Cortex-A7 processor implementing the v7-a
- version of the architecture using the option -mcpu=cortex-a7.
- * The default vector size in auto-vectorization for NEON is now 128
- bits. If vectorization fails thusly, the vectorizer tries again
- with 64-bit vectors.
- * A new option -mvectorize-with-neon-double was added to allow users
- to change the vector size to 64 bits.
- AVR
- * GCC now supports the XMEGA architecture. This requires GNU binutils
- 2.22 or later.
- * Support for the [36]named address spaces __flash, __flash1, ...,
- __flash5 and __memx has been added. These address spaces locate
- read-only data in flash memory and allow reading from flash memory
- by means of ordinary C code, i.e. without the need of (inline)
- assembler code:
- const __flash int values[] = { 42, 31 };
- int add_values (const __flash int *p, int i)
- {
- return values[i] + *p;
- }
- * Support has been added for the AVR-specific configure option
- --with-avrlibc=yes in order to arrange for better integration of
- [37]AVR-Libc. This configure option is supported in avr-gcc 4.7.2
- and newer and will only take effect in non-RTEMS configurations. If
- avr-gcc is configured for RTEMS, the option will be ignored which
- is the same as specifying --with-avrlibc=no. See [38]PR54461 for
- more technical details.
- * Support for AVR-specific [39]built-in functions has been added.
- * Support has been added for the signed and unsigned 24-bit scalar
- integer types __int24 and __uint24.
- * New command-line options -maccumulate-args, -mbranch-cost=cost and
- -mstrict-X were added to allow better fine-tuning of code
- optimization.
- * The command option -fdata-sections now also takes affect on the
- section names of variables with the progmem attribute.
- * A new inline assembler print modifier %i to print a RAM address as
- I/O address has been added:
- #include <avr/io.h> /* Port Definitions from AVR-LibC */
- void set_portb (uint8_t value)
- {
- asm volatile ("out %i0, %1" :: "n" (&PORTB), "r" (value) : "memory");
- }
- The offset between an I/O address and the RAM address for that I/O
- location is device-specific. This offset is taken into account when
- printing a RAM address with the %i modifier so that the address is
- suitable to be used as operand in an I/O command. The address must
- be a constant integer known at compile time.
- * The inline assembler constraint "R" to represent integers in the
- range -6 ... 5 has been removed without replacement.
- * Many optimizations to:
- + 64-bit integer arithmetic
- + Widening multiplication
- + Integer division by a constant
- + Avoid constant reloading in multi-byte instructions.
- + Micro-optimizations for special instruction sequences.
- + Generic built-in functions like __builtin_ffs*,
- __builtin_clz*, etc.
- + If-else decision trees generated by switch instructions
- + Merging of data located in flash memory
- + New libgcc variants for devices with 8-bit wide stack pointer
- + ...
- * Better documentation:
- + Handling of EIND and indirect jumps on devices with more than
- 128 KiB of program memory.
- + Handling of the RAMPD, RAMPX, RAMPY and RAMPZ special function
- registers.
- + Function attributes OS_main and OS_task.
- + AVR-specific built-in macros.
- C6X
- * Support has been added for the Texas Instruments C6X family of
- processors.
- CR16
- * Support has been added for National Semiconductor's CR16
- architecture.
- Epiphany
- * Support has been added for Adapteva's Epiphany architecture.
- IA-32/x86-64
- * Support for Intel AVX2 intrinsics, built-in functions and code
- generation is available via -mavx2.
- * Support for Intel BMI2 intrinsics, built-in functions and code
- generation is available via -mbmi2.
- * Implementation and automatic generation of __builtin_clz* using the
- lzcnt instruction is available via -mlzcnt.
- * Support for Intel FMA3 intrinsics and code generation is available
- via -mfma.
- * A new -mfsgsbase command-line option is available that makes GCC
- generate new segment register read/write instructions through
- dedicated built-ins.
- * Support for the new Intel rdrnd instruction is available via
- -mrdrnd.
- * Two additional AVX vector conversion instructions are available via
- -mf16c.
- * Support for new Intel processor codename IvyBridge with RDRND,
- FSGSBASE and F16C is available through -march=core-avx-i.
- * Support for the new Intel processor codename Haswell with AVX2,
- FMA, BMI, BMI2, LZCNT is available through -march=core-avx2.
- * Support for new AMD family 15h processors (Piledriver core) is now
- available through -march=bdver2 and -mtune=bdver2 options.
- * Support for [40]the x32 psABI is now available through the -mx32
- option.
- * Windows mingw targets are using the -mms-bitfields option by
- default.
- * Windows x86 targets are using the __thiscall calling convention for
- C++ class-member functions.
- * Support for the configure option --with-threads=posix for Windows
- mingw targets.
- MIPS
- * GCC now supports thread-local storage (TLS) for MIPS16. This
- requires GNU binutils 2.22 or later.
- * GCC can now generate code specifically for the Cavium Octeon+ and
- Octeon2 processors. The associated command-line options are
- -march=octeon+ and -march=octeon2 respectively. Both options
- require GNU binutils 2.22 or later.
- * GCC can now work around certain 24k errata, under the control of
- the command-line option -mfix-24k. These workarounds require GNU
- binutils 2.20 or later.
- * 32-bit MIPS GNU/Linux targets such as mips-linux-gnu can now build
- n32 and n64 multilibs. The result is effectively a 64-bit GNU/Linux
- toolchain that generates 32-bit code by default. Use the
- configure-time option --enable-targets=all to select these extra
- multilibs.
- * Passing -fno-delayed-branch now also stops the assembler from
- automatically filling delay slots.
- PowerPC/PowerPC64
- * Vectors of type vector long long or vector long are passed and
- returned using the same method as other vectors with the VSX
- instruction set. Previously GCC did not adhere to the ABI for
- 128-bit vectors with 64-bit integer base types (PR 48857). This
- will also be fixed in the GCC 4.6.1 and 4.5.4 releases.
- * A new option -mno-pointers-to-nested-functions was added to allow
- AIX 32-bit/64-bit and GNU/Linux 64-bit PowerPC users to specify
- that the compiler should not load up the chain register (r11)
- before calling a function through a pointer. If you use this
- option, you cannot call nested functions through a pointer, or call
- other languages that might use the static chain.
- * A new option msave-toc-indirect was added to allow AIX
- 32-bit/64-bit and GNU/Linux 64-bit PowerPC users control whether we
- save the TOC in the prologue for indirect calls or generate the
- save inline. This can speed up some programs that call through a
- function pointer a lot, but it can slow down other functions that
- only call through a function pointer in exceptional cases.
- * The PowerPC port will now enable machine-specific built-in
- functions when the user switches the target machine using the
- #pragma GCC target or __attribute__ ((__target__ ("target"))) code
- sequences. In addition, the target macros are updated. However, due
- to the way the -save-temps switch is implemented, you won't see the
- effect of these additional macros being defined in preprocessor
- output.
- SH
- * A new option -msoft-atomic has been added. When it is specified,
- GCC will generate GNU/Linux-compatible gUSA atomic sequences for
- the new __atomic routines.
- * Since it is neither supported by GAS nor officially documented,
- code generation for little endian SH2A has been disabled.
- Specifying -ml with -m2a* will now result in a compiler error.
- * The defunct -mbranch-cost option has been fixed.
- * Some improvements to the generated code of:
- + Utilization of the tst #imm,R0 instruction.
- + Dynamic shift instructions on SH2A.
- + Integer absolute value calculations.
- * The -mdiv= option for targets other than SHmedia has been fixed and
- documented.
- SPARC
- * The option -mflat has been reinstated. When it is specified, the
- compiler will generate code for a single register window model.
- This is essentially a new implementation and the corresponding
- debugger support has been added to GDB 7.4.
- * Support for the options -mtune=native and -mcpu=native has been
- added on selected native platforms (GNU/Linux and Solaris).
- * Support for the SPARC T3 (Niagara 3) processor has been added.
- * VIS:
- + An intrinsics header visintrin.h has been added.
- + Builtin intrinsics for the VIS 1.0 edge handling and pixel
- compare instructions have been added.
- + The little-endian version of alignaddr is now supported.
- + When possible, VIS builtins are marked const, which should
- increase the compiler's ability to optimize VIS operations.
- + The compiler now properly tracks the %gsr register and how it
- behaves as an input for various VIS instructions.
- + Akin to fzero, the compiler can now generate fone instructions
- in order to set all of the bits of a floating-point register
- to 1.
- + The documentation for the VIS intrinsics in the GCC manual has
- been brought up to date and many inaccuracies were fixed.
- + Intrinsics for the VIS 2.0 bmask, bshuffle, and
- non-condition-code setting edge instructions have been added.
- Their availability is controlled by the new -mvis2 and
- -mno-vis2 options. They are enabled by default on
- UltraSPARC-III and later CPUs.
- * Support for UltraSPARC Fused Multiply-Add floating-point extensions
- has been added. These instructions are enabled by default on SPARC
- T3 (Niagara 3) and later CPUs.
- TILE-Gx/TILEPro
- * Support has been added for the Tilera TILE-Gx and TILEPro families
- of processors.
- Other significant improvements
- * A new option (-grecord-gcc-switches) was added that appends
- compiler command-line options that might affect code generation to
- the DW_AT_producer attribute string in the DWARF debugging
- information.
- * GCC now supports various new GNU extensions to the DWARF debugging
- information format, like [41]entry value and [42]call site
- information, [43]typed DWARF stack or [44]a more compact macro
- representation. Support for these extensions has been added to GDB
- 7.4. They can be disabled through the -gstrict-dwarf command-line
- option.
- GCC 4.7.1
- This is the [45]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.7.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- The Go frontend in the 4.7.1 release fully supports the [46]Go 1
- language standard.
- GCC 4.7.2
- This is the [47]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.7.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.7.3
- This is the [48]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.7.3 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.7.4
- This is the [49]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.7.4 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- For questions related to the use of GCC, please consult these web
- pages and the [50]GCC manuals. If that fails, the
- [51]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [52]gcc@gcc.gnu.org. All of [53]our lists have public
- archives.
- Copyright (C) [54]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [55]maintained by the GCC team. Last modified
- 2014-12-06[56].
- References
- 1. https://gcc.gnu.org/ml/gcc-patches/2011-03/msg01263.html
- 2. http://savannah.nongnu.org/bugs/?35407
- 3. https://gcc.gnu.org/PR18145
- 4. https://gcc.gnu.org/gcc-4.7/porting_to.html
- 5. http://openmp.org/wp/openmp-specifications/
- 6. https://gcc.gnu.org/wiki/TransactionalMemory
- 7. https://gcc.gnu.org/wiki/Atomic/GCCMM
- 8. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
- 9. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
- 10. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
- 11. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
- 12. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
- 13. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
- 14. https://gcc.gnu.org/PR14258
- 15. https://gcc.gnu.org/PR35688
- 16. https://gcc.gnu.org/onlinedocs/gcc-4.7.4/libstdc++/manual/manual/status.html#status.iso.2011
- 17. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254
- 18. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Optimize-Options.html#index-Ofast-689
- 19. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfno-protect-parens_007d-270
- 20. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254
- 21. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfrontend-optimize_007d-275
- 22. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWfunction-elimination_007d-170
- 23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
- 24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
- 25. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
- 26. http://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx
- 27. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
- 28. https://gcc.gnu.org/wiki/Fortran2003Status
- 29. https://gcc.gnu.org/wiki/OOP
- 30. https://gcc.gnu.org/wiki/Fortran2008Status
- 31. https://gcc.gnu.org/wiki/Coarray
- 32. https://gcc.gnu.org/wiki/CoarrayLib
- 33. https://gcc.gnu.org/wiki/TS29113Status
- 34. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bstd_003d_007d_0040var_007bstd_007d-option-53
- 35. http://weekly.golang.org/doc/go1.html
- 36. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
- 37. http://nongnu.org/avr-libc/
- 38. https://gcc.gnu.org/PR54461
- 39. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html
- 40. https://sites.google.com/site/x32abi/
- 41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
- 42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
- 43. http://www.dwarfstd.org/doc/040408.1.html
- 44. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1
- 45. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
- 46. http://weekly.golang.org/doc/go1.html
- 47. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2
- 48. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3
- 49. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.4
- 50. https://gcc.gnu.org/onlinedocs/
- 51. mailto:gcc-help@gcc.gnu.org
- 52. mailto:gcc@gcc.gnu.org
- 53. https://gcc.gnu.org/lists.html
- 54. http://www.fsf.org/
- 55. https://gcc.gnu.org/about.html
- 56. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.6/index.html
- GCC 4.6 Release Series
- April 12, 2013
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.6.4.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 4.6.3 relative to previous releases of GCC.
- Release History
- GCC 4.6.4
- April 12, 2013 ([2]changes, [3]documentation)
- GCC 4.6.3
- March 1, 2012 ([4]changes, [5]documentation)
- GCC 4.6.2
- October 26, 2011 ([6]changes, [7]documentation)
- GCC 4.6.1
- June 27, 2011 ([8]changes, [9]documentation)
- GCC 4.6.0
- March 25, 2011 ([10]changes, [11]documentation)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [12]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [13]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [14]GCC
- project web site or contact the [15]GCC development mailing list.
- To obtain GCC please use [16]our mirror sites or [17]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [18]GCC manuals. If that fails, the
- [19]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [20]gcc@gcc.gnu.org. All of [21]our lists have public
- archives.
- Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [23]maintained by the GCC team. Last modified
- 2014-06-28[24].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-4.6/changes.html
- 3. https://gcc.gnu.org/onlinedocs/4.6.4/
- 4. http://gcc.gnu.org/gcc-4.6/changes.html
- 5. https://gcc.gnu.org/onlinedocs/4.6.3/
- 6. http://gcc.gnu.org/gcc-4.6/changes.html
- 7. https://gcc.gnu.org/onlinedocs/4.6.2/
- 8. http://gcc.gnu.org/gcc-4.6/changes.html
- 9. https://gcc.gnu.org/onlinedocs/4.6.1/
- 10. http://gcc.gnu.org/gcc-4.6/changes.html
- 11. https://gcc.gnu.org/onlinedocs/4.6.0/
- 12. http://gcc.gnu.org/gcc-4.6/buildstat.html
- 13. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 14. http://gcc.gnu.org/index.html
- 15. mailto:gcc@gcc.gnu.org
- 16. http://gcc.gnu.org/mirrors.html
- 17. http://gcc.gnu.org/svn.html
- 18. https://gcc.gnu.org/onlinedocs/
- 19. mailto:gcc-help@gcc.gnu.org
- 20. mailto:gcc@gcc.gnu.org
- 21. https://gcc.gnu.org/lists.html
- 22. http://www.fsf.org/
- 23. https://gcc.gnu.org/about.html
- 24. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.6/changes.html
- GCC 4.6 Release Series
- Changes, New Features, and Fixes
- Caveats
- * The options -b <machine> and -V <version> have been removed because
- they were unreliable. Instead, users should directly run
- <machine>-gcc when cross-compiling, or <machine>-gcc-<version> to
- run a different version of gcc.
- * GCC now has stricter checks for invalid command-line options. In
- particular, when gcc was called to link object files rather than
- compile source code, it would previously accept and ignore all
- options starting with --, including linker options such as
- --as-needed and --export-dynamic, although such options would
- result in errors if any source code was compiled. Such options, if
- unknown to the compiler, are now rejected in all cases; if the
- intent was to pass them to the linker, options such as
- -Wl,--as-needed should be used.
- * Versions of the GNU C library up to and including 2.11.1 included
- an [1]incorrect implementation of the cproj function. GCC optimizes
- its builtin cproj according to the behavior specified and allowed
- by the ISO C99 standard. If you want to avoid discrepancies between
- the C library and GCC's builtin transformations when using cproj in
- your code, use GLIBC 2.12 or later. If you are using an older GLIBC
- and actually rely on the incorrect behavior of cproj, then you can
- disable GCC's transformations using -fno-builtin-cproj.
- * The C-only intermodule optimization framework (IMA, enabled by
- -combine) has been removed in favor of the new generic link-time
- optimization framework (LTO) introduced in [2]GCC 4.5.0.
- * GCC now ships with the LGPL-licensed libquadmath library, which
- provides quad-precision mathematical functions for targets with a
- __float128 datatype. __float128 is available for targets on 32-bit
- x86, x86-64 and Itanium architectures. The libquadmath library is
- automatically built on such targets when building the Fortran
- compiler.
- * New -Wunused-but-set-variable and -Wunused-but-set-parameter
- warnings were added for C, C++, Objective-C and Objective-C++.
- These warnings diagnose variables respective parameters which are
- only set in the code and never otherwise used. Usually such
- variables are useless and often even the value assigned to them is
- computed needlessly, sometimes expensively. The
- -Wunused-but-set-variable warning is enabled by default by -Wall
- flag and -Wunused-but-set-parameter by -Wall -Wextra flags.
- * On ARM, a bug has been fixed in GCC's implementation of the AAPCS
- rules for the layout of vectors that could lead to wrong code being
- generated. Vectors larger than 8 bytes in size are now by default
- aligned to an 8-byte boundary. This is an ABI change: code that
- makes explicit use of vector types may be incompatible with binary
- objects built with older versions of GCC. Auto-vectorized code is
- not affected by this change. (This change affects GCC versions
- 4.6.4 and later, with the exception of versions 4.7.0 and 4.7.1.)
- * On AVR, variables with the progmem attribute to locate data in
- flash memory must be qualified as const.
- * Support for a number of older systems and recently unmaintained or
- untested target ports of GCC has been declared obsolete in GCC 4.6.
- Unless there is activity to revive them, the next release of GCC
- will have their sources permanently removed.
- All GCC ports for the following processor architectures have been
- declared obsolete:
- + Argonaut ARC (arc-*)
- + National Semiconductor CRX (crx-*)
- + Motorola 68HC11 and 68HC12 (m68hc11-*-*, m6811-*-*,
- m68hc12-*-*, m6812-*-*)
- + Sunplus S+core (score-*)
- The following ports for individual systems on particular
- architectures have been obsoleted:
- + Interix (i[34567]86-*-interix3*)
- + NetWare x86 (i[3456x]86-*-netware*)
- + Generic ARM PE (arm-*-pe* other than arm*-wince-pe*)
- + MCore PE (mcore-*-pe*)
- + SH SymbianOS (sh*-*-symbianelf*)
- + GNU Hurd on Alpha and PowerPC (alpha*-*-gnu*, powerpc*-*-gnu*)
- + M68K uClinux old ABI (m68k-*-uclinuxoldabi*)
- + a.out NetBSD (arm*-*-netbsd*, i[34567]86-*-netbsd*,
- vax-*-netbsd*, but not *-*-netbsdelf*)
- The i[34567]86-*-pe alias for Cygwin targets has also been
- obsoleted; users should configure for i[34567]86-*-cygwin* instead.
- Certain configure options to control the set of libraries built
- with GCC on some targets have been obsoleted. On ARM targets, the
- options --disable-fpu, --disable-26bit, --disable-underscore,
- --disable-interwork, --disable-biendian and --disable-nofmult have
- been obsoleted. On MIPS targets, the options
- --disable-single-float, --disable-biendian and --disable-softfloat
- have been obsoleted.
- * Support has been removed for all the [3]configurations obsoleted in
- GCC 4.5.
- * More information on porting to GCC 4.6 from previous versions of
- GCC can be found in the [4]porting guide for this release.
- General Optimizer Improvements
- * A new general optimization level, -Ofast, has been introduced. It
- combines the existing optimization level -O3 with options that can
- affect standards compliance but result in better optimized code.
- For example, -Ofast enables -ffast-math.
- * Link-time optimization improvements:
- + The [5]Scalable Whole Program Optimizer (WHOPR) project has
- stabilized to the point of being usable. It has become the
- default mode when using the LTO optimization model. Link time
- optimization can now split itself into multiple parallel
- compilations. Parallelism is controlled with -flto=n (where n
- specifies the number of compilations to execute in parallel).
- GCC can also cooperate with a GNU make job server by
- specifying the -flto=jobserver option and adding + to the
- beginning of the Makefile rule executing the linker.
- Classical LTO mode can be enforced by -flto-partition=none.
- This may result in small code quality improvements.
- + A large number of bugs were fixed. GCC itself, Mozilla Firefox
- and other large applications can be built with LTO enabled.
- + The linker plugin support improvements
- o Linker plugin is now enabled by default when the linker
- is detected to have plugin support. This is the case for
- GNU ld 2.21.51 or newer (on ELF and Cygwin targets) and
- the Gold linker on ELF targets. Plugin support of the
- Apple linker on Darwin is not compatible with GCC. The
- linker plugin can also be controlled by the
- -fuse-linker-plugin command line option.
- o Resolution information from the linker plugin is used to
- drive whole program assumptions. Use of the linker plugin
- results in more aggressive optimization on binaries and
- on shared libraries that use the hidden visibility
- attribute. Consequently the use of -fwhole-program is not
- necessary in addition to LTO.
- + Hidden symbols used from non-LTO objects now have to be
- explicitly annotated with externally_visible when the linker
- plugin is not used.
- + C++ inline functions and virtual tables are now privatized
- more aggressively, leading to better inter-procedural
- optimization and faster dynamic linking.
- + Memory usage and intermediate language streaming performance
- have been improved.
- + Static constructors and destructors from individual units are
- inlined into a single function. This can significantly improve
- startup times of large C++ applications where static
- constructors are very common. For example, static constructors
- are used when including the iostream header.
- + Support for the Ada language has been added.
- * Interprocedural optimization improvements
- + The interprocedural framework was re-tuned for link time
- optimization. Several scalability issues were resolved.
- + Improved auto-detection of const and pure functions. Newly,
- noreturn functions are auto-detected.
- The [6]-Wsuggest-attribute=[const|pure|noreturn] flag is
- available that informs users when adding attributes to headers
- might improve code generation.
- + A number of inlining heuristic improvements. In particular:
- o Partial inlining is now supported and enabled by default
- at -O2 and greater. The feature can be controlled via
- -fpartial-inlining.
- Partial inlining splits functions with short hot path to
- return. This allows more aggressive inlining of the hot
- path leading to better performance and often to code size
- reductions (because cold parts of functions are not
- duplicated).
- o Scalability for large compilation units was improved
- significantly.
- o Inlining of callbacks is now more aggressive.
- o Virtual methods are considered for inlining when the
- caller is inlined and devirtualization is then possible.
- o Inlining when optimizing for size (either in cold regions
- of a program or when compiling with -Os) was improved to
- better handle C++ programs with larger abstraction
- penalty, leading to smaller and faster code.
- + The IPA reference optimization pass detecting global variables
- used or modified by functions was strengthened and sped up.
- + Functions whose address was taken are now optimized out when
- all references to them are dead.
- + A new inter-procedural static profile estimation pass detects
- functions that are executed once or unlikely to be executed.
- Unlikely executed functions are optimized for size. Functions
- executed once are optimized for size except for the inner
- loops.
- + On most targets with named section support, functions used
- only at startup (static constructors and main), functions used
- only at exit and functions detected to be cold are placed into
- separate text segment subsections. This extends the
- -freorder-functions feature and is controlled by the same
- switch. The goal is to improve the startup time of large C++
- programs.
- Proper function placement requires linker support. GNU ld
- 2.21.51 on ELF targets was updated to place those functions
- together within the text section leading to better code
- locality and faster startup times of large C++ programs. The
- feature is also supported in the Apple linker. Support in the
- gold linker is planned.
- * A new switch -fstack-usage has been added. It makes the compiler
- output stack usage information for the program, on a per-function
- basis, in an auxiliary file.
- * A new switch -fcombine-stack-adjustments has been added. It can be
- used to enable or disable the compiler's stack-slot combining pass
- which before was enabled automatically at -O1 and above, but could
- not be controlled on its own.
- * A new switch -fstrict-volatile-bitfields has been added. Using it
- indicates that accesses to volatile bitfields should use a single
- access of the width of the field's type. This option can be useful
- for precisely defining and accessing memory-mapped peripheral
- registers from C or C++.
- Compile time and memory usage improvements
- * Datastructures used by the dataflow framework in GCC were
- reorganized for better memory usage and more cache locality.
- Compile time is improved especially on units with large functions
- (possibly resulting from a lot of inlining) not fitting into the
- processor cache. The compile time of the GCC C compiler binary with
- link-time optimization went down by over 10% (benchmarked on x86-64
- target).
- New Languages and Language specific improvements
- Ada
- * Stack checking has been improved on selected architectures (Alpha,
- IA-32/x86-64, RS/6000 and SPARC): it now will detect stack
- overflows in all cases on these architectures.
- * Initial support for Ada 2012 has been added.
- C family
- * A new warning, enabled by -Wdouble-promotion, has been added that
- warns about cases where a value of type float is implicitly
- promoted to double. This is especially helpful for CPUs that handle
- the former in hardware, but emulate the latter in software.
- * A new function attribute leaf was introduced. This attribute allows
- better inter-procedural optimization across calls to functions that
- return to the current unit only via returning or exception
- handling. This is the case for most library functions that have no
- callbacks.
- * Support for a new data type __int128 for targets having wide enough
- machine-mode support.
- * The new function attribute callee_pop_aggregate allows to specify
- if the caller or callee is responsible for popping the aggregate
- return pointer value from the stack.
- * Support for selectively enabling and disabling warnings via #pragma
- GCC diagnostic has been added. For instance:
- #pragma GCC diagnostic error "-Wuninitialized"
- foo(a); /* error is given for this one */
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wuninitialized"
- foo(b); /* no diagnostic for this one */
- #pragma GCC diagnostic pop
- foo(c); /* error is given for this one */
- #pragma GCC diagnostic pop
- foo(d); /* depends on command line options */
- * The -fmax-errors=N option is now supported. Using this option
- causes the compiler to exit after N errors have been issued.
- C
- * There is now experimental support for some features from the
- upcoming C1X revision of the ISO C standard. This support may be
- selected with -std=c1x, or -std=gnu1x for C1X with GNU extensions.
- Note that this support is experimental and may change incompatibly
- in future releases for consistency with changes to the C1X standard
- draft. The following features are newly supported as described in
- the N1539 draft of C1X (with changes agreed at the March 2011 WG14
- meeting); some other features were already supported with no
- compiler changes being needed, or have some support but not in full
- accord with N1539 (as amended).
- + Static assertions (_Static_assert keyword)
- + Typedef redefinition
- + New macros in <float.h>
- + Anonymous structures and unions
- * The new -fplan9-extensions option directs the compiler to support
- some extensions for anonymous struct fields which are implemented
- by the Plan 9 compiler. A pointer to a struct may be automatically
- converted to a pointer to an anonymous field when calling a
- function, in order to make the types match. An anonymous struct
- field whose type is a typedef name may be referred to using the
- typedef name.
- C++
- * Improved [7]experimental support for the upcoming C++0x ISO C++
- standard, including support for constexpr (thanks to Gabriel Dos
- Reis and Jason Merrill), nullptr (thanks to Magnus Fromreide),
- noexcept, unrestricted unions, range-based for loops (thanks to
- Rodrigo Rivas Costa), opaque enum declarations (thanks also to
- Rodrigo), implicitly deleted functions and implicit move
- constructors.
- * When an extern declaration within a function does not match a
- declaration in the enclosing context, G++ now properly declares the
- name within the namespace of the function rather than the namespace
- which was open just before the function definition ([8]c++/43145).
- * GCC now warns by default when casting integers to larger pointer
- types. These warnings can be disabled with the option
- -Wno-int-to-pointer-cast, which is now also available in C++.
- * G++ no longer optimizes using the assumption that a value of
- enumeration type will fall within the range specified by the
- standard, since that assumption is easily violated with a
- conversion from integer type ([9]c++/43680). The old behavior can
- be restored with -fstrict-enums.
- * The new -fnothrow-opt flag changes the semantics of a throw()
- exception specification to match the proposed semantics of the
- noexcept specification: just call terminate if an exception tries
- to propagate out of a function with such an exception
- specification. This dramatically reduces or eliminates the code
- size overhead from adding the exception specification.
- * The new -Wnoexcept flag will suggest adding a noexcept qualifier to
- a function that the compiler can tell doesn't throw if it would
- change the value of a noexcept expression.
- * The -Wshadow option now warns if a local variable or type
- declaration shadows another type in C++. Note that the compiler
- will not warn if a local variable shadows a struct/class/enum, but
- will warn if it shadows an explicit typedef.
- * When an identifier is not found in the current scope, G++ now
- offers suggestions about which identifier might have been intended.
- * G++ now issues clearer diagnostics for missing semicolons after
- class, struct, and union definitions.
- * G++ now issues clearer diagnostics for missing semicolons after
- class member declarations.
- * G++ now issues clearer diagnostics when a colon is used in a place
- where a double-colon was intended.
- * G++ no longer accepts mutable on reference members ([10]c++/33558).
- Use -fpermissive to allow the old, non-conforming behaviour.
- * A few mangling fixes have been made, to attribute const/volatile on
- function pointer types, decltype of a plain decl, and use of a
- function parameter in the declaration of another parameter. By
- default the compiler still uses the old mangling, but emits aliases
- with the new mangling on targets that support strong aliases. Users
- can switch over entirely to the new mangling with -fabi-version=5
- or -fabi-version=0. -Wabi will now warn about code that uses the
- old mangling.
- * In 4.6.0 and 4.6.1 G++ no longer allows objects of const-qualified
- type to be default initialized unless the type has a user-declared
- default constructor. In 4.6.2 G++ implements the proposed
- resolution of [11]DR 253, so default initialization is allowed if
- it initializes all subobjects. Code that fails to compile can be
- fixed by providing an initializer e.g.
- struct A { A(); };
- struct B : A { int i; };
- const B b = B();
- Use -fpermissive to allow the old, non-conforming behaviour.
- Runtime Library (libstdc++)
- * [12]Improved experimental support for the upcoming ISO C++
- standard, C++0x, including using constexpr and nullptr.
- * Performance improvements to the [13]Debug Mode, thanks to Franc,ois
- Dumont.
- * Atomic operations used for reference-counting are annotated so that
- they can be understood by race detectors such as Helgrind, see
- [14]Data Race Hunting.
- * Most libstdc++ standard headers have been changed to no longer
- include the cstddef header as an implementation detail. Code that
- relied on that header being included as side-effect of including
- other standard headers will need to include cstddef explicitly.
- Fortran
- * On systems supporting the libquadmath library, GNU Fortran now also
- supports a quad-precision, kind=16 floating-point data type
- (REAL(16), COMPLEX(16)). As the data type is not fully supported in
- hardware, calculations might be one to two orders of magnitude
- slower than with the 4, 8 or 10 bytes floating-point data types.
- This change does not affect systems which support REAL(16) in
- hardware nor those which do not support libquadmath.
- * Much improved compile time for large array constructors.
- * In order to reduce execution time and memory consumption, use of
- temporary arrays in assignment expressions is avoided for many
- cases. The compiler now reverses loops in order to avoid generating
- a temporary array where possible.
- * Improved diagnostics, especially with -fwhole-file.
- * The -fwhole-file flag is now enabled by default. This improves code
- generation and diagnostics. It can be disabled using the deprecated
- -fno-whole-file flag.
- * Support the generation of Makefile dependencies via the [15]-M...
- flags of GCC; you may need to specify the -cpp option in addition.
- The dependencies take modules, Fortran's include, and CPP's
- #include into account. Note: Using -M for the module path is no
- longer supported, use -J instead.
- * The flag -Wconversion has been modified to only issue warnings
- where a conversion leads to information loss. This drastically
- reduces the number of warnings; -Wconversion is thus now enabled
- with -Wall. The flag -Wconversion-extra has been added and also
- warns about other conversions; -Wconversion-extra typically issues
- a huge number of warnings, most of which can be ignored.
- * A new command-line option -Wunused-dummy-argument warns about
- unused dummy arguments and is included in -Wall. Before,
- -Wunused-variable also warned about unused dummy arguments.
- * Fortran 2003 support has been extended:
- + Improved support for polymorphism between libraries and
- programs and for complicated inheritance patterns (cf.
- [16]object-oriented programming).
- + Experimental support of the ASSOCIATE construct.
- + In pointer assignments it is now possible to specify the lower
- bounds of the pointer and, for a rank-1 or a simply contiguous
- data-target, to remap the bounds.
- + Automatic (re)allocation: In intrinsic assignments to
- allocatable variables the left-hand side will be automatically
- allocated (if unallocated) or reallocated (if the shape or
- type parameter is different). To avoid the small performance
- penalty, you can use a(:) = ... instead of a = ... for arrays
- and character strings - or disable the feature using -std=f95
- or -fno-realloc-lhs.
- + Deferred type parameter: For scalar allocatable and pointer
- variables the character length can be deferred.
- + Namelist variables with allocatable and pointer attribute and
- nonconstant length type parameter are supported.
- * Fortran 2008 support has been extended:
- + Experimental [17]coarray support (for one image only, i.e.
- num_images() == 1); use the [18]-fcoarray=single flag to
- enable it.
- + The STOP and the new ERROR STOP statements now support all
- constant expressions.
- + Support for the CONTIGUOUS attribute.
- + Support for ALLOCATE with MOLD.
- + Support for the STORAGE_SIZE intrinsic inquiry function.
- + Support of the NORM2 and PARITY intrinsic functions.
- + The following bit intrinsics were added: POPCNT and POPPAR for
- counting the number of 1 bits and returning the parity; BGE,
- BGT, BLE, and BLT for bitwise comparisons; DSHIFTL and DSHIFTR
- for combined left and right shifts, MASKL and MASKR for simple
- left and right justified masks, MERGE_BITS for a bitwise merge
- using a mask, SHIFTA, SHIFTL and SHIFTR for shift operations,
- and the transformational bit intrinsics IALL, IANY and
- IPARITY.
- + Support of the EXECUTE_COMMAND_LINE intrinsic subroutine.
- + Support for the IMPURE attribute for procedures, which allows
- for ELEMENTAL procedures without the restrictions of PURE.
- + Null pointers (including NULL()) and not allocated variables
- can be used as actual argument to optional non-pointer,
- non-allocatable dummy arguments, denoting an absent argument.
- + Non-pointer variables with TARGET attribute can be used as
- actual argument to POINTER dummies with INTENT(IN)
- + Pointers including procedure pointers and those in a derived
- type (pointer components) can now be initialized by a target
- instead of only by NULL.
- + The EXIT statement (with construct-name) can now be used to
- leave not only the DO but also the ASSOCIATE, BLOCK, IF,
- SELECT CASE and SELECT TYPE constructs.
- + Internal procedures can now be used as actual argument.
- + The named constants INTEGER_KINDS, LOGICAL_KINDS, REAL_KINDS
- and CHARACTER_KINDS of the intrinsic module ISO_FORTRAN_ENV
- have been added; these arrays contain the supported kind
- values for the respective types.
- + The module procedures C_SIZEOF of the intrinsic module
- ISO_C_BINDINGS and COMPILER_VERSION and COMPILER_OPTIONS of
- ISO_FORTRAN_ENV have been implemented.
- + Minor changes: obsolescence diagnostics for ENTRY was added
- for -std=f2008; a line may start with a semicolon; for
- internal and module procedures END can be used instead of END
- SUBROUTINE and END FUNCTION; SELECTED_REAL_KIND now also takes
- a RADIX argument; intrinsic types are supported for
- TYPE(intrinsic-type-spec); multiple type-bound procedures can
- be declared in a single PROCEDURE statement; implied-shape
- arrays are supported for named constants (PARAMETER). The
- transformational, three argument versions of BESSEL_JN and
- BESSEL_YN were added - the elemental, two-argument version had
- been added in GCC 4.4; note that the transformational
- functions use a recurrence algorithm.
- Go
- Support for the [19]Go programming language has been added to GCC. It
- is not enabled by default when you build GCC; use the
- --enable-languages configure option to build it. The driver program for
- compiling Go code is gccgo.
- Go is currently known to work on GNU/Linux and RTEMS. Solaris support
- is in progress. It may or may not work on other platforms.
- Objective-C and Objective-C++
- * The -fobjc-exceptions flag is now required to enable Objective-C
- exception and synchronization syntax (introduced by the keywords
- @try, @catch, @finally and @synchronized).
- * A number of Objective-C 2.0 features and extensions are now
- supported by GCC. These features are enabled by default; you can
- disable them by using the new -fobjc-std=objc1 command-line option.
- * The Objective-C 2.0 dot-syntax is now supported. It is an
- alternative syntax for using getters and setters; object.count is
- automatically converted into [object count] or [object setCount:
- ...] depending on context; for example if (object.count > 0) is
- automatically compiled into the equivalent of if ([object count] >
- 0) while object.count = 0; is automatically compiled into the
- equivalent ot [object setCount: 0];. The dot-syntax can be used
- with instance and class objects and with any setters or getters, no
- matter if they are part of a declared property or not.
- * Objective-C 2.0 declared properties are now supported. They are
- declared using the new @property keyword, and are most commonly
- used in conjunction with the new Objective-C 2.0 dot-syntax. The
- nonatomic, readonly, readwrite, assign, retain, copy, setter and
- getter attributes are all supported. Marking declared properties
- with __attribute__ ((deprecated)) is supported too.
- * The Objective-C 2.0 @synthesize and @dynamic keywords are
- supported. @synthesize causes the compiler to automatically
- synthesize a declared property, while @dynamic is used to disable
- all warnings for a declared property for which no implementation is
- provided at compile time. Synthesizing declared properties requires
- runtime support in most useful cases; to be able to use it with the
- GNU runtime, appropriate helper functions have been added to the
- GNU Objective-C runtime ABI, and are implemented by the GNU
- Objective-C runtime library shipped with GCC.
- * The Objective-C 2.0 fast enumeration syntax is supported in
- Objective-C. This is currently not yet available in Objective-C++.
- Fast enumeration requires support in the runtime, and such support
- has been added to the GNU Objective-C runtime library (shipped with
- GCC).
- * The Objective-C 2.0 @optional keyword is supported. It allows you
- to mark methods or properties in a protocol as optional as opposed
- to required.
- * The Objective-C 2.0 @package keyword is supported. It has currently
- the same effect as the @public keyword.
- * Objective-C 2.0 method attributes are supported. Currently the
- supported attributes are deprecated, sentinel, noreturn and format.
- * Objective-C 2.0 method argument attributes are supported. The most
- widely used attribute is unused, to mark an argument as unused in
- the implementation.
- * Objective-C 2.0 class and protocol attributes are supported.
- Currently the only supported attribute is deprecated.
- * Objective-C 2.0 class extensions are supported. A class extension
- has the same syntax as a category declaration with no category
- name, and the methods and properties declared in it are added
- directly to the main class. It is mostly used as an alternative to
- a category to add methods to a class without advertising them in
- the public headers, with the advantage that for class extensions
- the compiler checks that all the privately declared methods are
- actually implemented.
- * As a result of these enhancements, GCC can now be used to build
- Objective-C and Objective-C++ software that uses Foundation and
- other important system frameworks with the NeXT runtime on Darwin 9
- and Darwin 10 (OSX 10.5 and 10.6).
- * Many bugs in the compiler have been fixed in this release; in
- particular, LTO can now be used when compiling Objective-C and
- Objective-C++ and the parser is much more robust in dealing with
- invalid code.
- Runtime Library (libobjc)
- * The GNU Objective-C runtime library now defines the macro
- __GNU_LIBOBJC__ (with a value that is increased at every release
- where there is any change to the API) in objc/objc.h, making it
- easy to determine if the GNU Objective-C runtime library is being
- used, and if so, which version. Previous versions of the GNU
- Objective-C runtime library (and other Objective-C runtime
- libraries such as the Apple one) do not define this macro.
- * A new Objective-C 2.0 API, almost identical to the one implemented
- by the Apple Objective-C runtime, has been implemented in the GNU
- Objective-C runtime library. The new API hides the internals of
- most runtime structures but provides a more extensive set of
- functions to operate on them. It is much easier, for example, to
- create or modify classes at runtime. The new API also makes it
- easier to port software from Apple to GNU as almost no changes
- should be required. The old API is still supported for backwards
- compatibility; including the old objc/objc-api.h header file
- automatically selects the old API, while including the new
- objc/runtime.h header file automatically selects the new API.
- Support for the old API is being phased out and upgrading the
- software to use the new API is strongly recommended. To check for
- the availability of the new API, the __GNU_LIBOBJC__ macro can be
- used as older versions of the GNU Objective-C runtime library,
- which do not support the new API, do not define such a macro.
- * Runtime support for @synchronized has been added.
- * Runtime support for Objective-C 2.0 synthesized property accessors
- has been added.
- * Runtime support for Objective-C 2.0 fast enumeration has been
- added.
- New Targets and Target Specific Improvements
- ARM
- * GCC now supports the Cortex-M4 processor implementing the v7-em
- version of the architecture using the option -mcpu=cortex-m4.
- * Scheduling descriptions for the Cortex-M4, the Neon and the
- floating point units of the Cortex-A9 and a pipeline description
- for the Cortex-A5 have been added.
- * Synchronization primitives such as __sync_fetch_and_add and friends
- are now inlined for supported architectures rather than calling
- into a kernel helper function.
- * SSA loop prefetching is enabled by default for the Cortex-A9 at
- -O3.
- * Several improvements were committed to improve code generation for
- the ARM architecture including a rewritten implementation for load
- and store multiples.
- * Several enhancements were committed to improve SIMD code generation
- for NEON by adding support for widening instructions, misaligned
- loads and stores, vector conditionals and support for 64 bit
- arithmetic.
- * Support was added for the Faraday cores fa526, fa606te, fa626te,
- fmp626te, fmp626 and fa726te and can be used with the respective
- names as parameters to the -mcpu= option.
- * Basic support was added for Cortex-A15 and is available through
- -mcpu=cortex-a15.
- * GCC for AAPCS configurations now more closely adheres to the AAPCS
- specification by enabling -fstrict-volatile-bitfields by default.
- IA-32/x86-64
- * The new -fsplit-stack option permits programs to use a
- discontiguous stack. This is useful for threaded programs, in that
- it is no longer necessary to specify the maximum stack size when
- creating a thread. This feature is currently only implemented for
- 32-bit and 64-bit x86 GNU/Linux targets.
- * Support for emitting profiler counter calls before function
- prologues. This is enabled via a new command-line option -mfentry.
- * Optimization for the Intel Core 2 processors is now available
- through the -march=core2 and -mtune=core2 options.
- * Support for Intel Core i3/i5/i7 processors is now available through
- the -march=corei7 and -mtune=corei7 options.
- * Support for Intel Core i3/i5/i7 processors with AVX is now
- available through the -march=corei7-avx and -mtune=corei7-avx
- options.
- * Support for AMD Bobcat (family 14) processors is now available
- through the -march=btver1 and -mtune=btver1 options.
- * Support for AMD Bulldozer (family 15) processors is now available
- through the -march=bdver1 and -mtune=bdver1 options.
- * The default setting (when not optimizing for size) for 32-bit
- GNU/Linux and Darwin x86 targets has been changed to
- -fomit-frame-pointer. The default can be reverted to
- -fno-omit-frame-pointer by configuring GCC with the
- --enable-frame-pointer configure option.
- * Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support
- __float128 on 32-bit and 64-bit x86 targets.
- * AVX floating-point arithmetic can now be enabled by default at
- configure time with the new --with-fpmath=avx option.
- * The SSA loop prefetching pass is enabled when using -O3 when
- optimizing for CPUs where prefetching is beneficial (AMD CPUs newer
- than K6).
- * Support for TBM (Trailing Bit Manipulation) built-in functions and
- code generation is available via -mtbm.
- * Support for AMD's BMI (Bit Manipulation) built-in functions and
- code generation is available via -mbmi.
- MicroBlaze
- * Support has been added for the Xilinx MicroBlaze softcore processor
- (microblaze-elf) embedded target. This configurable processor is
- supported on several Xilinx Spartan and Virtex FPGAs.
- MIPS
- * GCC now supports the Loongson 3A processor. Its canonical -march=
- and -mtune= name is loongson3a.
- MN10300 / AM33
- * The inline assembly register constraint "A" has been renamed "c".
- This constraint is used to select a floating-point register that
- can be used as the destination of a multiply-accumulate
- instruction.
- * New inline assembly register constraints "A" and "D" have been
- added. These constraint letters resolve to all general registers
- when compiling for AM33, and resolve to address registers only or
- data registers only when compiling for MN10300.
- * The MDR register is represented in the compiler. One can access the
- register via the "z" constraint in inline assembly. It can be
- marked as clobbered or used as a local register variable via the
- "mdr" name. The compiler uses the RETF instruction if the function
- does not modify the MDR register, so it is important that inline
- assembly properly annotate any usage of the register.
- PowerPC/PowerPC64
- * GCC now supports the Applied Micro Titan processor with
- -mcpu=titan.
- * The -mrecip option has been added, which indicates whether the
- reciprocal and reciprocal square root instructions should be used.
- * The -mveclibabi=mass option can be used to enable the compiler to
- autovectorize mathematical functions using the Mathematical
- Acceleration Subsystem library.
- * The -msingle-pic-base option has been added, which instructs the
- compiler to avoid loading the PIC base register in function
- prologues. The PIC base register must be initialized by the runtime
- system.
- * The -mblock-move-inline-limit option has been added, which enables
- the user to control the maximum size of inlined memcpy calls and
- similar.
- * PowerPC64 GNU/Linux support for applications requiring a large TOC
- section has been improved. A new command-line option,
- -mcmodel=MODEL, controls this feature; valid values for MODEL are
- small, medium, or large.
- * The Altivec builtin functions vec_ld and vec_st have been modified
- to generate the Altivec memory instructions LVX and STVX, even if
- the -mvsx option is used. In the initial GCC 4.5 release, these
- builtin functions were changed to generate VSX memory reference
- instructions instead of Altivec memory instructions, but there are
- differences between the two instructions. If the VSX instruction
- set is available, you can now use the new builtin functions
- vec_vsx_ld and vec_vsx_st which always generates the VSX memory
- instructions.
- * The GCC compiler on AIX now defaults to a process layout with a
- larger data space allowing larger programs to be compiled.
- * The GCC long double type on AIX 6.1 and above has reverted to 64
- bit double precision, matching the AIX XL compiler default, because
- of missing C99 symbols required by the GCC runtime.
- * The default processor scheduling model and tuning for PowerPC64
- GNU/Linux and for AIX 6.1 and above now is POWER7.
- * Starting with GCC 4.6.1, vectors of type vector long long or vector
- long are passed and returned in the same method as other vectors
- with the VSX instruction set. Previously the GCC compiler did not
- adhere to the ABI for 128-bit vectors with 64-bit integer base
- types (PR 48857). This is also fixed in the GCC 4.5.4 release.
- S/390, zSeries and System z9/z10, IBM zEnterprise z196
- * Support for the zEnterprise z196 processor has been added. When
- using the -march=z196 option, the compiler will generate code
- making use of the following instruction facilities:
- + Conditional load/store
- + Distinct-operands
- + Floating-point-extension
- + Interlocked-access
- + Population-count
- The -mtune=z196 option avoids the compare and branch instructions
- as well as the load address instruction with an index register as
- much as possible and performs instruction scheduling appropriate
- for the new out-of-order pipeline architecture.
- * When using the -m31 -mzarch options the generated code still
- conforms to the 32-bit ABI but uses the general purpose registers
- as 64-bit registers internally. This requires a Linux kernel saving
- the whole 64-bit registers when doing a context switch. Kernels
- providing that feature indicate that by the 'highgprs' string in
- /proc/cpuinfo.
- * The SSA loop prefetching pass is enabled when using -O3.
- SPARC
- * GCC now supports the LEON series of SPARC V8 processors. The code
- generated by the compiler can either be tuned to it by means of the
- --with-tune=leon configure option and -mtune=leon compilation
- option, or the compiler can be built for the sparc-leon-{elf,linux}
- and sparc-leon3-{elf,linux} targets directly.
- * GCC has stopped sign/zero-extending parameter registers in the
- callee for functions taking parameters with sub-word size in 32-bit
- mode, since this is redundant with the specification of the ABI.
- GCC has never done so in 64-bit mode since this is also redundant.
- * The command line option -mfix-at697f has been added to enable the
- documented workaround for the single erratum of the Atmel AT697F
- processor.
- Operating Systems
- Android
- * GCC now supports the Bionic C library and provides a convenient way
- of building native libraries and applications for the Android
- platform. Refer to the documentation of the -mandroid and -mbionic
- options for details on building native code. At the moment, Android
- support is enabled only for ARM.
- Darwin/Mac OS X
- * General
- + Initial support for CFString types has been added.
- This allows GCC to build projects including the system Core
- Foundation frameworks. The GCC Objective-C family supports
- CFString "toll-free bridged" as per the Mac OS X system tools.
- CFString is also recognized in the context of format
- attributes and arguments (see the documentation for format
- attributes for limitations). At present, 8-bit character types
- are supported.
- + Object file size reduction.
- The Darwin zeroed memory allocators have been re-written to
- make more use of .zerofill sections. For non-debug code, this
- can reduce object file size significantly.
- + Objective-C family 64-bit support (NeXT ABI 2).
- Initial support has been added to support 64-bit Objective-C
- code using the Darwin/OS X native (NeXT) runtime. ABI version
- 2 will be selected automatically when 64-bit code is built.
- + Objective-C family 32-bit ABI 1.
- For 32-bit code ABI 1 is also now also allowed. At present it
- must be selected manually using -fobjc-abi-version=1 where
- applicable - i.e. on Darwin 9/10 (OS X 10.5/10.6).
- * x86 Architecture
- + The -mdynamic-no-pic option has been enabled.
- Code supporting -mdynamic-no-pic optimization has been added
- and is applicable to -m32 builds. The compiler bootstrap uses
- the option where appropriate.
- + The default value for -mtune= has been changed.
- Since Darwin systems are primarily Xeon, Core-2 or similar the
- default tuning has been changed to -mtune=core2.
- + Enable 128-bit long double (__float128) support on Darwin.
- * PPC Architecture
- + Darwin64 ABI.
- Several significant bugs have been fixed, such that GCC now
- produces code compatible with the Darwin64 PowerPC ABI.
- + libffi and boehm-gc.
- The Darwin ports of the libffi and boehm-gc libraries have
- been upgraded to include a Darwin64 implementation. This means
- that powerpc*-*-darwin9 platforms may now, for example, build
- Java applications with -m64 enabled.
- + Plug-in support has been enabled.
- + The -fsection-anchors option is now available although,
- presently, not heavily tested.
- Solaris 2
- New Features
- * Support symbol versioning with the Sun linker.
- * Allow libstdc++ to leverage full ISO C99 support on Solaris 10+.
- * Support thread-local storage (TLS) with the Sun assembler on
- Solaris 2/x86.
- * Support TLS on Solaris 8/9 if prerequisites are met.
- * Support COMDAT group with the GNU assembler and recent Sun linker.
- * Support the Sun assembler visibility syntax.
- * Default Solaris 2/x86 to -march=pentium4 (Solaris 10+) resp.
- -march=pentiumpro (Solaris 8/9).
- * Don't use SSE on Solaris 8/9 x86 by default.
- * Enable 128-bit long double (__float128) support on Solaris 2/x86.
- ABI Change
- * Change the ABI for returning 8-byte vectors like __m64 in MMX
- registers on Solaris 10+/x86 to match the Sun Studio 12.1+
- compilers. This is an incompatible change. If you use such types,
- you must either recompile all your code with the new compiler or
- use the new -mvect8-ret-in-mem option to remain compatible with
- previous versions of GCC and Sun Studio.
- Windows x86/x86_64
- * Initial support for decimal floating point.
- * Support for the __thiscall calling-convention.
- * Support for hot-patchable function prologues via the
- ms_hook_prologue attribute for x86_64 in addition to 32-bit x86.
- * Improvements of stack-probing and stack-allocation mechanisms.
- * Support of push/pop-macro pragma as preprocessor command.
- With #pragma push_macro("macro-name") the current definition of
- macro-name is saved and can be restored with #pragma
- pop_macro("macro-name") to its saved definition.
- * Enable 128-bit long double (__float128) support on MinGW and
- Cygwin.
- Other significant improvements
- Installation changes
- * An install-strip make target is provided that installs stripped
- executables, and may install libraries with unneeded or debugging
- sections stripped.
- * On Power7 systems, there is a potential problem if you build the
- GCC compiler with a host compiler using options that enable the VSX
- instruction set generation. If the host compiler has been patched
- so that the vec_ld and vec_st builtin functions generate Altivec
- memory instructions instead of VSX memory instructions, then you
- should be able to build the compiler with VSX instruction
- generation.
- Changes for GCC Developers
- Note: these changes concern developers that develop GCC itself or
- software that integrates with GCC, such as plugins, and not the general
- GCC users.
- * The gengtype utility, which previously was internal to the GCC
- build process, has been enchanced to provide GC root information
- for plugins as necessary.
- * The old GC allocation interface of ggc_alloc and friends was
- replaced with a type-safe alternative.
- GCC 4.6.1
- This is the [20]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.6.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.6.2
- This is the [21]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.6.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.6.3
- This is the [22]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.6.3 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.6.4
- This is the [23]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.6.4 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- For questions related to the use of GCC, please consult these web
- pages and the [24]GCC manuals. If that fails, the
- [25]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [26]gcc@gcc.gnu.org. All of [27]our lists have public
- archives.
- Copyright (C) [28]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [29]maintained by the GCC team. Last modified
- 2014-12-06[30].
- References
- 1. http://sourceware.org/bugzilla/show_bug.cgi?id=10401
- 2. http://gcc.gnu.org/gcc-4.5/changes.html
- 3. http://gcc.gnu.org/gcc-4.5/changes.html#obsoleted
- 4. http://gcc.gnu.org/gcc-4.6/porting_to.html
- 5. http://gcc.gnu.org/projects/lto/whopr.pdf
- 6. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
- 7. http://gcc.gnu.org/gcc-4.6/cxx0x_status.html
- 8. https://gcc.gnu.org/PR43145
- 9. https://gcc.gnu.org/PR43680
- 10. https://gcc.gnu.org/PR33558
- 11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#253
- 12. https://gcc.gnu.org/onlinedocs/gcc-4.6.4/libstdc++/manual/manual/status.html#status.iso.200x
- 13. https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html
- 14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.races
- 15. https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
- 16. https://gcc.gnu.org/wiki/OOP
- 17. https://gcc.gnu.org/wiki/Coarray
- 18. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcoarray_007d-233
- 19. http://golang.org/
- 20. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.1
- 21. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.2
- 22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.3
- 23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.4
- 24. https://gcc.gnu.org/onlinedocs/
- 25. mailto:gcc-help@gcc.gnu.org
- 26. mailto:gcc@gcc.gnu.org
- 27. https://gcc.gnu.org/lists.html
- 28. http://www.fsf.org/
- 29. https://gcc.gnu.org/about.html
- 30. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.5/index.html
- GCC 4.5 Release Series
- Jul 2, 2012
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.5.4.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 4.5.3 relative to previous releases of GCC.
- Release History
- GCC 4.5.4
- Jul 2, 2012 ([2]changes)
- GCC 4.5.3
- Apr 28, 2011 ([3]changes)
- GCC 4.5.2
- Dec 16, 2010 ([4]changes)
- GCC 4.5.1
- Jul 31, 2010 ([5]changes)
- GCC 4.5.0
- April 14, 2010 ([6]changes)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [7]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [8]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [9]GCC project
- web site or contact the [10]GCC development mailing list.
- To obtain GCC please use [11]our mirror sites or [12]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [13]GCC manuals. If that fails, the
- [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [15]gcc@gcc.gnu.org. All of [16]our lists have public
- archives.
- Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [18]maintained by the GCC team. Last modified
- 2014-06-28[19].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-4.5/changes.html
- 3. http://gcc.gnu.org/gcc-4.5/changes.html
- 4. http://gcc.gnu.org/gcc-4.5/changes.html
- 5. http://gcc.gnu.org/gcc-4.5/changes.html
- 6. http://gcc.gnu.org/gcc-4.5/changes.html
- 7. http://gcc.gnu.org/gcc-4.5/buildstat.html
- 8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 9. http://gcc.gnu.org/index.html
- 10. mailto:gcc@gcc.gnu.org
- 11. http://gcc.gnu.org/mirrors.html
- 12. http://gcc.gnu.org/svn.html
- 13. https://gcc.gnu.org/onlinedocs/
- 14. mailto:gcc-help@gcc.gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. https://gcc.gnu.org/lists.html
- 17. http://www.fsf.org/
- 18. https://gcc.gnu.org/about.html
- 19. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.5/changes.html
- GCC 4.5 Release Series
- Changes, New Features, and Fixes
- Caveats
- * GCC now requires the [1]MPC library in order to build. See the
- [2]prerequisites page for version requirements.
- * Support for a number of older systems and recently unmaintained or
- untested target ports of GCC has been declared obsolete in GCC 4.5.
- Unless there is activity to revive them, the next release of GCC
- will have their sources permanently removed.
- The following ports for individual systems on particular
- architectures have been obsoleted:
- + IRIX releases before 6.5 (mips-sgi-irix5*,
- mips-sgi-irix6.[0-4])
- + Solaris 7 (*-*-solaris2.7)
- + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*,
- alpha-dec-osf5.0*)
- + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions
- can be found in the [3]announcement.
- Support for the classic POWER architecture implemented in the
- original RIOS and RIOS2 processors of the old IBM RS/6000 product
- line has been obsoleted in the rs6000 port. This does not affect
- the new generation Power and PowerPC architectures.
- * Support has been removed for all the [4]configurations obsoleted in
- GCC 4.4.
- * Support has been removed for the protoize and unprotoize utilities,
- obsoleted in GCC 4.4.
- * Support has been removed for tuning for Itanium1 (Merced) variants.
- Note that code tuned for Itanium2 should also run correctly on
- Itanium1.
- * GCC now generates unwind info also for epilogues. DWARF debuginfo
- generated by GCC now uses more features of DWARF3 than before, and
- also some DWARF4 features. GDB older than 7.0 is not able to handle
- either of these, so to debug GCC 4.5 generated binaries or
- libraries GDB 7.0 or later is needed. You can disable use of DWARF4
- features with the -gdwarf-3 -gstrict-dwarf options, or use
- -gdwarf-2 -gstrict-dwarf to restrict GCC to just DWARF2, but
- epilogue unwind info is emitted unconditionally whenever unwind
- info is emitted.
- * On x86 targets, code containing floating-point calculations may run
- significantly slower when compiled with GCC 4.5 in strict C99
- conformance mode than they did with earlier GCC versions. This is
- due to stricter standard conformance of the compiler and can be
- avoided by using the option -fexcess-precision=fast; also see
- [5]below.
- * The function attribute noinline no longer prevents GCC from cloning
- the function. A new attribute noclone has been introduced for this
- purpose. Cloning a function means that it is duplicated and the new
- copy is specialized for certain contexts (for example when a
- parameter is a known constant).
- General Optimizer Improvements
- * The -save-temps now takes an optional argument. The -save-temps and
- -save-temps=cwd switches write the temporary files in the current
- working directory based on the original source file. The
- -save-temps=obj switch will write files into the directory
- specified with the -o option, and the intermediate filenames are
- based on the output file. This will allow the user to get the
- compiler intermediate files when doing parallel builds without two
- builds of the same filename located in different directories from
- interfering with each other.
- * Debugging dumps are now created in the same directory as the object
- file rather than in the current working directory. This allows the
- user to get debugging dumps when doing parallel builds without two
- builds of the same filename interfering with each other.
- * GCC has been integrated with the [6]MPC library. This allows GCC to
- evaluate complex arithmetic at compile time [7]more accurately. It
- also allows GCC to evaluate calls to complex built-in math
- functions having constant arguments and replace them at compile
- time with their mathematically equivalent results. In doing so, GCC
- can generate correct results regardless of the math library
- implementation or floating point precision of the host platform.
- This also allows GCC to generate identical results regardless of
- whether one compiles in native or cross-compile configurations to a
- particular target. The following built-in functions take advantage
- of this new capability: cacos, cacosh, casin, casinh, catan,
- catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
- and ctanh. The float and long double variants of these functions
- (e.g. csinf and csinl) are also handled.
- * A new link-time optimizer has been added ([8]-flto). When this
- option is used, GCC generates a bytecode representation of each
- input file and writes it to specially-named sections in each object
- file. When the object files are linked together, all the function
- bodies are read from these named sections and instantiated as if
- they had been part of the same translation unit. This enables
- interprocedural optimizations to work across different files (and
- even different languages), potentially improving the performance of
- the generated code. To use the link-timer optimizer, -flto needs to
- be specified at compile time and during the final link. If the
- program does not require any symbols to be exported, it is possible
- to combine -flto and the experimental [9]-fwhopr with
- [10]-fwhole-program to allow the interprocedural optimizers to use
- more aggressive assumptions.
- * The automatic parallelization pass was enhanced to support
- parallelization of outer loops.
- * Automatic parallelization can be enabled as part of Graphite. In
- addition to -ftree-parallelize-loops=, specify
- -floop-parallelize-all to enable the Graphite-based optimization.
- * The infrastructure for optimizing based on [11]restrict qualified
- pointers has been rewritten and should result in code generation
- improvements. Optimizations based on restrict qualified pointers
- are now also available when using -fno-strict-aliasing.
- * There is a new optimization pass that attempts to change prototype
- of functions to avoid unused parameters, pass only relevant parts
- of structures and turn arguments passed by reference to arguments
- passed by value when possible. It is enabled by -O2 and above as
- well as -Os and can be manually invoked using the new command-line
- switch -fipa-sra.
- * GCC now optimize exception handling code. In particular cleanup
- regions that are proved to not have any effect are optimized out.
- New Languages and Language specific improvements
- All languages
- * The -fshow-column option is now on by default. This means error
- messages now have a column associated with them.
- Ada
- * Compilation of programs heavily using discriminated record types
- with variant parts has been sped up and generates more compact
- code.
- * Stack checking now works reasonably well on most plaforms. In some
- specific cases, stack overflows may still fail to be detected, but
- a compile-time warning will be issued for these cases.
- C family
- * If a header named in a #include directive is not found, the
- compiler exits immediately. This avoids a cascade of errors arising
- from declarations expected to be found in that header being
- missing.
- * A new built-in function __builtin_unreachable() has been added that
- tells the compiler that control will never reach that point. It may
- be used after asm statements that terminate by transferring control
- elsewhere, and in other places that are known to be unreachable.
- * The -Wlogical-op option now warns for logical expressions such as
- (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be
- mistakes. This option is disabled by default.
- * An asm goto feature has been added to allow asm statements that
- jump to C labels.
- * C++0x raw strings are supported for C++ and for C with -std=gnu99.
- * The deprecated attribute now takes an optional string argument, for
- example, __attribute__((deprecated("text string"))), that will be
- printed together with the deprecation warning.
- C
- * The -Wenum-compare option, which warns when comparing values of
- different enum types, now works for C. It formerly only worked for
- C++. This warning is enabled by -Wall. It may be avoided by using a
- type cast.
- * The -Wcast-qual option now warns about casts which are unsafe in
- that they permit const-correctness to be violated without further
- warnings. Specifically, it warns about cases where a qualifier is
- added when all the lower types are not const. For example, it warns
- about a cast from char ** to const char **.
- * The -Wc++-compat option is significantly improved. It issues new
- warnings for:
- + Using C++ reserved operator names as identifiers.
- + Conversions to enum types without explicit casts.
- + Using va_arg with an enum type.
- + Using different enum types in the two branches of ?:.
- + Using ++ or -- on a variable of enum type.
- + Using the same name as both a struct, union or enum tag and a
- typedef, unless the typedef refers to the tagged type itself.
- + Using a struct, union, or enum which is defined within another
- struct or union.
- + A struct field defined using a typedef if there is a field in
- the struct, or an enclosing struct, whose name is the typedef
- name.
- + Duplicate definitions at file scope.
- + Uninitialized const variables.
- + A global variable with an anonymous struct, union, or enum
- type.
- + Using a string constant to initialize a char array whose size
- is the length of the string.
- * The new -Wjump-misses-init option warns about cases where a goto or
- switch skips the initialization of a variable. This sort of branch
- is an error in C++ but not in C. This warning is enabled by
- -Wc++-compat.
- * GCC now ensures that a C99-conforming <stdint.h> is present on most
- targets, and uses information about the types in this header to
- implement the Fortran bindings to those types. GCC does not ensure
- the presence of such a header, and does not implement the Fortran
- bindings, on the following targets: NetBSD, VxWorks, VMS,
- SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF.
- * GCC now implements C90- and C99-conforming rules for constant
- expressions. This may cause warnings or errors for some code using
- expressions that can be folded to a constant but are not constant
- expressions as defined by ISO C.
- * All known target-independent C90 and C90 Amendment 1 conformance
- bugs, and all known target-independent C99 conformance bugs not
- related to floating point or extended identifiers, have been fixed.
- * The C decimal floating point support now includes support for the
- FLOAT_CONST_DECIMAL64 pragma.
- * The named address space feature from ISO/IEC TR 18037 is now
- supported. This is currently only implemented for the SPU
- processor.
- C++
- * Improved [12]experimental support for the upcoming C++0x ISO C++
- standard, including support for raw strings, lambda expressions and
- explicit type conversion operators.
- * When printing the name of a class template specialization, G++ will
- now omit any template arguments which come from default template
- arguments. This behavior (and the pretty-printing of function
- template specializations as template signature and arguments) can
- be disabled with the -fno-pretty-templates option.
- * Access control is now applied to typedef names used in a template,
- which may cause G++ to reject some ill-formed code that was
- accepted by earlier releases. The -fno-access-control option can be
- used as a temporary workaround until the code is corrected.
- * Compilation time for code that uses templates should now scale
- linearly with the number of instantiations rather than
- quadratically, as template instantiations are now looked up using
- hash tables.
- * Declarations of functions that look like builtin declarations of
- library functions are only considered to be redeclarations if they
- are declared with extern "C". This may cause problems with code
- that omits extern "C" on hand-written declarations of C library
- functions such as abort or memcpy. Such code is ill-formed, but was
- accepted by earlier releases.
- * Diagnostics that used to complain about passing non-POD types to
- ... or jumping past the declaration of a non-POD variable now check
- for triviality rather than PODness, as per C++0x.
- * In C++0x mode local and anonymous classes are now allowed as
- template arguments, and in declarations of variables and functions
- with linkage, so long as any such declaration that is used is also
- defined ([13]DR 757).
- * Labels may now have attributes, as has been permitted for a while
- in C. This is only permitted when the label definition and the
- attribute specifier is followed by a semicolon--i.e., the label
- applies to an empty statement. The only useful attribute for a
- label is unused.
- * G++ now implements [14]DR 176. Previously G++ did not support using
- the injected-class-name of a template base class as a type name,
- and lookup of the name found the declaration of the template in the
- enclosing scope. Now lookup of the name finds the
- injected-class-name, which can be used either as a type or as a
- template, depending on whether or not the name is followed by a
- template argument list. As a result of this change, some code that
- was previously accepted may be ill-formed because
- 1. The injected-class-name is not accessible because it's from a
- private base, or
- 2. The injected-class-name cannot be used as an argument for a
- template template parameter.
- In either of these cases, the code can be fixed by adding a
- nested-name-specifier to explicitly name the template. The first
- can be worked around with -fno-access-control; the second is only
- rejected with -pedantic.
- * A new standard mangling for SIMD vector types has been added, to
- avoid name clashes on systems with vectors of varying length. By
- default the compiler still uses the old mangling, but emits aliases
- with the new mangling on targets that support strong aliases. Users
- can switch over entirely to the new mangling with -fabi-version=4
- or -fabi-version=0. -Wabi will now warn about code that uses the
- old mangling.
- * The command-line option -ftemplate-depth-N is now written as
- -ftemplate-depth=N and the old form is deprecated.
- * Conversions between NULL and non-pointer types are now warned by
- default. The new option -Wno-conversion-null disables these
- warnings. Previously these warnings were only available when using
- -Wconversion explicitly.
- Runtime Library (libstdc++)
- * Improved experimental support for the upcoming ISO C++ standard,
- C++0x, including:
- + Support for <future>, <functional>, and <random>.
- + Existing facilities now exploit explicit operators and the
- newly implemented core C++0x features.
- + The header <cstdatomic> has been renamed to <atomic>.
- * An experimental [15]profile mode has been added. This is an
- implementation of many C++ standard library constructs with an
- additional analysis layer that gives performance improvement advice
- based on recognition of suboptimal usage patterns. For example,
- #include <vector>
- int main()
- {
- std::vector<int> v;
- for (int k = 0; k < 1024; ++k)
- v.insert(v.begin(), k);
- }
- When instrumented via the profile mode, can return suggestions
- about the initial size and choice of the container used as follows:
- vector-to-list: improvement = 5: call stack = 0x804842c ...
- : advice = change std::vector to std::list
- vector-size: improvement = 3: call stack = 0x804842c ...
- : advice = change initial container size from 0 to 1024
- These constructs can be substituted for the normal libstdc++
- constructs on a piecemeal basis, or all existing components can be
- transformed via the -D_GLIBCXX_PROFILE macro.
- * [16]Support for decimal floating-point arithmetic (aka ISO C++ TR
- 24733) has been added. This support is in header file
- <decimal/decimal>, uses namespace std::decimal, and includes
- classes decimal32, decimal64, and decimal128.
- * Sources have been audited for application of function attributes
- nothrow, const, pure, and noreturn.
- * Python pretty-printers have been added for many standard library
- components that simplify the internal representation and present a
- more intuitive view of components when used with
- appropriately-advanced versions of GDB. For more information,
- please consult the more [17]detailed description.
- * The default behavior for comparing typeinfo names has changed, so
- in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
- * The new -static-libstdc++ option directs g++ to link the C++
- library statically, even if the default would normally be to link
- it dynamically.
- Fortran
- * The COMMON default padding has been changed - instead of adding the
- padding before a variable it is now added afterwards, which
- increases the compatibility with other vendors and helps to obtain
- the correct output in some cases. Cf. also the -falign-commons
- option ([18]added in 4.4).
- * The -finit-real= option now also supports the value snan for
- signalling not-a-number; to be effective, one additionally needs to
- enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
- optimizations can turn a signalling NaN into a quiet one.
- * The new option -fcheck= has been added with the options bounds,
- array-temps, do, pointer, and recursive. The bounds and array-temps
- options are equivalent to -fbounds-check and
- -fcheck-array-temporaries. The do option checks for invalid
- modification of loop iteration variables, and the recursive option
- tests for recursive calls to subroutines/functions which are not
- marked as recursive. With pointer pointer association checks in
- calls are performed; however, neither undefined pointers nor
- pointers in expressions are handled. Using -fcheck=all enables all
- these run-time checks.
- * The run-time checking -fcheck=bounds now warns about invalid string
- lengths of character dummy arguments. Additionally, more
- compile-time checks have been added.
- * The new option [19]-fno-protect-parens has been added; if set, the
- compiler may reorder REAL and COMPLEX expressions without regard to
- parentheses.
- * GNU Fortran no longer links against libgfortranbegin. As before,
- MAIN__ (assembler symbol name) is the actual Fortran main program,
- which is invoked by the main function. However, main is now
- generated and put in the same object file as MAIN__. For the time
- being, libgfortranbegin still exists for backward compatibility.
- For details see the new [20]Mixed-Language Programming chapter in
- the manual.
- * The I/O library was restructured for performance and cleaner code.
- * Array assignments and WHERE are now run in parallel when OpenMP's
- WORKSHARE is used.
- * The experimental option -fwhole-file was added. The option allows
- whole-file checking of procedure arguments and allows for better
- optimizations. It can also be used with -fwhole-program, which is
- now also supported in gfortran.
- * More Fortran 2003 and Fortran 2008 mathematical functions can now
- be used as initialization expressions.
- * Some extended attributes such as STDCALL are now supported via the
- [21]GCC$ compiler directive.
- * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
- intrinsic behaves now as if zero were always positive.
- * For legacy compatibiliy: On Cygwin and MinGW, the special files
- CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now
- supported.
- * Fortran 2003 support has been extended:
- + Procedure-pointer function results and procedure-pointer
- components (including PASS),
- + allocatable scalars (experimental),
- + DEFERRED type-bound procedures,
- + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements
- have been implemented.
- + The ALLOCATE statement supports type-specs and the SOURCE=
- argument.
- + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC
- type-bound procedure (i.e. as type-bound operators).
- + Rounding (ROUND=, RZ, ...) for output is now supported.
- + The INT_FAST{8,16,32,64,128}_T kind type parameters of the
- intrinsic module ISO_C_BINDING are now supported, except for
- the targets listed above as ones where GCC does not have
- <stdint.h> type information.
- + Extensible derived types with type-bound procedure or
- procedure pointer with PASS attribute now have to use CLASS in
- line with the Fortran 2003 standard; the workaround to use
- TYPE is no longer supported.
- + [22]Experimental, incomplete support for polymorphism,
- including CLASS, SELECT TYPE and dynamic dispatch of
- type-bound procedure calls. Some features do not work yet such
- as unlimited polymorphism (CLASS(*)).
- * Fortran 2008 support has been extended:
- + The OPEN statement now supports the NEWUNIT= option, which
- returns a unique file unit, thus preventing inadvertent use of
- the same unit in different parts of the program.
- + Support for unlimited format items has been added.
- + The INT{8,16,32} and REAL{32,64,128} kind type parameters of
- the intrinsic module ISO_FORTRAN_ENV are now supported.
- + Using complex arguments with TAN, SINH, COSH, TANH, ASIN,
- ACOS, and ATAN is now possible; the functions ASINH, ACOSH,
- and ATANH have been added (for real and complex arguments) and
- ATAN(Y,X) is now an alias for ATAN2(Y,X).
- + The BLOCK construct has been implemented.
- New Targets and Target Specific Improvements
- AIX
- * Full cross-toolchain support now available with GNU Binutils
- ARM
- * GCC now supports the Cortex-M0 and Cortex-A5 processors.
- * GCC now supports the ARM v7E-M architecture.
- * GCC now supports VFPv4-based FPUs and FPUs with
- single-precision-only VFP.
- * GCC has many improvements to optimization for other ARM processors,
- including scheduling support for the integer pipeline on Cortex-A9.
- * GCC now supports the IEEE 754-2008 half-precision floating-point
- type, and a variant ARM-specific half-precision type. This type is
- specified using __fp16, with the layout determined by
- -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and
- VFPv4 half-precision instructions will be used.
- * GCC now supports the variant of AAPCS that uses VFP registers for
- parameter passing and return values.
- AVR
- * The -mno-tablejump option has been removed because it has the same
- effect as the -fno-jump-tables option.
- * Added support for these new AVR devices:
- + ATmega8U2
- + ATmega16U2
- + ATmega32U2
- IA-32/x86-64
- * GCC now will set the default for -march= based on the configure
- target.
- * GCC now supports handling floating-point excess precision arising
- from use of the x87 floating-point unit in a way that conforms to
- ISO C99. This is enabled with -fexcess-precision=standard and with
- standards conformance options such as -std=c99, and may be disabled
- using -fexcess-precision=fast.
- * Support for the Intel Atom processor is now available through the
- -march=atom and -mtune=atom options.
- * A new -mcrc32 option is now available to enable crc32 intrinsics.
- * A new -mmovbe option is now available to enable GCC to use the
- movbe instruction to implement __builtin_bswap32 and
- __builtin_bswap64.
- * SSE math now can be enabled by default at configure time with the
- new --with-fpmath=sse option.
- * There is a new intrinsic header file, <x86intrin.h>. It should be
- included before using any IA-32/x86-64 intrinsics.
- * Support for the XOP, FMA4, and LWP instruction sets for the AMD
- Orochi processors are now available with the -mxop, -mfma4, and
- -mlwp options.
- * The -mabm option enables GCC to use the popcnt and lzcnt
- instructions on AMD processors.
- * The -mpopcnt option enables GCC to use the popcnt instructions on
- both AMD and Intel processors.
- M68K/ColdFire
- * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x
- and 5441x devices.
- * GCC now supports thread-local storage (TLS) on M68K and ColdFire
- processors.
- MeP
- Support has been added for the Toshiba Media embedded Processor (MeP,
- or mep-elf) embedded target.
- MIPS
- * GCC now supports MIPS 1004K processors.
- * GCC can now be configured with options --with-arch-32,
- --with-arch-64, --with-tune-32 and --with-tune-64 to control the
- default optimization separately for 32-bit and 64-bit modes.
- * MIPS targets now support an alternative _mcount interface, in which
- register $12 points to the function's save slot for register $31.
- This interface is selected by the -mcount-ra-address option; see
- the documentation for more details.
- * GNU/Linux targets can now generate read-only .eh_frame sections.
- This optimization requires GNU binutils 2.20 or above, and is only
- available if GCC is configured with a suitable version of binutils.
- * GNU/Linux targets can now attach special relocations to indirect
- calls, so that the linker can turn them into direct jumps or
- branches. This optimization requires GNU binutils 2.20 or later,
- and is automatically selected if GCC is configured with an
- appropriate version of binutils. It can be explicitly enabled or
- disabled using the -mrelax-pic-calls command-line option.
- * GCC now generates more heavily-optimized atomic operations on
- Octeon processors.
- * MIPS targets now support the -fstack-protector option.
- * GCC now supports an -msynci option, which specifies that synci is
- enough to flush the instruction cache, without help from the
- operating system. GCC uses this information to optimize
- automatically-generated cache flush operations, such as those used
- for nested functions in C. There is also a --with-synci
- configure-time option, which makes -msynci the default.
- * GCC supports four new function attributes for interrupt handlers:
- interrupt, use_shadow_register_set, keep_interrupts_masked and
- use_debug_exception_return. See the documentation for more details
- about these attributes.
- RS/6000 (POWER/PowerPC)
- * GCC now supports the Power ISA 2.06, which includes the VSX
- instructions that add vector 64-bit floating point support, new
- population count instructions, and conversions between floating
- point and unsigned types.
- * Support for the power7 processor is now available through the
- -mcpu=power7 and -mtune=power7.
- * GCC will now vectorize loops that contain simple math functions
- like copysign when generating code for altivec or VSX targets.
- * Support for the A2 processor is now available through the -mcpu=a2
- and -mtune=a2 options.
- * Support for the 476 processor is now available through the
- -mcpu={476,476fp} and -mtune={476,476fp} options.
- * Support for the e500mc64 processor is now available through the
- -mcpu=e500mc64 and -mtune=e500mc64 options.
- * GCC can now be configured with options --with-cpu-32,
- --with-cpu-64, --with-tune-32 and --with-tune-64 to control the
- default optimization separately for 32-bit and 64-bit modes.
- * Starting with GCC 4.5.4, vectors of type vector long long or vector
- long are passed and returned in the same method as other vectors
- with the VSX instruction set. Previously the GCC compiler did not
- adhere to the ABI for 128-bit vectors with 64-bit integer base
- types (PR 48857). This is also fixed in the GCC 4.6.1 release.
- RX
- Support has been added for the Renesas RX Processor (rx-elf) target.
- Operating Systems
- Windows (Cygwin and MinGW)
- * GCC now installs all the major language runtime libraries as DLLs
- when configured with the --enable-shared option.
- * GCC now makes use of the new support for aligned common variables
- in versions of binutils >= 2.20 to fix bugs in the support for SSE
- data types.
- * Improvements to the libffi support library increase the reliability
- of code generated by GCJ on all Windows platforms. Libgcj is
- enabled by default for the first time.
- * Libtool improvements simplify installation by placing the generated
- DLLs in the correct binaries directory.
- * Numerous other minor bugfixes and improvements, and substantial
- enhancements to the Fortran language support library.
- >
- Other significant improvements
- Plugins
- * It is now possible to extend the compiler without having to modify
- its source code. A new option -fplugin=file.so tells GCC to load
- the shared object file.so and execute it as part of the compiler.
- The internal documentation describes the details on how plugins can
- interact with the compiler.
- Installation changes
- * The move to newer autotools changed default installation
- directories and switches to control them: The --with-datarootdir,
- --with-docdir, --with-pdfdir, and --with-htmldir switches are not
- used any more. Instead, you can now use --datarootdir, --docdir,
- --htmldir, and --pdfdir. The default installation directories have
- changed as follows according to the GNU Coding Standards:
- datarootdir read-only architecture-independent data root [PREFIX/share]
- localedir locale-specific message catalogs [DATAROOTDIR/locale]
- docdir documentation root [DATAROOTDIR/doc/PACKAGE]
- htmldir html documentation [DOCDIR]
- dvidir dvi documentation [DOCDIR]
- pdfdir pdf documentation [DOCDIR]
- psdir ps documentation [DOCDIR]
- The following variables have new default values:
- datadir read-only architecture-independent data [DATAROOTDIR]
- infodir info documentation [DATAROOTDIR/info]
- mandir man documentation [DATAROOTDIR/man]
- GCC 4.5.1
- This is the [23]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.5.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- All languages
- * GCC's new link-time optimizer ([24]-flto) now also works on a few
- non-ELF targets:
- + Cygwin (*-cygwin*)
- + MinGW (*-mingw*)
- + Darwin on x86-64 (x86_64-apple-darwin*)
- LTO is not enabled by default for these targets. To enable LTO, you
- should configure with the --enable-lto option.
- GCC 4.5.2
- This is the [25]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.5.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.5.3
- This is the [26]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.5.3 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- On the PowerPC compiler, the Altivec builtin functions vec_ld and
- vec_st have been modified to generate the Altivec memory instructions
- LVX and STVX, even if the -mvsx option is used. In the initial GCC 4.5
- release, these builtin functions were changed to generate VSX memory
- reference instructions instead of Altivec memory instructions, but
- there are differences between the two instructions. If the VSX
- instruction set is available, you can now use the new builtin functions
- vec_vsx_ld and vec_vsx_st which always generates the VSX memory
- instructions.
- GCC 4.5.4
- This is the [27]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.5.4 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- For questions related to the use of GCC, please consult these web
- pages and the [28]GCC manuals. If that fails, the
- [29]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [30]gcc@gcc.gnu.org. All of [31]our lists have public
- archives.
- Copyright (C) [32]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [33]maintained by the GCC team. Last modified
- 2014-12-06[34].
- References
- 1. http://www.multiprecision.org/
- 2. https://gcc.gnu.org/install/prerequisites.html
- 3. https://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
- 4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
- 5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
- 6. http://www.multiprecision.org/
- 7. https://gcc.gnu.org/PR30789
- 8. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
- 9. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
- 10. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
- 11. https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
- 12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
- 13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
- 14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
- 15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
- 16. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
- 17. http://sourceware.org/gdb/wiki/STLSupport
- 18. http://gcc.gnu.org/gcc-4.4/changes.html
- 19. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
- 20. https://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
- 21. https://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
- 22. https://gcc.gnu.org/wiki/OOP
- 23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
- 24. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
- 25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
- 26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
- 27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
- 28. https://gcc.gnu.org/onlinedocs/
- 29. mailto:gcc-help@gcc.gnu.org
- 30. mailto:gcc@gcc.gnu.org
- 31. https://gcc.gnu.org/lists.html
- 32. http://www.fsf.org/
- 33. https://gcc.gnu.org/about.html
- 34. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.4/index.html
- GCC 4.4 Release Series
- March 13, 2012
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.4.7.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 4.4.6 relative to previous releases of GCC.
- Release History
- GCC 4.4.7
- March 13, 2012 ([2]changes)
- GCC 4.4.6
- April 16, 2011 ([3]changes)
- GCC 4.4.5
- October 1, 2010 ([4]changes)
- GCC 4.4.4
- April 29, 2010 ([5]changes)
- GCC 4.4.3
- January 21, 2010 ([6]changes)
- GCC 4.4.2
- October 15, 2009 ([7]changes)
- GCC 4.4.1
- July 22, 2009 ([8]changes)
- GCC 4.4.0
- April 21, 2009 ([9]changes)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [10]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [11]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [12]GCC
- project web site or contact the [13]GCC development mailing list.
- To obtain GCC please use [14]our mirror sites or [15]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [16]GCC manuals. If that fails, the
- [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [18]gcc@gcc.gnu.org. All of [19]our lists have public
- archives.
- Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [21]maintained by the GCC team. Last modified
- 2014-06-28[22].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-4.4/changes.html
- 3. http://gcc.gnu.org/gcc-4.4/changes.html
- 4. http://gcc.gnu.org/gcc-4.4/changes.html
- 5. http://gcc.gnu.org/gcc-4.4/changes.html
- 6. http://gcc.gnu.org/gcc-4.4/changes.html
- 7. http://gcc.gnu.org/gcc-4.4/changes.html
- 8. http://gcc.gnu.org/gcc-4.4/changes.html
- 9. http://gcc.gnu.org/gcc-4.4/changes.html
- 10. http://gcc.gnu.org/gcc-4.4/buildstat.html
- 11. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 12. http://gcc.gnu.org/index.html
- 13. mailto:gcc@gcc.gnu.org
- 14. http://gcc.gnu.org/mirrors.html
- 15. http://gcc.gnu.org/svn.html
- 16. https://gcc.gnu.org/onlinedocs/
- 17. mailto:gcc-help@gcc.gnu.org
- 18. mailto:gcc@gcc.gnu.org
- 19. https://gcc.gnu.org/lists.html
- 20. http://www.fsf.org/
- 21. https://gcc.gnu.org/about.html
- 22. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.4/changes.html
- GCC 4.4 Release Series
- Changes, New Features, and Fixes
- The latest release in the 4.4 release series is [1]GCC 4.4.7.
- Caveats
- * __builtin_stdarg_start has been completely removed from GCC.
- Support for <varargs.h> had been deprecated since GCC 4.0. Use
- __builtin_va_start as a replacement.
- * Some of the errors issued by the C++ front end that could be
- downgraded to warnings in previous releases by using -fpermissive
- are now warnings by default. They can be converted into errors by
- using -pedantic-errors.
- * Use of the cpp assertion extension will now emit a warning when
- -Wdeprecated or -pedantic is used. This extension has been
- deprecated for many years, but never warned about.
- * Packed bit-fields of type char were not properly bit-packed on many
- targets prior to GCC 4.4. On these targets, the fix in GCC 4.4
- causes an ABI change. For example there is no longer a 4-bit
- padding between field a and b in this structure:
- struct foo
- {
- char a:4;
- char b:8;
- } __attribute__ ((packed));
- There is a new warning to help identify fields that are affected:
- foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
- The warning can be disabled with -Wno-packed-bitfield-compat.
- * On ARM EABI targets, the C++ mangling of the va_list type has been
- changed to conform to the current revision of the EABI. This does
- not affect the libstdc++ library included with GCC.
- * The SCOUNT and POS bits of the MIPS DSP control register are now
- treated as global. Previous versions of GCC treated these fields as
- call-clobbered instead.
- * The MIPS port no longer recognizes the h asm constraint. It was
- necessary to remove this constraint in order to avoid generating
- unpredictable code sequences.
- One of the main uses of the h constraint was to extract the high
- part of a multiplication on 64-bit targets. For example:
- asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
- You can now achieve the same effect using 128-bit types:
- typedef unsigned int uint128_t __attribute__((mode(TI)));
- result = ((uint128_t) x * y) >> 64;
- The second sequence is better in many ways. For example, if x and y
- are constants, the compiler can perform the multiplication at
- compile time. If x and y are not constants, the compiler can
- schedule the runtime multiplication better than it can schedule an
- asm statement.
- * Support for a number of older systems and recently unmaintained or
- untested target ports of GCC has been declared obsolete in GCC 4.4.
- Unless there is activity to revive them, the next release of GCC
- will have their sources permanently removed.
- The following ports for individual systems on particular
- architectures have been obsoleted:
- + Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
- m68k-*-aout*)
- + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
- armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
- sh-*-*). This does not affect other more specific targets
- using the COFF object format on those architectures, or the
- more specific H8300 and SH targets (h8300-*-rtems*,
- h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
- sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
- + 2BSD on PDP-11 (pdp11-*-bsd)
- + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
- powerpc-ibm-aix4.[12]*)
- + Tuning support for Itanium1 (Merced) variants. Note that code
- tuned for Itanium2 should also run correctly on Itanium1.
- * The protoize and unprotoize utilities have been obsoleted and will
- be removed in GCC 4.5. These utilities have not been installed by
- default since GCC 3.0.
- * Support has been removed for all the [2]configurations obsoleted in
- GCC 4.3.
- * Unknown -Wno-* options are now silently ignored by GCC if no other
- diagnostics are issued. If other diagnostics are issued, then GCC
- warns about the unknown options.
- * More information on porting to GCC 4.4 from previous versions of
- GCC can be found in the [3]porting guide for this release.
- General Optimizer Improvements
- * A new command-line switch -findirect-inlining has been added. When
- turned on it allows the inliner to also inline indirect calls that
- are discovered to have known targets at compile time thanks to
- previous inlining.
- * A new command-line switch -ftree-switch-conversion has been added.
- This new pass turns simple initializations of scalar variables in
- switch statements into initializations from a static array, given
- that all the values are known at compile time and the ratio between
- the new array size and the original switch branches does not exceed
- the parameter --param switch-conversion-max-branch-ratio (default
- is eight).
- * A new command-line switch -ftree-builtin-call-dce has been added.
- This optimization eliminates unnecessary calls to certain builtin
- functions when the return value is not used, in cases where the
- calls can not be eliminated entirely because the function may set
- errno. This optimization is on by default at -O2 and above.
- * A new command-line switch -fconserve-stack directs the compiler to
- minimize stack usage even if it makes the generated code slower.
- This affects inlining decisions.
- * When the assembler supports it, the compiler will now emit unwind
- information using assembler .cfi directives. This makes it possible
- to use such directives in inline assembler code. The new option
- -fno-dwarf2-cfi-asm directs the compiler to not use .cfi
- directives.
- * The [4]Graphite branch has been merged. This merge has brought in a
- new framework for loop optimizations based on a polyhedral
- intermediate representation. These optimizations apply to all the
- languages supported by GCC. The following new code transformations
- are available in GCC 4.4:
- + -floop-interchange performs loop interchange transformations
- on loops. Interchanging two nested loops switches the inner
- and outer loops. For example, given a loop like:
- DO J = 1, M
- DO I = 1, N
- A(J, I) = A(J, I) * C
- ENDDO
- ENDDO
- loop interchange will transform the loop as if the user had
- written:
- DO I = 1, N
- DO J = 1, M
- A(J, I) = A(J, I) * C
- ENDDO
- ENDDO
- which can be beneficial when N is larger than the caches,
- because in Fortran, the elements of an array are stored in
- memory contiguously by column, and the original loop iterates
- over rows, potentially creating at each access a cache miss.
- + -floop-strip-mine performs loop strip mining transformations
- on loops. Strip mining splits a loop into two nested loops.
- The outer loop has strides equal to the strip size and the
- inner loop has strides of the original loop within a strip.
- For example, given a loop like:
- DO I = 1, N
- A(I) = A(I) + C
- ENDDO
- loop strip mining will transform the loop as if the user had
- written:
- DO II = 1, N, 4
- DO I = II, min (II + 3, N)
- A(I) = A(I) + C
- ENDDO
- ENDDO
- + -floop-block performs loop blocking transformations on loops.
- Blocking strip mines each loop in the loop nest such that the
- memory accesses of the element loops fit inside caches. For
- example, given a loop like:
- DO I = 1, N
- DO J = 1, M
- A(J, I) = B(I) + C(J)
- ENDDO
- ENDDO
- loop blocking will transform the loop as if the user had
- written:
- DO II = 1, N, 64
- DO JJ = 1, M, 64
- DO I = II, min (II + 63, N)
- DO J = JJ, min (JJ + 63, M)
- A(J, I) = B(I) + C(J)
- ENDDO
- ENDDO
- ENDDO
- ENDDO
- which can be beneficial when M is larger than the caches,
- because the innermost loop will iterate over a smaller amount
- of data that can be kept in the caches.
- * A new register allocator has replaced the old one. It is called
- integrated register allocator (IRA) because coalescing, register
- live range splitting, and hard register preferencing are done
- on-the-fly during coloring. It also has better integration with the
- reload pass. IRA is a regional register allocator which uses modern
- Chaitin-Briggs coloring instead of Chow's priority coloring used in
- the old register allocator. More info about IRA internals and
- options can be found in the GCC manuals.
- * A new instruction scheduler and software pipeliner, based on the
- selective scheduling approach, has been added. The new pass
- performs instruction unification, register renaming, substitution
- through register copies, and speculation during scheduling. The
- software pipeliner is able to pipeline non-countable loops. The new
- pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
- it is available for the Intel Itanium platform working by default
- as the second scheduling pass (after register allocation) at the
- -O3 optimization level.
- * When using -fprofile-generate with a multi-threaded program, the
- profile counts may be slightly wrong due to race conditions. The
- new -fprofile-correction option directs the compiler to apply
- heuristics to smooth out the inconsistencies. By default the
- compiler will give an error message when it finds an inconsistent
- profile.
- * The new -fprofile-dir=PATH option permits setting the directory
- where profile data files are stored when using -fprofile-generate
- and friends, and the directory used when reading profile data files
- using -fprofile-use and friends.
- New warning options
- * The new -Wframe-larger-than=NUMBER option directs GCC to emit a
- warning if any stack frame is larger than NUMBER bytes. This may be
- used to help ensure that code fits within a limited amount of stack
- space.
- * The command-line option -Wlarger-than-N is now written as
- -Wlarger-than=N and the old form is deprecated.
- * The new -Wno-mudflap option disables warnings about constructs
- which can not be instrumented when using -fmudflap.
- New Languages and Language specific improvements
- * Version 3.0 of the [5]OpenMP specification is now supported for the
- C, C++, and Fortran compilers.
- * New character data types, per [6]TR 19769: New character types in
- C, are now supported for the C compiler in -std=gnu99 mode, as
- __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
- -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
- C family
- * A new optimize attribute was added to allow programmers to change
- the optimization level and particular optimization options for an
- individual function. You can also change the optimization options
- via the GCC optimize pragma for functions defined after the pragma.
- The GCC push_options pragma and the GCC pop_options pragma allow
- you temporarily save and restore the options used. The GCC
- reset_options pragma restores the options to what was specified on
- the command line.
- * Uninitialized warnings do not require enabling optimization
- anymore, that is, -Wuninitialized can be used together with -O0.
- Nonetheless, the warnings given by -Wuninitialized will probably be
- more accurate if optimization is enabled.
- * -Wparentheses now warns about expressions such as (!x | y) and (!x
- & y). Using explicit parentheses, such as in ((!x) | y), silences
- this warning.
- * -Wsequence-point now warns within if, while,do while and for
- conditions, and within for begin/end expressions.
- * A new option -dU is available to dump definitions of preprocessor
- macros that are tested or expanded.
- C++
- * [7]Improved experimental support for the upcoming ISO C++ standard,
- C++0x. Including support for auto, inline namespaces, generalized
- initializer lists, defaulted and deleted functions, new character
- types, and scoped enums.
- * Those errors that may be downgraded to warnings to build legacy
- code now mention -fpermissive when -fdiagnostics-show-option is
- enabled.
- * -Wconversion now warns if the result of a static_cast to enumeral
- type is unspecified because the value is outside the range of the
- enumeral type.
- * -Wuninitialized now warns if a non-static reference or non-static
- const member appears in a class without constructors.
- * G++ now properly implements value-initialization, so objects with
- an initializer of () and an implicitly defined default constructor
- will be zero-initialized before the default constructor is called.
- Runtime Library (libstdc++)
- * Improved experimental support for the upcoming ISO C++ standard,
- C++0x, including:
- + Support for <chrono>, <condition_variable>, <cstdatomic>,
- <forward_list>, <initializer_list>, <mutex>, <ratio>,
- <system_error>, and <thread>.
- + unique_ptr, <algorithm> additions, exception propagation, and
- support for the new character types in <string> and <limits>.
- + Existing facilities now exploit initializer lists, defaulted
- and deleted functions, and the newly implemented core C++0x
- features.
- + Some standard containers are more efficient together with
- stateful allocators, i.e., no allocator is constructed on the
- fly at element construction time.
- * Experimental support for non-standard pointer types in containers.
- * The long standing libstdc++/30928 has been fixed for targets
- running glibc 2.10 or later.
- * As usual, many small and larger bug fixes, in particular quite a
- few corner cases in <locale>.
- Fortran
- * GNU Fortran now employs libcpp directly instead of using cc1 as an
- external preprocessor. The [8]-cpp option was added to allow manual
- invocation of the preprocessor without relying on filename
- extensions.
- * The [9]-Warray-temporaries option warns about array temporaries
- generated by the compiler, as an aid to optimization.
- * The [10]-fcheck-array-temporaries option has been added, printing a
- notification at run time, when an array temporary had to be created
- for an function argument. Contrary to -Warray-temporaries the
- warning is only printed if the array is noncontiguous.
- * Improved generation of DWARF debugging symbols
- * If using an intrinsic not part of the selected standard (via -std=
- and -fall-intrinsics) gfortran will now treat it as if this
- procedure were declared EXTERNAL and try to link to a user-supplied
- procedure. -Wintrinsics-std will warn whenever this happens. The
- now-useless option -Wnonstd-intrinsic was removed.
- * The flag -falign-commons has been added to control the alignment of
- variables in COMMON blocks, which is enabled by default in line
- with previous GCC version. Using -fno-align-commons one can force
- commons to be contiguous in memory as required by the Fortran
- standard, however, this slows down the memory access. The option
- -Walign-commons, which is enabled by default, warns when padding
- bytes were added for alignment. The proper solution is to sort the
- common objects by decreasing storage size, which avoids the
- alignment problems.
- * Fortran 2003 support has been extended:
- + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
- now supported (except internal reads from/writes to wide
- strings). [11]-fbackslash now supports also \unnnn and
- \Unnnnnnnn to enter Unicode characters.
- + Asynchronous I/O (implemented as synchronous I/O) and the
- decimal=, size=, sign=, pad=, blank=, and delim= specifiers
- are now supported in I/O statements.
- + Support for Fortran 2003 structure constructors and for array
- constructor with typespec has been added.
- + Procedure Pointers (but not yet as component in derived types
- and as function results) are now supported.
- + Abstract types, type extension, and type-bound procedures
- (both PROCEDURE and GENERIC but not as operators). Note: As
- CLASS/polymorphyic types are not implemented, type-bound
- procedures with PASS accept as non-standard extension TYPE
- arguments.
- * Fortran 2008 support has been added:
- + The -std=f2008 option and support for the file extensions
- .f2008 and .F2008 has been added.
- + The g0 format descriptor is now supported.
- + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
- ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
- are now available (some of them existed as GNU extension
- before). Note: The hyperbolic functions are not yet supporting
- complex arguments and the three- argument version of BESSEL_*N
- is not available.
- + The bit intrinsics LEADZ and TRAILZ have been added.
- Java (GCJ)
- Ada
- * The Ada runtime now supports multilibs on many platforms including
- x86_64, SPARC and PowerPC. Their build is enabled by default.
- New Targets and Target Specific Improvements
- ARM
- * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
- Cortex-R4F processors and has many other improvements to
- optimization for ARM processors.
- * GCC now supports the VFPv3 variant with 16 double-precision
- registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
- renamed to -mfpu=vfpv3.
- * GCC now supports the -mfix-cortex-m3-ldrd option to work around an
- erratum on Cortex-M3 processors.
- * GCC now supports the __sync_* atomic operations for ARM EABI
- GNU/Linux.
- * The section anchors optimization is now enabled by default when
- optimizing for ARM.
- * GCC now uses a new EABI-compatible profiling interface for EABI
- targets. This requires a function __gnu_mcount_nc, which is
- provided by GNU libc versions 2.8 and later.
- AVR
- * The -mno-tablejump option has been deprecated because it has the
- same effect as the -fno-jump-tables option.
- * Added support for these new AVR devices:
- + ATA6289
- + ATtiny13A
- + ATtiny87
- + ATtiny167
- + ATtiny327
- + ATmega8C1
- + ATmega16C1
- + ATmega32C1
- + ATmega8M1
- + ATmega16M1
- + ATmega32M1
- + ATmega32U4
- + ATmega16HVB
- + ATmega4HVD
- + ATmega8HVD
- + ATmega64C1
- + ATmega64M1
- + ATmega16U4
- + ATmega32U6
- + ATmega128RFA1
- + AT90PWM81
- + AT90SCR100
- + M3000F
- + M3000S
- + M3001B
- IA-32/x86-64
- * Support for Intel AES built-in functions and code generation is
- available via -maes.
- * Support for Intel PCLMUL built-in function and code generation is
- available via -mpclmul.
- * Support for Intel AVX built-in functions and code generation is
- available via -mavx.
- * Automatically align the stack for local variables with alignment
- requirement.
- * GCC can now utilize the SVML library for vectorizing calls to a set
- of C99 functions if -mveclibabi=svml is specified and you link to
- an SVML ABI compatible library.
- * On x86-64, the ABI has been changed in the following cases to
- conform to the x86-64 ABI:
- + Passing/returning structures with flexible array member:
- struct foo
- {
- int i;
- int flex[];
- };
- + Passing/returning structures with complex float member:
- struct foo
- {
- int i;
- __complex__ float f;
- };
- + Passing/returning unions with long double member:
- union foo
- {
- int x;
- long double ld;
- };
- Code built with previous versions of GCC that uses any of these is
- not compatible with code built with GCC 4.4.0 or later.
- * A new target attribute was added to allow programmers to change the
- target options like -msse2 or -march=k8 for an individual function.
- You can also change the target options via the GCC target pragma
- for functions defined after the pragma.
- * GCC can now be configured with options --with-arch-32,
- --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and
- --with-tune-64 to control the default optimization separately for
- 32-bit and 64-bit modes.
- IA-32/IA64
- * Support for __float128 (TFmode) IEEE quad type and corresponding
- TCmode IEEE complex quad type is available via the soft-fp library
- on IA-32/IA64 targets. This includes basic arithmetic operations
- (addition, subtraction, negation, multiplication and division) on
- __float128 real and TCmode complex values, the full set of IEEE
- comparisons between __float128 values, conversions to and from
- float, double and long double floating point types, as well as
- conversions to and from signed or unsigned integer, signed or
- unsigned long integer and signed or unsigned quad (TImode, IA64
- only) integer types. Additionally, all operations generate the full
- set of IEEE exceptions and support the full set of IEEE rounding
- modes.
- M68K/ColdFire
- * GCC now supports instruction scheduling for ColdFire V1, V3 and V4
- processors. (Scheduling support for ColdFire V2 processors was
- added in GCC 4.3.)
- * GCC now supports the -mxgot option to support programs requiring
- many GOT entries on ColdFire.
- * The m68k-*-linux-gnu target now builds multilibs by default.
- MIPS
- * MIPS Technologies have extended the original MIPS SVR4 ABI to
- include support for procedure linkage tables (PLTs) and copy
- relocations. These extensions allow GNU/Linux executables to use a
- significantly more efficient code model than the one defined by the
- original ABI.
- GCC support for this code model is available via a new command-line
- option, -mplt. There is also a new configure-time option,
- --with-mips-plt, to make -mplt the default.
- The new code model requires support from the assembler, the linker,
- and the runtime C library. This support is available in binutils
- 2.19 and GLIBC 2.9.
- * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
- and 32-bit GNU/Linux shared libraries. This feature requires GNU
- binutils 2.19 or above.
- * Support for RMI's XLR processor is now available through the
- -march=xlr and -mtune=xlr options.
- * 64-bit targets can now perform 128-bit multiplications inline,
- instead of relying on a libgcc function.
- * Native GNU/Linux toolchains now support -march=native and
- -mtune=native, which select the host processor.
- * GCC now supports the R10K, R12K, R14K and R16K processors. The
- canonical -march= and -mtune= names for these processors are
- r10000, r12000, r14000 and r16000 respectively.
- * GCC can now work around the side effects of speculative execution
- on R10K processors. Please see the documentation of the
- -mr10k-cache-barrier option for details.
- * Support for the MIPS64 Release 2 instruction set has been added.
- The option -march=mips64r2 enables generation of these
- instructions.
- * GCC now supports Cavium Networks' Octeon processor. This support is
- available through the -march=octeon and -mtune=octeon options.
- * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
- canonical -march= and -mtune= names for these processors are
- loongson2e and loongson2f.
- picochip
- Picochip is a 16-bit processor. A typical picoChip contains over 250
- small cores, each with small amounts of memory. There are three
- processor variants (STAN, MEM and CTRL) with different instruction sets
- and memory configurations and they can be chosen using the -mae option.
- This port is intended to be a "C" only port.
- Power Architecture and PowerPC
- * GCC now supports the e300c2, e300c3 and e500mc processors.
- * GCC now supports Xilinx processors with a single-precision FPU.
- * Decimal floating point is now supported for e500 processors.
- S/390, zSeries and System z9/z10
- * Support for the IBM System z10 EC/BC processor has been added. When
- using the -march=z10 option, the compiler will generate code making
- use of instructions provided by the General-Instruction-Extension
- Facility and the Execute-Extension Facility.
- VxWorks
- * GCC now supports the thread-local storage mechanism used on
- VxWorks.
- Xtensa
- * GCC now supports thread-local storage (TLS) for Xtensa processor
- configurations that include the Thread Pointer option. TLS also
- requires support from the assembler and linker; this support is
- provided in the GNU binutils beginning with version 2.19.
- Documentation improvements
- Other significant improvements
- GCC 4.4.1
- This is the [12]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.4.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.4.2
- This is the [13]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.4.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.4.3
- This is the [14]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.4.3 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.4.4
- This is the [15]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.4.4 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.4.5
- This is the [16]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.4.5 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.4.6
- This is the [17]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.4.6 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.4.7
- This is the [18]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.4.7 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- For questions related to the use of GCC, please consult these web
- pages and the [19]GCC manuals. If that fails, the
- [20]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [21]gcc@gcc.gnu.org. All of [22]our lists have public
- archives.
- Copyright (C) [23]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [24]maintained by the GCC team. Last modified
- 2014-12-06[25].
- References
- 1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.7
- 2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
- 3. http://gcc.gnu.org/gcc-4.4/porting_to.html
- 4. https://gcc.gnu.org/wiki/Graphite
- 5. http://openmp.org/wp/openmp-specifications/
- 6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
- 7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
- 8. https://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
- 9. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
- 10. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
- 11. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
- 12. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
- 13. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
- 14. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
- 15. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
- 16. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5
- 17. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6
- 18. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7
- 19. https://gcc.gnu.org/onlinedocs/
- 20. mailto:gcc-help@gcc.gnu.org
- 21. mailto:gcc@gcc.gnu.org
- 22. https://gcc.gnu.org/lists.html
- 23. http://www.fsf.org/
- 24. https://gcc.gnu.org/about.html
- 25. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.3/index.html
- GCC 4.3 Release Series
- Jun 27, 2011
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.3.6.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 4.3.5 relative to previous releases of GCC.
- Release History
- GCC 4.3.6
- Jun 27, 2011 ([2]changes)
- GCC 4.3.5
- May 22, 2010 ([3]changes)
- GCC 4.3.4
- August 4, 2009 ([4]changes)
- GCC 4.3.3
- January 24, 2009 ([5]changes)
- GCC 4.3.2
- August 27, 2008 ([6]changes)
- GCC 4.3.1
- June 6, 2008 ([7]changes)
- GCC 4.3.0
- March 5, 2008 ([8]changes)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [9]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [10]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [11]GCC
- project web site or contact the [12]GCC development mailing list.
- To obtain GCC please use [13]our mirror sites or [14]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [15]GCC manuals. If that fails, the
- [16]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [17]gcc@gcc.gnu.org. All of [18]our lists have public
- archives.
- Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [20]maintained by the GCC team. Last modified
- 2014-06-28[21].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-4.3/changes.html
- 3. http://gcc.gnu.org/gcc-4.3/changes.html
- 4. http://gcc.gnu.org/gcc-4.3/changes.html
- 5. http://gcc.gnu.org/gcc-4.3/changes.html
- 6. http://gcc.gnu.org/gcc-4.3/changes.html
- 7. http://gcc.gnu.org/gcc-4.3/changes.html
- 8. http://gcc.gnu.org/gcc-4.3/changes.html
- 9. http://gcc.gnu.org/gcc-4.3/buildstat.html
- 10. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 11. http://gcc.gnu.org/index.html
- 12. mailto:gcc@gcc.gnu.org
- 13. http://gcc.gnu.org/mirrors.html
- 14. http://gcc.gnu.org/svn.html
- 15. https://gcc.gnu.org/onlinedocs/
- 16. mailto:gcc-help@gcc.gnu.org
- 17. mailto:gcc@gcc.gnu.org
- 18. https://gcc.gnu.org/lists.html
- 19. http://www.fsf.org/
- 20. https://gcc.gnu.org/about.html
- 21. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.3/changes.html
- GCC 4.3 Release Series
- Changes, New Features, and Fixes
- The latest release in the 4.3 release series is [1]GCC 4.3.5.
- Caveats
- * GCC requires the [2]GMP and [3]MPFR libraries for building all the
- various front-end languages it supports. See the [4]prerequisites
- page for version requirements.
- * ColdFire targets now treat long double as having the same format as
- double. In earlier versions of GCC, they used the 68881 long double
- format instead.
- * The m68k-uclinux target now uses the same calling conventions as
- m68k-linux-gnu. You can select the original calling conventions by
- configuring for m68k-uclinuxoldabi instead. Note that
- m68k-uclinuxoldabi also retains the original 80-bit long double on
- ColdFire targets.
- * The -fforce-mem option has been removed because it has had no
- effect in the last few GCC releases.
- * The i386 -msvr3-shlib option has been removed since it is no longer
- used.
- * Fastcall for i386 has been changed not to pass aggregate arguments
- in registers, following Microsoft compilers.
- * Support for the AOF assembler has been removed from the ARM back
- end; this affects only the targets arm-semi-aof and armel-semi-aof,
- which are no longer recognized. We removed these targets without a
- deprecation period because we discovered that they have been
- unusable since GCC 4.0.0.
- * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
- has been removed. This support had been deprecated since GCC 4.0.0.
- * Support for a number of older systems and recently unmaintained or
- untested target ports of GCC has been declared obsolete in GCC 4.3.
- Unless there is activity to revive them, the next release of GCC
- will have their sources permanently removed.
- All GCC ports for the following processor architectures have been
- declared obsolete:
- + Morpho MT (mt-*)
- The following aliases for processor architectures have been
- declared obsolete. Users should use the indicated generic target
- names instead, with compile-time options such as -mcpu or
- configure-time options such as --with-cpu to control the
- configuration more precisely.
- + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
- instead).
- + parisc*-*-* (use hppa*-*-* instead).
- + m680[012]0-*-* (use m68k-*-* instead).
- All GCC ports for the following operating systems have been
- declared obsolete:
- + BeOS (*-*-beos*)
- + kaOS (*-*-kaos*)
- + GNU/Linux using the a.out object format (*-*-linux*aout*)
- + GNU/Linux using version 1 of the GNU C Library
- (*-*-linux*libc1*)
- + Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
- *-*-solaris2.[0-6].*)
- + Miscellaneous System V (*-*-sysv*)
- + WindISS (*-*-windiss*)
- Also, those for some individual systems on particular architectures
- have been obsoleted:
- + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
- + CRIS with a.out object format (cris-*-aout)
- + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
- + OSF/1 on PA-RISC (hppa1.1-*-osf*)
- + PRO on PA-RISC (hppa1.1-*-pro*)
- + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
- i[34567]86-sequent-sysv4*)
- + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
- + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
- was previously [5]removed in 2001, leaving only the support
- for UWIN as a target now being deprecated)
- + ChorusOS on PowerPC (powerpc-*-chorusos*)
- + All VAX configurations apart from NetBSD and OpenBSD
- (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
- * The [6]-Wconversion option has been modified. Its purpose now is to
- warn for implicit conversions that may alter a value. This new
- behavior is available for both C and C++. Warnings about
- conversions between signed and unsigned integers can be disabled by
- using -Wno-sign-conversion. In C++, they are disabled by default
- unless -Wsign-conversion is explicitly requested. The old behavior
- of -Wconversion, that is, warn for prototypes causing a type
- conversion that is different from what would happen to the same
- argument in the absence of a prototype, has been moved to a new
- option -Wtraditional-conversion, which is only available for C.
- * The -m386, -m486, -mpentium and -mpentiumpro tuning options have
- been removed because they were deprecated for more than 3 GCC major
- releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
- -mtune=pentiumpro as a replacement.
- * The -funsafe-math-optimizations option now automatically turns on
- -fno-trapping-math in addition to -fno-signed-zeros, as it enables
- reassociation and thus may introduce or remove traps.
- * The -ftree-vectorize option is now on by default under -O3. In
- order to generate code for a SIMD extension, it has to be enabled
- as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
- i?86 and x86_64.
- * More information on porting to GCC 4.3 from previous versions of
- GCC can be found in the [7]porting guide for this release.
- General Optimizer Improvements
- * The GCC middle-end has been integrated with the [8]MPFR library.
- This allows GCC to evaluate and replace at compile-time calls to
- built-in math functions having constant arguments with their
- mathematically equivalent results. In making use of [9]MPFR, GCC
- can generate correct results regardless of the math library
- implementation or floating point precision of the host platform.
- This also allows GCC to generate identical results regardless of
- whether one compiles in native or cross-compile configurations to a
- particular target. The following built-in functions take advantage
- of this new capability: acos, acosh, asin, asinh, atan2, atan,
- atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
- fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
- log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
- tan, tanh, tgamma, y0, y1 and yn. The float and long double
- variants of these functions (e.g. sinf and sinl) are also handled.
- The sqrt and cabs functions with constant arguments were already
- optimized in prior GCC releases. Now they also use [10]MPFR.
- * A new forward propagation pass on RTL was added. The new pass
- replaces several slower transformations, resulting in compile-time
- improvements as well as better code generation in some cases.
- * A new command-line switch -frecord-gcc-switches has been added to
- GCC, although it is only enabled for some targets. The switch
- causes the command line that was used to invoke the compiler to be
- recorded into the object file that is being created. The exact
- format of this recording is target and binary file format
- dependent, but it usually takes the form of a note section
- containing ASCII text. The switch is related to the -fverbose-asm
- switch, but that one only records the information in the assembler
- output file as comments, so the information never reaches the
- object file.
- * The inliner heuristic is now aware of stack frame consumption. New
- command-line parameters --param large-stack-frame and --param
- large-stack-frame-growth can be used to limit stack frame size
- growth caused by inlining.
- * During feedback directed optimizations, the expected block size the
- memcpy, memset and bzero functions operate on is discovered and for
- cases of commonly used small sizes, specialized inline code is
- generated.
- * __builtin_expect no longer requires its argument to be a compile
- time constant.
- * Interprocedural optimization was reorganized to work on functions
- in SSA form. This enables more precise and cheaper dataflow
- analysis and makes writing interprocedural optimizations easier.
- The following improvements have been implemented on top of this
- framework:
- + Pre-inline optimization: Selected local optimization passes
- are run before the inliner (and other interprocedural passes)
- are executed. This significantly improves the accuracy of code
- growth estimates used by the inliner and reduces the overall
- memory footprint for large compilation units.
- + Early inlining (a simple bottom-up inliner pass inlining only
- functions whose body is smaller than the expected call
- overhead) is now executed with the early optimization passes,
- thus inlining already optimized function bodies into an
- unoptimized function that is subsequently optimized by early
- optimizers. This enables the compiler to quickly eliminate
- abstraction penalty in C++ programs.
- + Interprocedural constant propagation now operate on SSA form
- increasing accuracy of the analysis.
- * A new internal representation for GIMPLE statements has been
- contributed, resulting in compile-time memory savings.
- * The vectorizer was enhanced to support vectorization of outer
- loops, intra-iteration parallelism (loop-aware SLP), vectorization
- of strided accesses and loops with multiple data-types. Run-time
- dependency testing using loop versioning was added. The cost model,
- turned on by -fvect-cost-model, was developed.
- New Languages and Language specific improvements
- * We have added new command-line options
- -finstrument-functions-exclude-function-list and
- -finstrument-functions-exclude-file-list. They provide more control
- over which functions are annotated by the -finstrument-functions
- option.
- C family
- * Implicit conversions between generic vector types are now only
- permitted when the two vectors in question have the same number of
- elements and compatible element types. (Note that the restriction
- involves compatible element types, not implicitly-convertible
- element types: thus, a vector type with element type int may not be
- implicitly converted to a vector type with element type unsigned
- int.) This restriction, which is in line with specifications for
- SIMD architectures such as AltiVec, may be relaxed using the flag
- -flax-vector-conversions. This flag is intended only as a
- compatibility measure and should not be used for new code.
- * -Warray-bounds has been added and is now enabled by default for
- -Wall . It produces warnings for array subscripts that can be
- determined at compile time to be always out of bounds.
- -Wno-array-bounds will disable the warning.
- * The constructor and destructor function attributes now accept
- optional priority arguments which control the order in which the
- constructor and destructor functions are run.
- * New [11]command-line options -Wtype-limits,
- -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body,
- -Wclobbered and -Wignored-qualifiers have been added for finer
- control of the diverse warnings enabled by -Wextra.
- * A new function attribute alloc_size has been added to mark up
- malloc style functions. For constant sized allocations this can be
- used to find out the size of the returned pointer using the
- __builtin_object_size() function for buffer overflow checking and
- similar. This supplements the already built-in malloc and calloc
- constant size handling.
- * Integer constants written in binary are now supported as a GCC
- extension. They consist of a prefix 0b or 0B, followed by a
- sequence of 0 and 1 digits.
- * A new predefined macro __COUNTER__ has been added. It expands to
- sequential integral values starting from 0. In conjunction with the
- ## operator, this provides a convenient means to generate unique
- identifiers.
- * A new command-line option -fdirectives-only has been added. It
- enables a special preprocessing mode which improves the performance
- of applications like distcc and ccache.
- * Fixed-point data types and operators have been added. They are
- based on Chapter 4 of the Embedded-C specification (n1169.pdf).
- Currently, only MIPS targets are supported.
- * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732,
- N1241, is now supported as a GCC extension to C for targets
- i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu,
- and x86_64-*-linux-gnu. The feature introduces new data types
- _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF,
- DD, and DL.
- C++
- * [12]Experimental support for the upcoming ISO C++ standard, C++0x.
- * -Wc++0x-compat has been added and is now enabled by default for
- -Wall. It produces warnings for constructs whose meaning differs
- between ISO C++ 1998 and C++0x.
- * The -Wparentheses option now works for C++ as it does for C. It
- warns if parentheses are omitted when operators with confusing
- precedence are nested. It also warns about ambiguous else
- statements. Since -Wparentheses is enabled by -Wall, this may cause
- additional warnings with existing C++ code which uses -Wall. These
- new warnings may be disabled by using -Wall -Wno-parentheses.
- * The -Wmissing-declarations now works for C++ as it does for C.
- * The -fvisibility-ms-compat flag was added, to make it easier to
- port larger projects using shared libraries from Microsoft's Visual
- Studio to ELF and Mach-O systems.
- * C++ attribute handling has been overhauled for template arguments
- (ie dependent types). In particular, __attribute__((aligned(T)));
- works for C++ types.
- Runtime Library (libstdc++)
- * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
- * Support for TR1 mathematical special functions and regular
- expressions. ([14]Implementation status of TR1)
- * Default what implementations give more elaborate exception strings
- for bad_cast, bad_typeid, bad_exception, and bad_alloc.
- * Header dependencies have been streamlined, reducing unnecessary
- includes and pre-processed bloat.
- * Variadic template implementations of items in <tuple> and
- <functional>.
- * An experimental [15]parallel mode has been added. This is a
- parallel implementation of many C++ Standard library algorithms,
- like std::accumulate, std::for_each, std::transform, or std::sort,
- to give but four examples. These algorithms can be substituted for
- the normal (sequential) libstdc++ algorithms on a piecemeal basis,
- or all existing algorithms can be transformed via the
- -D_GLIBCXX_PARALLEL macro.
- * Debug mode versions of classes in <unordered_set> and
- <unordered_map>.
- * Formal deprecation of <ext/hash_set> and <ext/hash_map>, which are
- now <backward/hash_set> and <backward/hash_map>. This code:
- #include <ext/hash_set>
- __gnu_cxx::hash_set<int> s;
- Can be transformed (in order of preference) to:
- #include <tr1/unordered_set>
- std::tr1::unordered_set<int> s;
- or
- #include <backward/hash_set>
- __gnu_cxx::hash_set<int> s;
- Similar transformations apply to __gnu_cxx::hash_map,
- __gnu_cxx::hash_multimap, __gnu_cxx::hash_set,
- __gnu_cxx::hash_multiset.
- Fortran
- * Due to the fact that the [16]GMP and [17]MPFR libraries are
- required for all languages, Fortran is no longer special in this
- regard and is available by default.
- * The [18]-fexternal-blas option has been added, which generates
- calls to BLAS routines for intrinsic matrix operations such as
- matmul rather than using the built-in algorithms.
- * Support to give a backtrace (compiler flag -fbacktrace or
- environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems
- only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a
- run-time error occured.
- * GNU Fortran now defines __GFORTRAN__ when it runs the C
- preprocessor (CPP).
- * The [19]-finit-local-zero, -finit-real, -finit-integer,
- -finit-character, and -finit-logical options have been added, which
- can be used to initialize local variables.
- * The intrinsic procedures [20]GAMMA and [21]LGAMMA have been added,
- which calculate the Gamma function and its logarithm. Use EXTERNAL
- gamma if you want to use your own gamma function.
- * GNU Fortran now regards the backslash character as literal (as
- required by the Fortran 2003 standard); using [22]-fbackslash GNU
- Fortran interprets backslashes as C-style escape characters.
- * The [23]interpretation of binary, octal and hexadecimal (BOZ)
- literal constants has been changed. Before they were always
- interpreted as integer; now they are bit-wise transferred as
- argument of INT, REAL, DBLE and CMPLX as required by the Fortran
- 2003 standard, and for real and complex variables in DATA
- statements or when directly assigned to real and complex variables.
- Everywhere else and especially in expressions they are still
- regarded as integer constants.
- * Fortran 2003 support has been extended:
- + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE
- + Pointer intent
- + Intrinsic module ISO_ENV_FORTRAN
- + Interoperability with C (ISO C Bindings)
- + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
- attribute)
- + Fortran 2003 BOZ
- Java (GCJ)
- * GCJ now uses the Eclipse Java compiler for its Java parsing needs.
- This enables the use of all 1.5 language features, and fixes most
- existing front end bugs.
- * libgcj now supports all 1.5 language features which require runtime
- support: foreach, enum, annotations, generics, and auto-boxing.
- * We've made many changes to the tools shipped with gcj.
- + The old jv-scan tool has been removed. This tool never really
- worked properly. There is no replacement.
- + gcjh has been rewritten. Some of its more obscure options no
- longer work, but are still recognized in an attempt at
- compatibility. gjavah is a new program with similar
- functionality but different command-line options.
- + grmic and grmiregistry have been rewritten. grmid has been
- added.
- + gjar replaces the old fastjar.
- + gjarsigner (used for signing jars), gkeytool (used for key
- management), gorbd (for CORBA), gserialver (computes
- serialization UIDs), and gtnameserv (also for CORBA) are now
- installed.
- * The ability to dump the contents of the java run time heap to a
- file for off-line analysis has been added. The heap dumps may be
- analyzed with the new gc-analyze tool. They may be generated on
- out-of-memory conditions or on demand and are controlled by the new
- run time class gnu.gcj.util.GCInfo.
- * java.util.TimeZone can now read files from /usr/share/zoneinfo to
- provide correct, updated, timezone information. This means that
- packagers no longer have to update libgcj when a time zone change
- is published.
- New Targets and Target Specific Improvements
- IA-32/x86-64
- * Tuning for Intel Core 2 processors is available via -mtune=core2
- and -march=core2.
- * Tuning for AMD Geode processors is available via -mtune=geode and
- -march=geode.
- * Code generation of block move (memcpy) and block set (memset) was
- rewritten. GCC can now pick the best algorithm (loop, unrolled
- loop, instruction with rep prefix or a library call) based on the
- size of the block being copied and the CPU being optimized for. A
- new option -minline-stringops-dynamically has been added. With this
- option string operations of unknown size are expanded such that
- small blocks are copied by in-line code, while for large blocks a
- library call is used. This results in faster code than
- -minline-all-stringops when the library implementation is capable
- of using cache hierarchy hints. The heuristic choosing the
- particular algorithm can be overwritten via -mstringop-strategy.
- Newly also memset of values different from 0 is inlined.
- * GCC no longer places the cld instruction before string operations.
- Both i386 and x86-64 ABI documents mandate the direction flag to be
- clear at the entry of a function. It is now invalid to set the flag
- in asm statement without reseting it afterward.
- * Support for SSSE3 built-in functions and code generation are
- available via -mssse3.
- * Support for SSE4.1 built-in functions and code generation are
- available via -msse4.1.
- * Support for SSE4.2 built-in functions and code generation are
- available via -msse4.2.
- * Both SSE4.1 and SSE4.2 support can be enabled via -msse4.
- * A new set of options -mpc32, -mpc64 and -mpc80 have been added to
- allow explicit control of x87 floating point precision.
- * Support for __float128 (TFmode) IEEE quad type and corresponding
- TCmode IEEE complex quad type is available via the soft-fp library
- on x86_64 targets. This includes basic arithmetic operations
- (addition, subtraction, negation, multiplication and division) on
- __float128 real and TCmode complex values, the full set of IEEE
- comparisons between __float128 values, conversions to and from
- float, double and long double floating point types, as well as
- conversions to and from signed or unsigned integer, signed or
- unsigned long integer and signed or unsigned quad (TImode) integer
- types. Additionally, all operations generate the full set of IEEE
- exceptions and support the full set of IEEE rounding modes.
- * GCC can now utilize the ACML library for vectorizing calls to a set
- of C99 functions on x86_64 if -mveclibabi=acml is specified and you
- link to an ACML ABI compatible library.
- ARM
- * Compiler and Library support for Thumb-2 and the ARMv7 architecture
- has been added.
- CRIS
- New features
- * Compiler and Library support for the CRIS v32 architecture, as
- found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been
- added.
- Configuration changes
- * The cris-*-elf target now includes support for CRIS v32, including
- libraries, through the -march=v32 option.
- * A new crisv32-*-elf target defaults to generate code for CRIS v32.
- * A new crisv32-*-linux* target defaults to generate code for CRIS
- v32.
- * The cris-*-aout target has been obsoleted.
- Improved support for built-in functions
- * GCC can now use the lz and swapwbr instructions to implement the
- __builtin_clz, __builtin_ctz and __builtin_ffs family of functions.
- * __builtin_bswap32 is now implemented using the swapwb instruction,
- when available.
- m68k and ColdFire
- New features
- * Support for several new ColdFire processors has been added. You can
- generate code for them using the new -mcpu option.
- * All targets now support ColdFire processors.
- * m68k-uclinux targets have improved support for C++ constructors and
- destructors, and for shared libraries.
- * It is now possible to set breakpoints on the first or last line of
- a function, even if there are no statements on that line.
- Optimizations
- * Support for sibling calls has been added.
- * More use is now made of the ColdFire mov3q instruction.
- * __builtin_clz is now implemented using the ff1 ColdFire
- instruction, when available.
- * GCC now honors the -m68010 option. 68010 code now uses clr rather
- than move to zero volatile memory.
- * 68020 targets and above can now use symbol(index.size*scale)
- addresses for indexed array accesses. Earlier compilers would
- always load the symbol into a base register first.
- Configuration changes
- * All m68k and ColdFire targets now allow the default processor to be
- set at configure time using --with-cpu.
- * A --with-arch configuration option has been added. This option
- allows you to restrict a target to ColdFire or non-ColdFire
- processors.
- Preprocessor macros
- * An __mcfv*__ macro is now defined for all ColdFire targets.
- (Earlier versions of GCC only defined __mcfv4e__.)
- * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added.
- * All targets now define __mc68010 and __mc68010__ when generating
- 68010 code.
- Command-line changes
- * New command-line options -march, -mcpu, -mtune and -mhard-float
- have been added. These options apply to both m68k and ColdFire
- targets.
- * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative
- versions of -mshort, etc.
- * -fforce-addr has been removed. It is now ignored by the compiler.
- Other improvements
- * ColdFire targets now try to maintain a 4-byte-aligned stack where
- possible.
- * m68k-uclinux targets now try to avoid situations that lead to the
- load-time error: BINFMT_FLAT: reloc outside program.
- MIPS
- Changes to existing configurations
- * libffi and libjava now support all three GNU/Linux ABIs: o32, n32
- and n64. Every GNU/Linux configuration now builds these libraries
- by default.
- * GNU/Linux configurations now generate -mno-shared code unless
- overridden by -fpic, -fPIC, -fpie or -fPIE.
- * mipsisa32*-linux-gnu configurations now generate hard-float code by
- default, just like other mipsisa32* and mips*-linux-gnu
- configurations. You can build a soft-float version of any
- mips*-linux-gnu configuration by passing --with-float=soft to
- configure.
- * mips-wrs-vxworks now supports run-time processes (RTPs).
- Changes to existing command-line options
- * The -march and -mtune options no longer accept 24k as a processor
- name. Please use 24kc, 24kf2_1 or 24kf1_1 instead.
- * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and
- 34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The
- options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for
- 24kx, 24kex and 34kx.
- New configurations
- GCC now supports the following configurations:
- * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by
- default. Earlier releases also recognized this configuration, but
- they treated it in the same way as mipsisa32*-linux-gnu*. Note that
- you can customize any mips*-linux-gnu* configuration to a
- particular ISA or processor by passing an appropriate --with-arch
- option to configure.
- * mipsisa*-sde-elf*, which provides compatibility with MIPS
- Technologies' SDE toolchains. The configuration uses the SDE
- libraries by default, but you can use it like other newlib-based
- ELF configurations by passing --with-newlib to configure. It is the
- only configuration besides mips64vr*-elf* to build MIPS16 as well
- as non-MIPS16 libraries.
- * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf*
- configuration, but uses the o32 and o64 ABIs instead of the 32-bit
- and 64-bit forms of the EABI.
- New processors and application-specific extensions
- * Support for the SmartMIPS ASE is available through the new
- -msmartmips option.
- * Support for revision 2 of the DSP ASE is available through the new
- -mdspr2 option. A new preprocessor macro called __mips_dsp_rev
- indicates the revision of the ASE in use.
- * Support for the 4KS and 74K families of processors is available
- through the -march and -mtune options.
- Improved support for built-in functions
- * GCC can now use load-linked, store-conditional and sync
- instructions to implement atomic built-in functions such as
- __sync_fetch_and_add. The memory reference must be 4 bytes wide for
- 32-bit targets and either 4 or 8 bytes wide for 64-bit targets.
- * GCC can now use the clz and dclz instructions to implement the
- __builtin_ctz and __builtin_ffs families of functions.
- * There is a new __builtin___clear_cache function for flushing the
- instruction cache. GCC expands this function inline on MIPS32
- revision 2 targets, otherwise it calls the function specified by
- -mcache-flush-func.
- MIPS16 improvements
- * GCC can now compile objects that contain a mixture of MIPS16 and
- non-MIPS16 code. There are two new attributes, mips16 and nomips16,
- for specifying which mode a function should use.
- * A new option called -minterlink-mips16 makes non-MIPS16 code
- link-compatible with MIPS16 code.
- * After many bug fixes, the long-standing MIPS16 -mhard-float support
- should now work fairly reliably.
- * GCC can now use the MIPS16e save and restore instructions.
- * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled
- with -G0 -fsection-anchors is often smaller than code compiled with
- -G8. However, please note that you must usually compile all objects
- in your application with the same -G option; see the documentation
- of -G for details.
- * A new option called-mcode-readable specifies which instructions are
- allowed to load from the code segment. -mcode-readable=yes is the
- default and says that any instruction may load from the code
- segment. The other alternatives are -mcode-readable=pcrel, which
- says that only PC-relative MIPS16 instructions may load from the
- code segment, and -mcode-readable=no, which says that no
- instruction may do so. Please see the documentation for more
- details, including example uses.
- Small-data improvements
- There are three new options for controlling small data:
- * -mno-extern-sdata, which disables small-data accesses for
- externally-defined variables. Code compiled with -Gn
- -mno-extern-sdata will be link-compatible with any -G setting
- between -G0 and -Gn inclusive.
- * -mno-local-sdata, which disables the use of small-data sections for
- data that is not externally visible. This option can be a useful
- way of reducing small-data usage in less performance-critical parts
- of an application.
- * -mno-gpopt, which disables the use of the $gp register while still
- honoring the -G limit when placing externally-visible data. This
- option implies -mno-extern-sdata and -mno-local-sdata and it can be
- useful in situations where $gp does not necessarily hold the
- expected value.
- Miscellaneous improvements
- * There is a new option called -mbranch-cost for tweaking the
- perceived cost of branches.
- * If GCC is configured to use a version of GAS that supports the
- .gnu_attribute directive, it will use that directive to record
- certain properties of the output code. .gnu_attribute is new to GAS
- 2.18.
- * There are two new function attributes, near and far, for overriding
- the command-line setting of -mlong-calls on a function-by-function
- basis.
- * -mfp64, which previously required a 64-bit target, now works with
- MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and
- mipsisa*-sde-elf* configurations provide suitable library support.
- * GCC now recognizes the -mdmx and -mmt options and passes them down
- to the assembler. It does nothing else with the options at present.
- SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture
- (BEA)
- * Support has been added for this new architecture.
- RS6000 (POWER/PowerPC)
- * Support for the PowerPC 750CL paired-single instructions has been
- added with a new powerpc-*-linux*paired* target configuration. It
- is enabled by an associated -mpaired option and can be accessed
- using new built-in functions.
- * Support for auto-detecting architecture and system configuration to
- auto-select processor optimization tuning.
- * Support for VMX on AIX 5.3 has been added.
- * Support for AIX Version 6.1 has been added.
- S/390, zSeries and System z9
- * Support for the IBM System z9 EC/BC processor (z9 GA3) has been
- added. When using the -march=z9-ec option, the compiler will
- generate code making use of instructions provided by the decimal
- floating point facility and the floating point conversion facility
- (pfpo). Besides the instructions used to implement decimal floating
- point operations these facilities also contain instructions to move
- between general purpose and floating point registers and to modify
- and copy the sign-bit of floating point values.
- * When the -march=z9-ec option is used the new
- -mhard-dfp/-mno-hard-dfp options can be used to specify whether the
- decimal floating point hardware instructions will be used or not.
- If none of them is given the hardware support is enabled by
- default.
- * The -mstack-guard option can now be omitted when using stack
- checking via -mstack-size in order to let GCC choose a sensible
- stack guard value according to the frame size of each function.
- * Various changes to improve performance of generated code have been
- implemented, including:
- + The condition code set by an add logical with carry
- instruction is now available for overflow checks like: a + b +
- carry < b.
- + The test data class instruction is now used to implement
- sign-bit and infinity checks of binary and decimal floating
- point numbers.
- SPARC
- * Support for the Sun UltraSPARC T2 (Niagara 2) processor has been
- added.
- Xtensa
- * Stack unwinding for exception handling now uses by default a
- specialized version of DWARF unwinding. This is not
- binary-compatible with the setjmp/longjmp (sjlj) unwinding used for
- Xtensa with previous versions of GCC.
- * For Xtensa processors that include the Conditional Store option,
- the built-in functions for atomic memory access are now implemented
- using S32C1I instructions.
- * If the Xtensa NSA option is available, GCC will use it to implement
- the __builtin_ctz and __builtin_clz functions.
- Documentation improvements
- * Existing libstdc++ documentation has been edited and restructured
- into a single DocBook XML manual. The results can be viewed online
- [24]here.
- Other significant improvements
- * The compiler's --help command-line option has been extended so that
- it now takes an optional set of arguments. These arguments restrict
- the information displayed to specific classes of command-line
- options, and possibly only a subset of those options. It is also
- now possible to replace the descriptive text associated with each
- displayed option with an indication of its current value, or for
- binary options, whether it has been enabled or disabled.
- Here are some examples. The following will display all the options
- controlling warning messages:
- --help=warnings
- Whereas this will display all the undocumented, target specific
- options:
- --help=target,undocumented
- This sequence of commands will display the binary optimizations
- that are enabled by -O3:
- gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
- gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
- diff /tmp/O2-opts /tmp/O3-opts | grep enabled
- * The configure options --with-pkgversion and --with-bugurl have been
- added. These allow distributors of GCC to include a
- distributor-specific string in manuals and --version output and to
- specify the URL for reporting bugs in their versions of GCC.
- GCC 4.3.1
- This is the [25]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.3.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- Target Specific Changes
- IA-32/x86-64
- ABI changes
- * Starting with GCC 4.3.1, decimal floating point variables are
- aligned to their natural boundaries when they are passed on the
- stack for i386.
- Command-line changes
- * Starting with GCC 4.3.1, the -mcld option has been added to
- automatically generate a cld instruction in the prologue of
- functions that use string instructions. This option is used for
- backward compatibility on some operating systems and can be enabled
- by default for 32-bit x86 targets by configuring GCC with the
- --enable-cld configure option.
- GCC 4.3.2
- This is the [26]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.3.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.3.3
- This is the [27]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.3.3 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.3.4
- This is the [28]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.3.4 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.3.5
- This is the [29]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.3.5 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.3.6
- This is the [30]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.3.6 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- For questions related to the use of GCC, please consult these web
- pages and the [31]GCC manuals. If that fails, the
- [32]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [33]gcc@gcc.gnu.org. All of [34]our lists have public
- archives.
- Copyright (C) [35]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [36]maintained by the GCC team. Last modified
- 2014-06-28[37].
- References
- 1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
- 2. http://gmplib.org/
- 3. http://www.mpfr.org/
- 4. https://gcc.gnu.org/install/prerequisites.html
- 5. https://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
- 6. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
- 7. http://gcc.gnu.org/gcc-4.3/porting_to.html
- 8. http://www.mpfr.org/
- 9. http://www.mpfr.org/
- 10. http://www.mpfr.org/
- 11. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
- 12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
- 13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
- 14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#m anual.intro.status.standard.tr1
- 15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
- 16. http://gmplib.org/
- 17. http://www.mpfr.org/
- 18. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
- 19. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
- 20. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
- 21. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
- 22. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
- 23. https://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
- 24. https://gcc.gnu.org/onlinedocs/libstdc++/
- 25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
- 26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
- 27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
- 28. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
- 29. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
- 30. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
- 31. https://gcc.gnu.org/onlinedocs/
- 32. mailto:gcc-help@gcc.gnu.org
- 33. mailto:gcc@gcc.gnu.org
- 34. https://gcc.gnu.org/lists.html
- 35. http://www.fsf.org/
- 36. https://gcc.gnu.org/about.html
- 37. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.2/index.html
- GCC 4.2 Release Series
- May 19, 2008
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.2.4.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 4.2.3 relative to previous releases of GCC.
- Release History
- GCC 4.2.4
- May 19, 2008 ([2]changes)
- GCC 4.2.3
- February 1, 2008 ([3]changes)
- GCC 4.2.2
- October 7, 2007 ([4]changes)
- GCC 4.2.1
- July 18, 2007 ([5]changes)
- GCC 4.2.0
- May 13, 2007 ([6]changes)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [7]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [8]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [9]GCC project
- web site or contact the [10]GCC development mailing list.
- To obtain GCC please use [11]our mirror sites or [12]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [13]GCC manuals. If that fails, the
- [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [15]gcc@gcc.gnu.org. All of [16]our lists have public
- archives.
- Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [18]maintained by the GCC team. Last modified
- 2014-06-28[19].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-4.2/changes.html
- 3. http://gcc.gnu.org/gcc-4.2/changes.html
- 4. http://gcc.gnu.org/gcc-4.2/changes.html
- 5. http://gcc.gnu.org/gcc-4.2/changes.html
- 6. http://gcc.gnu.org/gcc-4.2/changes.html
- 7. http://gcc.gnu.org/gcc-4.2/buildstat.html
- 8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 9. http://gcc.gnu.org/index.html
- 10. mailto:gcc@gcc.gnu.org
- 11. http://gcc.gnu.org/mirrors.html
- 12. http://gcc.gnu.org/svn.html
- 13. https://gcc.gnu.org/onlinedocs/
- 14. mailto:gcc-help@gcc.gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. https://gcc.gnu.org/lists.html
- 17. http://www.fsf.org/
- 18. https://gcc.gnu.org/about.html
- 19. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.2/changes.html
- GCC 4.2 Release Series
- Changes, New Features, and Fixes
- Caveats
- * GCC no longer accepts the -fshared-data option. This option has had
- no effect in any GCC 4 release; the targets to which the option
- used to apply had been removed before GCC 4.0.
- General Optimizer Improvements
- * New command-line options specify the possible relationships among
- parameters and between parameters and global data. For example,
- -fargument-noalias-anything specifies that arguments do not alias
- any other storage.
- Each language will automatically use whatever option is required by
- the language standard. You should not need to use these options
- yourself.
- New Languages and Language specific improvements
- * [1]OpenMP is now supported for the C, C++ and Fortran compilers.
- * New command-line options -fstrict-overflow and -Wstrict-overflow
- have been added. -fstrict-overflow tells the compiler that it may
- assume that the program follows the strict signed overflow
- semantics permitted for the language: for C and C++ this means that
- the compiler may assume that signed overflow does not occur. For
- example, a loop like
- for (i = 1; i > 0; i *= 2)
- is presumably intended to continue looping until i overflows. With
- -fstrict-overflow, the compiler may assume that signed overflow
- will not occur, and transform this into an infinite loop.
- -fstrict-overflow is turned on by default at -O2, and may be
- disabled via -fno-strict-overflow. The -Wstrict-overflow option may
- be used to warn about cases where the compiler assumes that signed
- overflow will not occur. It takes five different levels:
- -Wstrict-overflow=1 to 5. See the [2]documentation for details.
- -Wstrict-overflow=1 is enabled by -Wall.
- * The new command-line option -fno-toplevel-reorder directs GCC to
- emit top-level functions, variables, and asm statements in the same
- order that they appear in the input file. This is intended to
- support existing code which relies on a particular ordering (for
- example, code which uses top-level asm statements to switch
- sections). For new code, it is generally better to use function and
- variable attributes. The -fno-toplevel-reorder option may be used
- for most cases which currently use -fno-unit-at-a-time. The
- -fno-unit-at-a-time option will be removed in some future version
- of GCC. If you know of a case which requires -fno-unit-at-a-time
- which is not fixed by -fno-toplevel-reorder, please open a bug
- report.
- C family
- * The pragma redefine_extname will now macro expand its tokens for
- compatibility with SunPRO.
- * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct
- GCC to handle inline functions as specified in the C99 standard. In
- preparation for this, GCC 4.2 will warn about any use of non-static
- inline functions in gnu99 or c99 mode. This new warning may be
- disabled with the new gnu_inline function attribute or the new
- -fgnu89-inline command-line option. Also, GCC 4.2 and later will
- define one of the preprocessor macros __GNUC_GNU_INLINE__ or
- __GNUC_STDC_INLINE__ to indicate the semantics of inline functions
- in the current compilation.
- * A new command-line option -Waddress has been added to warn about
- suspicious uses of memory addresses as, for example, using the
- address of a function in a conditional expression, and comparisons
- against the memory address of a string literal. This warning is
- enabled by -Wall.
- C++
- * C++ visibility handling has been overhauled.
- Restricted visiblity is propagated from classes to members, from
- functions to local statics, and from templates and template
- arguments to instantiations, unless the latter has explicitly
- declared visibility.
- The visibility attribute for a class must come between the
- class-key and the name, not after the closing brace.
- Attributes are now allowed for enums and elaborated-type-specifiers
- that only declare a type.
- Members of the anonymous namespace are now local to a particular
- translation unit, along with any other declarations which use them,
- though they are still treated as having external linkage for
- language semantics.
- * The (undocumented) extension which permitted templates with default
- arguments to be bound to template template parameters with fewer
- parameters has been removed. For example:
- template <template <typename> class C>
- void f(C<double>) {}
- template <typename T, typename U = int>
- struct S {};
- template void f(S<double>);
- is no longer accepted by G++. The reason this code is not accepted
- is that S is a template with two parameters; therefore, it cannot
- be bound to C which has only one parameter.
- * The <?, >?, <?=, and >?= operators, deprecated in previous GCC
- releases, have been removed.
- * The command-line option -fconst-strings, deprecated in previous GCC
- releases, has been removed.
- * The configure variable enable-__cxa_atexit is now enabled by
- default for more targets. Enabling this variable is necessary in
- order for static destructors to be executed in the correct order,
- but it depends upon the presence of a non-standard C library in the
- target library in order to work. The variable is now enabled for
- more targets which are known to have suitable C libraries.
- * -Wextra will produce warnings for if statements with a semicolon as
- the only body, to catch code like:
- if (a);
- return 1;
- return 0;
- To suppress the warning in valid cases, use { } instead.
- * The C++ frontend now also produces strict aliasing warnings when
- -fstrict-aliasing -Wstrict-aliasing is in effect.
- Runtime Library (libstdc++)
- * Added support for TR1 <random>, <complex>, and C compatibility
- headers. In addition, a lock-free version of shared_ptr was
- contributed as part of Phillip Jordan's Google Summer of Code
- project on lock-free containers. ([3]Implementation status of TR1)
- * In association with the Summer of Code work on lock-free
- containers, the interface for atomic builtins was adjusted,
- creating simpler alternatives for non-threaded code paths. Also,
- usage was consolidated and all elements were moved from namespace
- std to namespace__gnu_cxx. Affected interfaces are the functions
- __exchange_and_add, __atomic_add, and the objects __mutex,
- __recursive_mutex, and __scoped_lock.
- * Support for versioning weak symbol names via namespace association
- was added. However, as this changes the names of exported symbols,
- this is turned off by default in the current ABI. Intrepid users
- can enable this feature by using
- --enable-symvers=gnu-versioned-namespace during configuration.
- * Revised, simplified, and expanded policy-based associative
- containers, including data types for tree and trie forms
- (basic_tree, tree, trie), lists (list_update), and both
- collision-chaining and probing hash-based containers
- (basic_hash_table, cc_hash_table, gp_hash_table). More details per
- the [4]documentation.
- * The implementation of the debug mode was modified, whereby the
- debug namespaces were nested inside of namespace std and namespace
- __gnu_cxx in order to resolve some long standing corner cases
- involving name lookup. Debug functionality from the policy-based
- data structures was consolidated and enabled with the single macro,
- _GLIBCXX_DEBUG. See PR 26142 for more information.
- * Added extensions for type traits: __conditional_type,
- __numeric_traits, __add_unsigned, __removed_unsigned, __enable_if.
- * Added a typelist implementation for compile-time meta-programming.
- Elements for typelist construction and operation can be found
- within namespace __gnu_cxx::typelist.
- * Added a new allocator, __gnu_cxx::throw_allocator, for testing
- exception-safety.
- * Enabled library-wide visibility control, allowing -fvisibility to
- be used.
- * Consolidated all nested namespaces and the conversion of
- __gnu_internal implementation-private details to anonymous
- namespaces whenever possible.
- * Implemented LWG resolutions DR 431 and DR 538.
- Fortran
- * Support for allocatable components has been added (TR 15581 and
- Fortran 2003).
- * Support for the Fortran 2003 streaming IO extension has been added.
- * The GNU Fortran compiler now uses 4-byte record markers by default
- for unformatted files to be compatible with g77 and most other
- compilers. The implementation allows for records greater than 2 GB
- and is compatible with several other compilers. Older versions of
- gfortran used 8-byte record markers by default (on most systems).
- In order to change the length of the record markers, e.g. to read
- unformatted files created by older gfortran versions, the
- [5]-frecord-marker=8 option can be used.
- Java (GCJ)
- * A new command-line option -static-libgcj has been added for targets
- that use a linker compatible with GNU Binutils. As its name
- implies, this causes libgcj to be linked statically. In some cases
- this causes the resulting executable to start faster and use less
- memory than if the shared version of libgcj were used. However
- caution should be used as it can also cause essential parts of the
- library to be omitted. Some of these issues are discussed in:
- [6]https://gcc.gnu.org/wiki/Statically_linking_libgcj
- * fastjar is no longer bundled with GCC. To build libgcj, you will
- need either InfoZIP (both zip and unzip) or an external jar
- program. In the former case, the GCC build will install a jar shell
- script that is based on InfoZIP and provides the same functionality
- as fastjar.
- New Targets and Target Specific Improvements
- IA-32/x86-64
- * -mtune=generic can now be used to generate code running well on
- common x86 chips. This includes AMD Athlon, AMD Opteron, Intel
- Pentium-M, Intel Pentium 4 and Intel Core 2.
- * -mtune=native and -march=native will produce code optimized for the
- host architecture as detected using the cpuid instruction.
- * Added a new command-line option -fstackrealign and and
- __attribute__ ((force_align_arg_pointer)) to realign the stack at
- runtime. This allows functions compiled with a vector-aligned stack
- to be invoked from legacy objects that keep only word-alignment.
- SPARC
- * The default CPU setting has been changed from V7 to V9 in 32-bit
- mode on Solaris 7 and above. This is already the case in 64-bit
- mode. It can be overridden by specifying --with-cpu at configure
- time.
- * Back-end support of built-in functions for atomic memory access has
- been implemented.
- * Support for the Sun UltraSPARC T1 (Niagara) processor has been
- added.
- M32C
- * Various bug fixes have made some functions (notably, functions
- returning structures) incompatible with previous releases.
- Recompiling all libraries is recommended. Note that code quality
- has considerably improved since 4.1, making a recompile even more
- beneficial.
- MIPS
- * Added support for the Broadcom SB-1A core.
- IA-64
- * Added support for IA-64 data and control speculation. By default
- speculation is enabled only during second scheduler pass. A number
- of machine flags was introduced to control the usage of speculation
- for both scheduler passes.
- HPPA
- * Added Java language support (libffi and libjava) for 32-bit HP-UX
- 11 target.
- Obsolete Systems
- Documentation improvements
- PDF Documentation
- * A make pdf target has been added to the top-level makefile,
- enabling automated production of PDF documentation files.
- (Front-ends external to GCC should modify their Make-lang.in file
- to add a lang.pdf: target.)
- Other significant improvements
- Build system improvements
- * All the components of the compiler are now bootstrapped by default.
- This improves the resilience to bugs in the system compiler or
- binary compatibility problems, as well as providing better testing
- of GCC 4.2 itself. In addition, if you build the compiler from a
- combined tree, the assembler, linker, etc. will also be
- bootstrapped (i.e. built with themselves).
- You can disable this behavior, and go back to the pre-GCC 4.2 set
- up, by configuring GCC with --disable-bootstrap.
- * The rules that configure follows to find target tools resemble more
- closely the locations that the built compiler will search. In
- addition, you can use the new configure option --with-target-tools
- to specify where to find the target tools used during the build,
- without affecting what the built compiler will use.
- This can be especially useful when building packages of GCC. For
- example, you may want to build GCC with GNU as or ld, even if the
- resulting compiler to work with the native assembler and linker. To
- do so, you can use --with-target-tools to point to the native
- tools.
- Incompatible changes to the build system
- * Front-ends external to GCC should modify their Make-lang.in file to
- replace double-colon rules (e.g. dvi::) with normal rules (like
- lang.dvi:). Front-end makefile hooks do not use double-colon rules
- anymore.
- * Up to GCC 4.1, a popular way to specify the target tools used
- during the build was to create directories named gas, binutils,
- etc. in the build tree, and create links to the tools from there.
- This does not work any more when the compiler is bootstrapped. The
- new configure option --with-target-tools provides a better way to
- achieve the same effect, and works for all native and cross
- settings.
- For questions related to the use of GCC, please consult these web
- pages and the [7]GCC manuals. If that fails, the
- [8]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [9]gcc@gcc.gnu.org. All of [10]our lists have public
- archives.
- Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [12]maintained by the GCC team. Last modified
- 2014-06-28[13].
- References
- 1. http://gcc.gnu.org/projects/gomp/
- 2. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
- 3. https://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.tr1
- 4. https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html
- 5. https://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html
- 6. https://gcc.gnu.org/wiki/Statically_linking_libgcj
- 7. https://gcc.gnu.org/onlinedocs/
- 8. mailto:gcc-help@gcc.gnu.org
- 9. mailto:gcc@gcc.gnu.org
- 10. https://gcc.gnu.org/lists.html
- 11. http://www.fsf.org/
- 12. https://gcc.gnu.org/about.html
- 13. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.1/index.html
- GCC 4.1 Release Series
- February 13, 2007
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.1.2.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 4.1.1 relative to previous releases of GCC.
- Release History
- GCC 4.1.2
- February 13, 2007 ([2]changes)
- GCC 4.1.1
- May 24, 2006 ([3]changes)
- GCC 4.1.0
- February 28, 2006 ([4]changes)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [5]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [6]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [7]GCC project
- web site or contact the [8]GCC development mailing list.
- To obtain GCC please use [9]our mirror sites or [10]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [11]GCC manuals. If that fails, the
- [12]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [13]gcc@gcc.gnu.org. All of [14]our lists have public
- archives.
- Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [16]maintained by the GCC team. Last modified
- 2014-06-28[17].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
- 3. http://gcc.gnu.org/gcc-4.1/changes.html
- 4. http://gcc.gnu.org/gcc-4.1/changes.html
- 5. http://gcc.gnu.org/gcc-4.1/buildstat.html
- 6. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 7. http://gcc.gnu.org/index.html
- 8. mailto:gcc@gcc.gnu.org
- 9. http://gcc.gnu.org/mirrors.html
- 10. http://gcc.gnu.org/svn.html
- 11. https://gcc.gnu.org/onlinedocs/
- 12. mailto:gcc-help@gcc.gnu.org
- 13. mailto:gcc@gcc.gnu.org
- 14. https://gcc.gnu.org/lists.html
- 15. http://www.fsf.org/
- 16. https://gcc.gnu.org/about.html
- 17. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.1/changes.html
- GCC 4.1 Release Series
- Changes, New Features, and Fixes
- The latest release in the 4.1 release series is [1]GCC 4.1.2.
- Caveats
- General Optimizer Improvements
- * GCC now has infrastructure for inter-procedural optimizations and
- the following inter-procedural optimizations are implemented:
- + Profile guided inlining. When doing profile feedback guided
- optimization, GCC can now use the profile to make better
- informed decisions on whether inlining of a function is
- profitable or not. This means that GCC will no longer inline
- functions at call sites that are not executed very often, and
- that functions at hot call sites are more likely to be
- inlined.
- A new parameter min-inline-recursive-probability is also now
- available to throttle recursive inlining of functions with
- small average recursive depths.
- + Discovery of pure and const functions, a form of side-effects
- analysis. While older GCC releases could also discover such
- special functions, the new IPA-based pass runs earlier so that
- the results are available to more optimizers. The pass is also
- simply more powerful than the old one.
- + Analysis of references to static variables and type escape
- analysis, also forms of side-effects analysis. The results of
- these passes allow the compiler to be less conservative about
- call-clobbered variables and references. This results in more
- redundant loads being eliminated and in making static
- variables candidates for register promotion.
- + Improvement of RTL-based alias analysis. The results of type
- escape analysis are fed to the RTL type-based alias analyzer,
- allowing it to disambiguate more memory references.
- + Interprocedural constant propagation and function versioning.
- This pass looks for functions that are always called with the
- same constant value for one or more of the function arguments,
- and propagates those constants into those functions.
- + GCC will now eliminate static variables whose usage was
- optimized out.
- + -fwhole-program --combine can now be used to make all
- functions in program static allowing whole program
- optimization. As an exception, the main function and all
- functions marked with the new externally_visible attribute are
- kept global so that programs can link with runtime libraries.
- * GCC can now do a form of partial dead code elimination (PDCE) that
- allows code motion of expressions to the paths where the result of
- the expression is actually needed. This is not always a win, so the
- pass has been limited to only consider profitable cases. Here is an
- example:
- int foo (int *, int *);
- int
- bar (int d)
- {
- int a, b, c;
- b = d + 1;
- c = d + 2;
- a = b + c;
- if (d)
- {
- foo (&b, &c);
- a = b + c;
- }
- printf ("%d\n", a);
- }
- The a = b + c can be sunk to right before the printf. Normal code
- sinking will not do this, it will sink the first one above into the
- else-branch of the conditional jump, which still gives you two
- copies of the code.
- * GCC now has a value range propagation pass. This allows the
- compiler to eliminate bounds checks and branches. The results of
- the pass can also be used to accurately compute branch
- probabilities.
- * The pass to convert PHI nodes to straight-line code (a form of
- if-conversion for GIMPLE) has been improved significantly. The two
- most significant improvements are an improved algorithm to
- determine the order in which the PHI nodes are considered, and an
- improvement that allow the pass to consider if-conversions of basic
- blocks with more than two predecessors.
- * Alias analysis improvements. GCC can now differentiate between
- different fields of structures in Tree-SSA's virtual operands form.
- This lets stores/loads from non-overlapping structure fields not
- conflict. A new algorithm to compute points-to sets was contributed
- that can allows GCC to see now that p->a and p->b, where p is a
- pointer to a structure, can never point to the same field.
- * Various enhancements to auto-vectorization:
- + Incrementally preserve SSA form when vectorizing.
- + Incrementally preserve loop-closed form when vectorizing.
- + Improvements to peeling for alignment: generate better code
- when the misalignment of an access is known at compile time,
- or when different accesses are known to have the same
- misalignment, even if the misalignment amount itself is
- unknown.
- + Consider dependence distance in the vectorizer.
- + Externalize generic parts of data reference analysis to make
- this analysis available to other passes.
- + Vectorization of conditional code.
- + Reduction support.
- * GCC can now partition functions in sections of hot and cold code.
- This can significantly improve performance due to better
- instruction cache locality. This feature works best together with
- profile feedback driven optimization.
- * A new pass to avoid saving of unneeded arguments to the stack in
- vararg functions if the compiler can prove that they will not be
- needed.
- * Transition of basic block profiling to tree level implementation
- has been completed. The new implementation should be considerably
- more reliable (hopefully avoiding profile mismatch errors when
- using -fprofile-use or -fbranch-probabilities) and can be used to
- drive higher level optimizations, such as inlining.
- The -ftree-based-profiling command-line option was removed and
- -fprofile-use now implies disabling old RTL level loop optimizer
- (-fno-loop-optimize). Speculative prefetching optimization
- (originally enabled by -fspeculative-prefetching) was removed.
- New Languages and Language specific improvements
- C and Objective-C
- * The old Bison-based C and Objective-C parser has been replaced by a
- new, faster hand-written recursive-descent parser.
- Ada
- * The build infrastructure for the Ada runtime library and tools has
- been changed to be better integrated with the rest of the build
- infrastructure of GCC. This should make doing cross builds of Ada a
- bit easier.
- C++
- * ARM-style name-injection of friend declarations is no longer the
- default. For example:
- struct S {
- friend void f();
- };
- void g() { f(); }
- will not be accepted; instead a declaration of f will need to be
- present outside of the scope of S. The new -ffriend-injection
- option will enable the old behavior.
- * The (undocumented) extension which permitted templates with default
- arguments to be bound to template template parameters with fewer
- parameters has been deprecated, and will be removed in the next
- major release of G++. For example:
- template <template <typename> class C>
- void f(C<double>) {}
- template <typename T, typename U = int>
- struct S {};
- template void f(S<double>);
- makes use of the deprecated extension. The reason this code is not
- valid ISO C++ is that S is a template with two parameters;
- therefore, it cannot be bound to C which has only one parameter.
- Runtime Library (libstdc++)
- * Optimization work:
- + A new implementation of std::search_n is provided, better
- performing in case of random access iterators.
- + Added further efficient specializations of istream functions,
- i.e., character array and string extractors.
- + Other smaller improvements throughout.
- * Policy-based associative containers, designed for high-performance,
- flexibility and semantic safety are delivered in ext/pb_assoc.
- * A versatile string class, __gnu_cxx::__versa_string, providing
- facilities conforming to the standard requirements for
- basic_string, is delivered in <ext/vstring.h>. In particular:
- + Two base classes are provided: the default one avoids
- reference counting and is optimized for short strings; the
- alternate one, still uses it while improving in a few low
- level areas (e.g., alignment). See vstring_fwd.h for some
- useful typedefs.
- + Various algorithms have been rewritten (e.g., replace), the
- code streamlined and simple optimizations added.
- + Option 3 of DR 431 is implemented for both available bases,
- thus improving the support for stateful allocators.
- * As usual, many bugs have been fixed (e.g., libstdc++/13583,
- libstdc++/23953) and LWG resolutions put into effect for the first
- time (e.g., DR 280, DR 464, N1780 recommendations for DR 233, TR1
- Issue 6.19). The implementation status of TR1 is now tracked in the
- docs in tr1.html.
- Objective-C++
- * A new language front end for Objective-C++ has been added. This
- language allows users to mix the object oriented features of
- Objective-C with those of C++.
- Java (GCJ)
- * Core library (libgcj) updates based on GNU Classpath 0.15 - 0.19
- features (plus some 0.20 bug-fixes)
- + Networking
- o The java.net.HttpURLConnection implementation no longer
- buffers the entire response body in memory. This means
- that response bodies larger than available memory can now
- be handled.
- + (N)IO
- o NIO FileChannel.map implementation, fast bulk put
- implementation for DirectByteBuffer (speeds up this
- method 10x).
- o FileChannel.lock() and FileChannel.force() implemented.
- + XML
- o gnu.xml fix for nodes created outside a namespace
- context.
- o Add support for output indenting and
- cdata-section-elements output instruction in
- xml.transform.
- o xml.xpath corrections for cases where elements/attributes
- might have been created in non-namespace-aware mode.
- Corrections to handling of XSL variables and minor
- conformance updates.
- + AWT
- o GNU JAWT implementation, the AWT Native Interface, which
- allows direct access to native screen resources from
- within a Canvas's paint method. GNU Classpath Examples
- comes with a Demo, see libjava/classpath/examples/README.
- o awt.datatransfer updated to 1.5 with support for
- FlavorEvents. The gtk+ awt peers now allow copy/paste of
- text, images, URIs/files and serialized objects with
- other applications and tracking clipboard change events
- with gtk+ 2.6 (for gtk+ 2.4 only text and serialized
- objects are supported). A GNU Classpath Examples
- datatransfer Demo was added to show the new
- functionality.
- o Split gtk+ awt peers event handling in two threads and
- improve gdk lock handling (solves several awt lock ups).
- o Speed up awt Image loading.
- o Better gtk+ scrollbar peer implementation when using gtk+
- >= 2.6.
- o Handle image loading errors correctly for gdkpixbuf and
- MediaTracker.
- o Better handle GDK lock. Properly prefix gtkpeer native
- functions (cp_gtk).
- o GdkGraphics2D has been updated to use Cairo 0.5.x or
- higher.
- o BufferedImage and GtkImage rewrites. All image drawing
- operations should now work correctly (flipping requires
- gtk+ >= 2.6)
- o Future Graphics2D, image and text work is documented at:
- [2]http://developer.classpath.org/mediation/ClasspathGrap
- hicsImagesText
- o When gtk+ 2.6 or higher is installed the default log
- handler will produce stack traces whenever a WARNING,
- CRITICAL or ERROR message is produced.
- + Free Swing
- o The RepaintManager has been reworked for more efficient
- painting, especially for large GUIs.
- o The layout manager OverlayLayout has been implemented,
- the BoxLayout has been rewritten to make use of the
- SizeRequirements utility class and caching for more
- efficient layout.
- o Improved accessibility support.
- o Significant progress has been made in the implementation
- of the javax.swing.plaf.metal package, with most UI
- delegates in a working state now. Please test this with
- your own applications and provide feedback that will help
- us to improve this package.
- o The GUI demo (gnu.classpath.examples.swing.Demo) has been
- extended to highlight various features in our Free Swing
- implementation. And it includes a look and feel switcher
- for Metal (default), Ocean and GNU themes.
- o The javax.swing.plaf.multi package is now implemented.
- o Editing and several key actions for JTree and JTable were
- implemented.
- o Lots of icons and look and feel improvements for Free
- Swing basic and metal themes were added. Try running the
- GNU Classpath Swing Demo in examples
- (gnu.classpath.examples.swing.Demo) with:
- -Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFee
- l or
- -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFee
- l
- o Start of styled text capabilites for java.swing.text.
- o DefaultMutableTreeNode pre-order, post-order, depth-first
- and breadth-first traversal enumerations implemented.
- o JInternalFrame colors and titlebar draw properly.
- o JTree is working up to par (icons, selection and keyboard
- traversal).
- o JMenus were made more compatible in visual and
- programmatic behavior.
- o JTable changeSelection and multiple selections
- implemented.
- o JButton and JToggleButton change states work properly
- now.
- o JFileChooser fixes.
- o revalidate() and repaint() fixes which make Free Swing
- much more responsive.
- o MetalIconFactory implemented.
- o Free Swing Top-Level Compatibility. JFrame, JDialog,
- JApplet, JInternalFrame, and JWindow are now 1.5
- compatible in the sense that you can call add() and
- setLayout() directly on them, which will have the same
- effect as calling getContentPane().add() and
- getContentPane().setLayout().
- o The JTree interface has been completed. JTrees now
- recognizes mouse clicks and selections work.
- o BoxLayout works properly now.
- o Fixed GrayFilter to actually work.
- o Metal SplitPane implemented.
- o Lots of Free Swing text and editor stuff work now.
- + Free RMI and Corba
- o Andrew Watson, Vice President and Technical Director of
- the Object Management Group, has officially assigned us
- 20 bit Vendor Minor Code Id: 0x47430 ("GC") that will
- mark remote classpath-specific system exceptions.
- Obtaining the VMCID means that GNU Classpath now is a
- recogniseable type of node in a highly interoperable
- CORBA world.
- o GNU Classpath now includes the first working draft to
- support the RMI over IIOP protocol. The current
- implementation is capable of remote invocations,
- transferring various Serializables and Externalizables
- via RMI-IIOP protocol. It can flatten graphs and, at
- least for the simple cases, is interoperable with 1.5
- JDKs.
- o org.omg.PortableInterceptor and related functionality in
- other packages is now implemented:
- # The sever and client interceptors work as required
- since 1.4.
- # The IOR interceptor works as needed for 1.5.
- o The org.omg.DynamicAny package is completed and passes
- the prepared tests.
- o The Portable Object Adapter should now support the output
- of the recent IDL to java compilers. These compilers now
- generate servants and not CORBA objects as before, making
- the output depend on the existing POA implementation.
- Completing POA means that such code can already be tried
- to run on Classpath. Our POA is tested for the following
- usager scenarios:
- # POA converts servant to the CORBA object.
- # Servant provides to the CORBA object.
- # POA activates new CORBA object with the given Object
- Id (byte array) that is later accessible for the
- servant.
- # During the first call, the ServantActivator provides
- servant for this and all subsequent calls on the
- current object.
- # During each call, the ServantLocator provides
- servant for this call only.
- # ServantLocator or ServantActivator forwards call to
- another server.
- # POA has a single servant, responsible for all
- objects.
- # POA has a default servant, but some objects are
- explicitly connected to they specific servants.
- The POA is verified using tests from the former
- cost.omg.org.
- o The CORBA implementation is now a working prototype that
- should support features up to 1.3 inclusive. We invite
- groups writing CORBA dependent applications to try
- Classpath implementation, reporting any possible bugs.
- The CORBA prototype is interoperable with Sun's
- implementation v 1.4, transferring object references,
- primitive types, narrow and wide strings, arrays,
- structures, trees, abstract interfaces and value types
- (feature of CORBA 2.3) between these two platforms.
- Remote exceptions are transferred and handled correctly.
- The stringified object references (IORs) from various
- sources are parsed as required. The transient (for
- current session) and permanent (till jre restart)
- redirections work. Both Little and Big Endian encoded
- messages are accepted. The implementation is verified
- using tests from the former cost.omg.org. The current
- release includes working examples (see the examples
- directory), demonstrating the client-server
- communication, using either CORBA Request or IDL-based
- stub (usually generated by a IDL to java compiler). These
- examples also show how to use the Classpath CORBA naming
- service. The IDL to java compiler is not yet written, but
- as our library must be compatible, it naturally accepts
- the output of other idlj implementations.
- + Misc
- o Updated TimeZone data against Olson tzdata2005l.
- o Make zip and jar packages UTF-8 clean.
- o "native" code builds and compiles (warning free) on
- Darwin and Solaris.
- o java.util.logging.FileHandler now rotates files.
- o Start of a generic JDWP framework in gnu/classpath/jdwp.
- This is unfinished, but feedback (at classpath@gnu.org)
- from runtime hackers is greatly appreciated. Although
- most of the work is currently being done around gcj/gij
- we want this framework to be as VM neutral as possible.
- Early design is described in:
- [3]https://gcc.gnu.org/ml/java/2005-05/msg00260.html
- o QT4 AWT peers, enable by giving configure
- --enable-qt-peer. Included, but not ready for production
- yet. They are explicitly disabled and not supported. But
- if you want to help with the development of these new
- features we are interested in feedback. You will have to
- explicitly enable them to try them out (and they will
- most likely contain bugs).
- o Documentation fixes all over the place. See
- [4]http://developer.classpath.org/doc/
- New Targets and Target Specific Improvements
- IA-32/x86-64
- * The x86-64 medium model (that allows building applications whose
- data segment exceeds 4GB) was redesigned to match latest ABI draft.
- New implementation split large datastructures into separate segment
- improving performance of accesses to small datastructures and also
- allows linking of small model libraries into medium model programs
- as long as the libraries are not accessing the large datastructures
- directly. Medium model is also supported in position independent
- code now.
- The ABI change results in partial incompatibility among medium
- model objects. Linking medium model libraries (or objects) compiled
- with new compiler into medium model program compiled with older
- will likely result in exceeding ranges of relocations.
- Binutils 2.16.91 or newer are required for compiling medium model
- now.
- RS6000 (POWER/PowerPC)
- * The AltiVec vector primitives in <altivec.h> are now implemented in
- a way that puts a smaller burden on the preprocessor, instead
- processing the "overloading" in the front ends. This should benefit
- compilation speed on AltiVec vector code.
- * AltiVec initializers now are generated more efficiently.
- * The popcountb instruction available on POWER5 now is generated.
- * The floating point round to integer instructions available on
- POWER5+ now is generated.
- * Floating point divides can be synthesized using the floating point
- reciprocal estimate instructions.
- * Double precision floating point constants are initialized as single
- precision values if they can be represented exactly.
- S/390, zSeries and System z9
- * Support for the IBM System z9 109 processor has been added. When
- using the -march=z9-109 option, the compiler will generate code
- making use of instructions provided by the extended immediate
- facility.
- * Support for 128-bit IEEE floating point has been added. When using
- the -mlong-double-128 option, the compiler will map the long double
- data type to 128-bit IEEE floating point. Using this option
- constitutes an ABI change, and requires glibc support.
- * Various changes to improve performance of generated code have been
- implemented, including:
- + In functions that do not require a literal pool, register %r13
- (which is traditionally reserved as literal pool pointer), can
- now be freely used for other purposes by the compiler.
- + More precise tracking of register use allows the compiler to
- generate more efficient function prolog and epilog code in
- certain cases.
- + The SEARCH STRING, COMPARE LOGICAL STRING, and MOVE STRING
- instructions are now used to implement C string functions.
- + The MOVE CHARACTER instruction with single byte overlap is now
- used to implement the memset function with non-zero fill byte.
- + The LOAD ZERO instructions are now used where appropriate.
- + The INSERT CHARACTERS UNDER MASK, STORE CHARACTERS UNDER MASK,
- and INSERT IMMEDIATE instructions are now used more frequently
- to optimize bitfield operations.
- + The BRANCH ON COUNT instruction is now used more frequently.
- In particular, the fact that a loop contains a subroutine call
- no longer prevents the compiler from using this instruction.
- + The compiler is now aware that all shift and rotate
- instructions implicitly truncate the shift count to six bits.
- * Back-end support for the following generic features has been
- implemented:
- + The full set of [5]built-in functions for atomic memory
- access.
- + The -fstack-protector feature.
- + The optimization pass avoiding unnecessary stores of incoming
- argument registers in functions with variable argument list.
- SPARC
- * The default code model in 64-bit mode has been changed from
- Medium/Anywhere to Medium/Middle on Solaris.
- * TLS support is disabled by default on Solaris prior to release 10.
- It can be enabled on TLS-capable Solaris 9 versions (4/04 release
- and later) by specifying --enable-tls at configure time.
- MorphoSys
- * Support has been added for this new architecture.
- Obsolete Systems
- Documentation improvements
- Other significant improvements
- * GCC can now emit code for protecting applications from
- stack-smashing attacks. The protection is realized by buffer
- overflow detection and reordering of stack variables to avoid
- pointer corruption.
- * Some built-in functions have been fortified to protect them against
- various buffer overflow (and format string) vulnerabilities.
- Compared to the mudflap bounds checking feature, the safe builtins
- have far smaller overhead. This means that programs built using
- safe builtins should not experience any measurable slowdown.
- GCC 4.1.2
- This is the [6]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.1.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- When generating code for a shared library, GCC now recognizes that
- global functions may be replaced when the program runs. Therefore, it
- is now more conservative in deducing information from the bodies of
- functions. For example, in this example:
- void f() {}
- void g() {
- try { f(); }
- catch (...) {
- cout << "Exception";
- }
- }
- G++ would previously have optimized away the catch clause, since it
- would have concluded that f cannot throw exceptions. Because users may
- replace f with another function in the main body of the program, this
- optimization is unsafe, and is no longer performed. If you wish G++ to
- continue to optimize as before, you must add a throw() clause to the
- declaration of f to make clear that it does not throw exceptions.
- For questions related to the use of GCC, please consult these web
- pages and the [7]GCC manuals. If that fails, the
- [8]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [9]gcc@gcc.gnu.org. All of [10]our lists have public
- archives.
- Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [12]maintained by the GCC team. Last modified
- 2014-06-28[13].
- References
- 1. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
- 2. http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
- 3. https://gcc.gnu.org/ml/java/2005-05/msg00260.html
- 4. http://developer.classpath.org/doc/
- 5. https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
- 6. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2
- 7. https://gcc.gnu.org/onlinedocs/
- 8. mailto:gcc-help@gcc.gnu.org
- 9. mailto:gcc@gcc.gnu.org
- 10. https://gcc.gnu.org/lists.html
- 11. http://www.fsf.org/
- 12. https://gcc.gnu.org/about.html
- 13. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.0/index.html
- GCC 4.0 Release Series
- January 31, 2007
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.0.4.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 4.0.3 relative to previous releases of GCC.
- Release History
- GCC 4.0.4
- January 31, 2007 ([2]changes)
- GCC 4.0.3
- March 10, 2006 ([3]changes)
- GCC 4.0.2
- September 28, 2005 ([4]changes)
- GCC 4.0.1
- July 7, 2005 ([5]changes)
- GCC 4.0.0
- April 20, 2005 ([6]changes)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [7]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [8]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [9]GCC project
- web site or contact the [10]GCC development mailing list.
- To obtain GCC please use [11]our mirror sites, or [12]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [13]GCC manuals. If that fails, the
- [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [15]gcc@gcc.gnu.org. All of [16]our lists have public
- archives.
- Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [18]maintained by the GCC team. Last modified
- 2014-06-28[19].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
- 3. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.3
- 4. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.2
- 5. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.1
- 6. http://gcc.gnu.org/gcc-4.0/changes.html
- 7. http://gcc.gnu.org/gcc-4.0/buildstat.html
- 8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 9. http://gcc.gnu.org/index.html
- 10. mailto:gcc@gcc.gnu.org
- 11. http://gcc.gnu.org/mirrors.html
- 12. http://gcc.gnu.org/svn.html
- 13. https://gcc.gnu.org/onlinedocs/
- 14. mailto:gcc-help@gcc.gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. https://gcc.gnu.org/lists.html
- 17. http://www.fsf.org/
- 18. https://gcc.gnu.org/about.html
- 19. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-4.0/changes.html
- GCC 4.0 Release Series
- Changes, New Features, and Fixes
- The latest release in the 4.0 release series is [1]GCC 4.0.4.
- Caveats
- * GCC now generates location lists by default when compiling with
- debug info and optimization.
- + GDB 6.0 and older crashes when it sees location lists. GDB 6.1
- or later is needed to debug binaries containing location
- lists.
- + When you are trying to view a value of a variable in a part of
- a function where it has no location (for example when the
- variable is no longer used and thus its location was used for
- something else) GDB will say that it is not available.
- You can disable generating location lists by -fno-var-tracking.
- * GCC no longer accepts the -fwritable-strings option. Use named
- character arrays when you need a writable string.
- * The options -freduce-all-givs and -fmove-all-movables have been
- discontinued. They were used to circumvent a shortcoming in the
- heuristics of the old loop optimization code with respect to common
- Fortran constructs. The new (tree) loop optimizer works differently
- and doesn't need those work-arounds.
- * The graph-coloring register allocator, formerly enabled by the
- option -fnew-ra, has been discontinued.
- * -I- has been deprecated. -iquote is meant to replace the need for
- this option.
- * The MIPS -membedded-pic and -mrnames options have been removed.
- * All MIPS targets now require the GNU assembler. In particular, IRIX
- configurations can no longer use the MIPSpro assemblers, although
- they do still support the MIPSpro linkers.
- * The SPARC option -mflat has been removed.
- * English-language diagnostic messages will now use Unicode quotation
- marks in UTF-8 locales. (Non-English messages already used the
- quotes appropriate for the language in previous releases.) If your
- terminal does not support UTF-8 but you are using a UTF-8 locale
- (such locales are the default on many GNU/Linux systems) then you
- should set LC_CTYPE=C in the environment to disable that locale.
- Programs that parse diagnostics and expect plain ASCII
- English-language messages should set LC_ALL=C. See [2]Markus Kuhn's
- explanation of Unicode quotation marks for more information.
- * The specs file is no longer installed on most platforms. Most users
- will be totally unaffected. However, if you are accustomed to
- editing the specs file yourself, you will now have to use the
- -dumpspecs option to generate the specs file, and then edit the
- resulting file.
- General Optimizer Improvements
- * The [3]tree ssa branch has been merged. This merge has brought in a
- completely new optimization framework based on a higher level
- intermediate representation than the existing RTL representation.
- Numerous new code transformations based on the new framework are
- available in GCC 4.0, including:
- + Scalar replacement of aggregates
- + Constant propagation
- + Value range propagation
- + Partial redundancy elimination
- + Load and store motion
- + Strength reduction
- + Dead store elimination
- + Dead and unreachable code elimination
- + [4]Autovectorization
- + Loop interchange
- + Tail recursion by accumulation
- Many of these passes outperform their counterparts from previous
- GCC releases.
- * [5]Swing Modulo Scheduling (SMS). An RTL level instruction
- scheduling optimization intended for loops that perform heavy
- computations.
- New Languages and Language specific improvements
- C family
- * The sentinel attribute has been added to GCC. This function
- attribute allows GCC to warn when variadic functions such as execl
- are not NULL terminated. See the GCC manual for a complete
- description of its behavior.
- * Given __attribute__((alias("target"))) it is now an error if target
- is not a symbol, defined in the same translation unit. This also
- applies to aliases created by #pragma weak alias=target. This is
- because it's meaningless to define an alias to an undefined symbol.
- On Solaris, the native assembler would have caught this error, but
- GNU as does not.
- C and Objective-C
- * The -Wstrict-aliasing=2 option has been added. This warning catches
- all unsafe cases, but it may also give a warning for some cases
- that are safe.
- * The cast-as-lvalue, conditional-expression-as-lvalue and
- compound-expression-as-lvalue extensions, which were deprecated in
- 3.3.4 and 3.4, have been removed.
- * The -fwritable-strings option, which was deprecated in 3.4, has
- been removed.
- * #pragma pack() semantics have been brought closer to those used by
- other compilers. This also applies to C++.
- * Taking the address of a variable with register storage is invalid
- in C. GCC now issues an error instead of a warning.
- * Arrays of incomplete element type are invalid in C. GCC now issues
- an error for such arrays. Declarations such as extern struct s x[];
- (where struct s has not been defined) can be moved after the
- definition of struct s. Function parameters declared as arrays of
- incomplete type can instead be declared as pointers.
- C++
- * When compiling without optimizations (-O0), the C++ frontend is
- much faster than in any previous versions of GCC. Independent
- testers have measured speed-ups up to 25% in real-world production
- code, compared to the 3.4 family (which was already the fastest
- version to date). Upgrading from older versions might show even
- bigger improvements.
- * ELF visibility attributes can now be applied to a class type, so
- that it affects every member function of a class at once, without
- having to specify each individually:
- class __attribute__ ((visibility("hidden"))) Foo
- {
- int foo1();
- void foo2();
- };
- The syntax is deliberately similar to the __declspec() system used
- by Microsoft Windows based compilers, allowing cross-platform
- projects to easily reuse their existing macro system for denoting
- exports and imports. By explicitly marking internal classes never
- used outside a binary as hidden, one can completely avoid PLT
- indirection overheads during their usage by the compiler. You can
- find out more about the advantages of this at
- [6]http://www.akkadia.org/drepper/dsohowto.pdf
- * The -fvisibility-inlines-hidden option has been added which marks
- all inlineable functions as having hidden ELF visibility, thus
- removing their symbol and typeinfo from the exported symbol table
- of the output ELF binary. Using this option can reduce the exported
- symbol count of template-heavy code by up to 40% with no code
- change at all, thus notably improving link and load times for the
- binary as well as a reduction in size of up to 10%. Also, check the
- new [7]-fvisibility option.
- * The compiler now uses the library interface specified by the [8]C++
- ABI for thread-safe initialization of function-scope static
- variables. Most users should leave this alone, but embedded
- programmers may want to disable this by specifying
- -fno-threadsafe-statics for a small savings in code size.
- * Taking the address of an explicit register variable is no longer
- supported. Note that C++ allows taking the address of variables
- with register storage so this will continue to compile with a
- warning. For example, assuming that r0 is a machine register:
- register int foo asm ("r0");
- register int bar;
- &foo; // error, no longer accepted
- &bar; // OK, with a warning
- * G++ has an undocumented extension to virtual function covariancy
- rules that allowed the overrider to return a type that was
- implicitly convertable to the overridden function's return type.
- For instance a function returning void * could be overridden by a
- function returning T *. This is now deprecated and will be removed
- in a future release.
- * The G++ minimum and maximum operators (<? and >?) and their
- compound forms (<?=) and >?=) have been deprecated and will be
- removed in a future version. Code using these operators should be
- modified to use std::min and std::max instead.
- * Declaration of nested classes of class templates as friends are
- supported:
- template <typename T> struct A {
- class B {};
- };
- class C {
- template <typename T> friend class A<T>::B;
- };
- This complements the feature member functions of class templates as
- friends introduced in GCC 3.4.0.
- * When declaring a friend class using an unqualified name, classes
- outside the innermost non-class scope are not searched:
- class A;
- namespace N {
- class B {
- friend class A; // Refer to N::A which has not been declared yet
- // because name outside namespace N are not searched
- friend class ::A; // Refer to ::A
- };
- }
- Hiding the friend name until declaration is still not implemented.
- * Friends of classes defined outside their namespace are correctly
- handled:
- namespace N {
- class A;
- }
- class N::A {
- friend class B; // Refer to N::B in GCC 4.0.0
- // but ::B in earlier versions of GCC
- };
- Runtime Library (libstdc++)
- * Optimization work:
- + Added efficient specializations of istream functions for char
- and wchar_t.
- + Further performance tuning of strings, in particular wrt
- single-char append and getline.
- + iter_swap - and therefore most of the mutating algorithms -
- now makes an unqualified call to swap when the value_type of
- the two iterators is the same.
- * A large subset of the features in Technical Report 1 (TR1 for
- short) is experimentally delivered (i.e., no guarantees about the
- implementation are provided. In particular it is not promised that
- the library will remain link-compatible when code using TR1 is
- used):
- + General utilities such as reference_wrapper and shared_ptr.
- + Function objects, i.e., result_of, mem_fn, bind, function.
- + Support for metaprogramming.
- + New containers such as tuple, array, unordered_set,
- unordered_map, unordered_multiset, unordered_multimap.
- * As usual, many bugs have been fixed and LWG resolutions implemented
- for the first time (e.g., DR 409).
- Java
- * In order to prevent naming conflicts with other implementations of
- these tools, some GCJ binaries have been renamed:
- + rmic is now grmic,
- + rmiregistry is now grmiregistry, and
- + jar is now fastjar.
- In particular, these names were problematic for the jpackage.org
- packaging conventions which install symlinks in /usr/bin that point
- to the preferred versions of these tools.
- * The -findirect-dispatch argument to the compiler now works and
- generates code following a new "binary compatibility" ABI. Code
- compiled this way follows the binary compatibility rules of the
- Java Language Specification.
- * libgcj now has support for using GCJ as a JIT, using the
- gnu.gcj.jit family of system properties.
- * libgcj can now find a shared library corresponding to the bytecode
- representation of a class. See the documentation for the new
- gcj-dbtool program, and the new gnu.gcj.precompiled.db.path system
- property.
- * There have been many improvements to the class library. Here are
- some highlights:
- + Much more of AWT and Swing exist.
- + Many new packages and classes were added, including
- java.util.regex, java.net.URI, javax.crypto,
- javax.crypto.interfaces, javax.crypto.spec, javax.net,
- javax.net.ssl, javax.security.auth,
- javax.security.auth.callback, javax.security.auth.login,
- javax.security.auth.x500, javax.security.sasl, org.ietf.jgss,
- javax.imageio, javax.imageio.event, javax.imageio.spi,
- javax.print, javax.print.attribute,
- javax.print.attribute.standard, javax.print.event, and
- javax.xml
- + Updated SAX and DOM, and imported GNU JAXP
- Fortran
- * A new [9]Fortran front end has replaced the aging GNU Fortran 77
- front end. The new front end supports Fortran 90 and Fortran 95. It
- may not yet be as stable as the old Fortran front end.
- Ada
- * Ada (with tasking and Zero Cost Exceptions) is now available on
- many more targets, including but not limited to: alpha-linux,
- hppa-hpux, hppa-linux, powerpc-darwin, powerpc-linux, s390-linux,
- s390x-linux, sparc-linux.
- * Some of the new Ada 2005 features are now implemented like
- Wide_Wide_Character and Ada.Containers.
- * Many bugs have been fixed, tools and documentation improved.
- * To compile Ada from the sources, install an older working Ada
- compiler and then use --enable-languages=ada at configuration time,
- since the Ada frontend is not currently activated by default. See
- the [10]Installing GCC for details.
- New Targets and Target Specific Improvements
- H8/300
- * The frame layout has changed. In the new layout, the prologue of a
- function first saves registers and then allocate space for locals,
- resulting in an 1% improvement on code size.
- IA-32/x86-64 (AMD64)
- * The acos, asin, drem, exp10, exp2, expm1, fmod, ilogb, log10,
- log1p, log2, logb and tan mathematical builtins (and their float
- and long double variants) are now implemented as inline x87
- intrinsics when using -ffast-math.
- * The ceil, floor, nearbyint, rint and trunc mathematical builtins
- (and their float and long double variants) are now implemented as
- inline x87 intrinsics when using -ffast-math.
- * The x87's fsincos instruction is now used automatically with
- -ffast-math when calculating both the sin and cos of the same
- argument.
- * Instruction selection for multiplication and division by constants
- has been improved.
- IA-64
- * Floating point division, integer division and sqrt are now inlined,
- resulting in significant performance improvements on some codes.
- MIPS
- * Division by zero checks now use conditional traps if the target
- processor supports them. This decreases code size by one word per
- division operation. The old behavior (branch and break) can be
- obtained either at configure time by passing --with-divide=breaks
- to configure or at runtime by passing -mdivide-breaks to GCC.
- * Support for MIPS64 paired-single instructions has been added. It is
- enabled by -mpaired-single and can be accessed using both the
- target-independent vector extensions and new MIPS-specific built-in
- functions.
- * Support for the MIPS-3D ASE has been added. It is enabled by
- -mips3d and provides new MIPS-3D-specific built-in functions.
- * The -mexplicit-relocs option now supports static n64 code (as is
- used, for example, in 64-bit linux kernels). -mexplicit-relocs
- should now be feature-complete and is enabled by default when GCC
- is configured to use a compatible assembler.
- * Support for the NEC VR4130 series has been added. This support
- includes the use of VR-specific instructions and a new VR4130
- scheduler. Full VR4130 support can be selected with -march=vr4130
- while code for any ISA can be tuned for the VR4130 using
- -mtune=vr4130. There is also a new -mvr4130-align option that
- produces better schedules at the cost of increased code size.
- * Support for the Broadcom SB-1 has been extended. There is now an
- SB-1 scheduler as well as support for the SB-1-specific
- paired-single instructions. Full SB-1 support can be selected with
- -march=sb1 while code for any ISA can be optimized for the SB-1
- using -mtune=sb1.
- * The compiler can now work around errata in R4000, R4400, VR4120 and
- VR4130 processors. These workarounds are enabled by -mfix-r4000,
- -mfix-r4400, -mfix-vr4120 and -mfix-vr4130 respectively. The VR4120
- and VR4130 workarounds need binutils 2.16 or above.
- * IRIX shared libraries are now installed into the standard library
- directories: o32 libraries go into lib/, n32 libraries go into
- lib32/ and n64 libraries go into lib64/.
- * The compiler supports a new -msym32 option. It can be used to
- optimize n64 code in which all symbols are known to have 32-bit
- values.
- S/390 and zSeries
- * New command-line options help to generate code intended to run in
- an environment where stack space is restricted, e.g. Linux kernel
- code:
- + -mwarn-framesize and -mwarn-dynamicstack trigger compile-time
- warnings for single functions that require large or dynamic
- stack frames.
- + -mstack-size and -mstack-guard generate code that checks for
- stack overflow at run time.
- + -mpacked-stack generates code that reduces the stack frame
- size of many functions by reusing unneeded parts of the stack
- bias area.
- * The -msoft-float option now ensures that generated code never
- accesses floating point registers.
- * The s390x-ibm-tpf target now fully supports C++, including
- exceptions and threads.
- * Various changes to improve performance of the generated code have
- been implemented, including:
- + GCC now uses sibling calls where possible.
- + Condition code handling has been optimized, allowing GCC to
- omit redundant comparisons in certain cases.
- + The cost function guiding many optimizations has been refined
- to more accurately represent the z900 and z990 processors.
- + The ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL WITH BORROW
- instructions are now used to avoid conditional branches in
- certain cases.
- + The back end now uses the LEGITIMIZE_RELOAD_ADDRESS feature to
- optimize address arithmetic required to access large stack
- frames.
- + GCC now makes more efficient use of memory-to-memory type
- instructions (MVC, CLC, ...).
- + More precise tracking of special register use allows better
- instruction scheduling, in particular of the function prologue
- and epilogue sequences.
- + The Java front end now generates inline code to implement
- integer division, instead of calling library routines.
- SPARC
- * The options -mv8, -msparclite, -mcypress, -msupersparc, -mf930 and
- -mf934 have been removed. They have been replaced with -mcpu=xxx.
- * The internal model used to estimate the relative cost of each
- instruction has been updated. It is expected to give better results
- on recent UltraSPARC processors.
- * Code generation for function prologues and epilogues has been
- improved, resulting in better scheduling and allowing multiple exit
- points in functions.
- * Support for Sun's Visual Instruction Set (VIS) has been enhanced.
- It is enabled by -mvis and provides new built-in functions for VIS
- instructions on UltraSPARC processors.
- * The option -mapp-regs has been turned on by default on Solaris too.
- NetWare
- * Novell NetWare (on ix86, no other hardware platform was ever really
- supported by this OS) has been re-enabled and the ABI supported by
- GCC has been brought into sync with that of MetroWerks CodeWarrior
- (the ABI previously supported was that of some Unix systems, which
- NetWare never tried to support).
- Obsolete Systems
- Support for a number of older systems has been declared obsolete in GCC
- 4.0. Unless there is activity to revive them, the next release of GCC
- will have their sources permanently removed.
- All GCC ports for the following processor architectures have been
- declared obsolete:
- * Intel i860
- * Ubicom IP2022
- * National Semiconductor NS32K
- * Texas Instruments TMS320C[34]x
- Also, those for some individual systems have been obsoleted:
- * SPARC family
- + SPARClite-based systems (sparclite-*-coff, sparclite-*-elf,
- sparc86x-*-elf)
- + OpenBSD 32-bit (sparc-*-openbsd*)
- Documentation improvements
- Other significant improvements
- * Location lists are now generated by default when compiling with
- debug info and optimization. Location lists provide more accurate
- debug info about locations of variables and they allow debugging
- code compiled with -fomit-frame-pointer.
- * The -fvisibility option has been added which allows the default ELF
- visibility of all symbols to be set per compilation and the new
- #pragma GCC visibility preprocessor command allows the setting of
- default ELF visibility for a region of code. Using
- -fvisibility=hidden especially in combination with the new
- -fvisibility-inlines-hidden can yield substantial improvements in
- output binary quality including avoiding PLT indirection overheads,
- reduction of the exported symbol count by up to 60% (with resultant
- improvements to link and load times), better scope for the
- optimizer to improve code and up to a 20% reduction in binary size.
- Using these options correctly yields a binary with a similar symbol
- count to a Windows DLL.
- Perhaps more importantly, this new feature finally allows (with
- careful planning) complete avoidance of symbol clashes when
- manually loading shared objects with RTLD_GLOBAL, thus finally
- solving problems many projects such as python were forced to use
- RTLD_LOCAL for (with its resulting issues for C++ correctness). You
- can find more information about using these options at
- [11]https://gcc.gnu.org/wiki/Visibility.
- __________________________________________________________________
- GCC 4.0.1
- This is the [12]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.0.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- GCC 4.0.2
- This is the [13]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.0.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- Unfortunately, due to a release engineering failure, this release has a
- regression on Solaris that will affect some C++ programs. We suggest
- that Solaris users apply a [14]patch that corrects the problem. Users
- who do not wish to apply the patch should explicitly link C++ programs
- with the -pthreads option, even if they do not use threads. This
- problem has been corrected in the current 4.0 branch sources and will
- not be present in GCC 4.0.3.
- GCC 4.0.3
- Starting with this release, the function getcontext is recognized by
- the compiler as having the same semantics as the setjmp function. In
- particular, the compiler will ensure that all registers are dead before
- calling such a function and will emit a warning about the variables
- that may be clobbered after the second return from the function.
- GCC 4.0.4
- This is the [15]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.0.4 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- The 4.0.4 release is provided for those that require a high degree of
- binary compatibility with previous 4.0.x releases. For most users, the
- GCC team recommends that version 4.1.1 or later be used instead."
- For questions related to the use of GCC, please consult these web
- pages and the [16]GCC manuals. If that fails, the
- [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [18]gcc@gcc.gnu.org. All of [19]our lists have public
- archives.
- Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [21]maintained by the GCC team. Last modified
- 2015-06-27[22].
- References
- 1. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
- 2. http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
- 3. http://gcc.gnu.org/projects/tree-ssa/
- 4. http://gcc.gnu.org/projects/tree-ssa/vectorization.html
- 5. http://gcc.gnu.org/news/sms.html
- 6. http://www.akkadia.org/drepper/dsohowto.pdf
- 7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility
- 8. http://mentorembedded.github.io/cxx-abi/
- 9. http://gcc.gnu.org/fortran/
- 10. https://gcc.gnu.org/install/
- 11. https://gcc.gnu.org/wiki/Visibility
- 12. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.1
- 13. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.2
- 14. https://gcc.gnu.org/ml/gcc-cvs/2005-09/msg00984.html
- 15. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.4
- 16. https://gcc.gnu.org/onlinedocs/
- 17. mailto:gcc-help@gcc.gnu.org
- 18. mailto:gcc@gcc.gnu.org
- 19. https://gcc.gnu.org/lists.html
- 20. http://www.fsf.org/
- 21. https://gcc.gnu.org/about.html
- 22. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.4/index.html
- GCC 3.4 Release Series
- May 26, 2006
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.4.6.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 3.4.4 relative to previous releases of GCC. This is the last of the
- 3.4.x series.
- The GCC 3.4 release series includes numerous [2]new features,
- improvements, bug fixes, and other changes, thanks to an [3]amazing
- group of volunteers.
- Release History
- GCC 3.4.6
- March 6, 2006 ([4]changes)
- GCC 3.4.5
- November 30, 2005 ([5]changes)
- GCC 3.4.4
- May 18, 2005 ([6]changes)
- GCC 3.4.3
- November 4, 2004 ([7]changes)
- GCC 3.4.2
- September 6, 2004 ([8]changes)
- GCC 3.4.1
- July 1, 2004 ([9]changes)
- GCC 3.4.0
- April 18, 2004 ([10]changes)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [11]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [12]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [13]GCC
- project web site or contact the [14]GCC development mailing list.
- To obtain GCC please use [15]our mirror sites, or [16]our SVN server.
- For questions related to the use of GCC, please consult these web
- pages and the [17]GCC manuals. If that fails, the
- [18]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [19]gcc@gcc.gnu.org. All of [20]our lists have public
- archives.
- Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [22]maintained by the GCC team. Last modified
- 2014-06-28[23].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-3.4/changes.html
- 3. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 4. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
- 5. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.5
- 6. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.4
- 7. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.3
- 8. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.2
- 9. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.1
- 10. http://gcc.gnu.org/gcc-3.4/changes.html
- 11. http://gcc.gnu.org/gcc-3.4/buildstat.html
- 12. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 13. http://gcc.gnu.org/index.html
- 14. mailto:gcc@gcc.gnu.org
- 15. http://gcc.gnu.org/mirrors.html
- 16. http://gcc.gnu.org/svn.html
- 17. https://gcc.gnu.org/onlinedocs/
- 18. mailto:gcc-help@gcc.gnu.org
- 19. mailto:gcc@gcc.gnu.org
- 20. https://gcc.gnu.org/lists.html
- 21. http://www.fsf.org/
- 22. https://gcc.gnu.org/about.html
- 23. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.4/changes.html
- GCC 3.4 Release Series
- Changes, New Features, and Fixes
- The final release in the 3.4 release series is [1]GCC 3.4.6. The series
- is now closed.
- GCC 3.4 has [2]many improvements in the C++ frontend. Before reporting
- a bug, please make sure it's really GCC, and not your code, that is
- broken.
- Caveats
- * GNU Make is now required to build GCC.
- * With -nostdinc the preprocessor used to ignore both standard
- include paths and include paths contained in environment variables.
- It was neither documented nor intended that environment variable
- paths be ignored, so this has been corrected.
- * GCC no longer accepts the options -fvolatile, -fvolatile-global and
- -fvolatile-static. It is unlikely that they worked correctly in any
- 3.x release.
- * GCC no longer ships <varargs.h>. Use <stdarg.h> instead.
- * Support for all the systems [3]obsoleted in GCC 3.3 has been
- removed from GCC 3.4. See below for a [4]list of systems which are
- obsoleted in this release.
- * GCC now requires an ISO C90 (ANSI C89) C compiler to build. K&R C
- compilers will not work.
- * The implementation of the [5]MIPS ABIs has changed. As a result,
- the code generated for certain MIPS targets will not be binary
- compatible with earlier releases.
- * In previous releases, the MIPS port had a fake "hilo" register with
- the user-visible name accum. This register has been removed.
- * The implementation of the [6]SPARC ABIs has changed. As a result,
- the code generated will not be binary compatible with earlier
- releases in certain cases.
- * The configure option --enable-threads=pthreads has been removed;
- use --enable-threads=posix instead, which should have the same
- effect.
- * Code size estimates used by inlining heuristics for C, Objective-C,
- C++ and Java have been redesigned significantly. As a result the
- parameters of -finline-insns, --param max-inline-insns-single and
- --param max-inline-insns-auto need to be reconsidered.
- * --param max-inline-slope and --param min-inline-insns have been
- removed; they are not needed for the new bottom-up inlining
- heuristics.
- * The new unit-at-a-time compilation scheme has several compatibility
- issues:
- + The order in which functions, variables, and top-level asm
- statements are emitted may have changed. Code relying on some
- particular ordering needs to be updated. The majority of such
- top-level asm statements can be replaced by section
- attributes.
- + Unreferenced static variables and functions are removed. This
- may result in undefined references when an asm statement
- refers to the variable/function directly. In that case either
- the variable/function shall be listed in asm statement operand
- or in the case of top-level asm statements the attribute used
- shall be used to force function/variable to be always output
- and considered as a possibly used by unknown code.
- For variables the attribute is accepted only by GCC 3.4 and
- newer, while for earlier versions it is sufficient to use
- unused to silence warnings about the variables not being
- referenced. To keep code portable across different GCC
- versions, you can use appropriate preprocessor conditionals.
- + Static functions now can use non-standard passing conventions
- that may break asm statements calling functions directly.
- Again the attribute used shall be used to prevent this
- behavior.
- As a temporary workaround, -fno-unit-at-a-time can be used, but
- this scheme may not be supported by future releases of GCC.
- * GCC 3.4 automatically places zero-initialized variables in the .bss
- section on some operating systems. Versions of GNU Emacs up to (and
- including) 21.3 will not work correctly when using this
- optimization; you can use -fno-zero-initialized-in-bss to disable
- it.
- * If GCC 3.4 is configured with --enable-threads=posix (the default
- on most targets that support pthreads) then _REENTRANT will be
- defined unconditionally by some libstdc++ headers. C++ code which
- relies on that macro to detect whether multi-threaded code is being
- compiled might change in meaning, possibly resulting in linker
- errors for single-threaded programs. Affected users of [7]Boost
- should compile single-threaded code with -DBOOST_DISABLE_THREADS.
- See Bugzilla for [8]more information.
- General Optimizer Improvements
- * Usability of the profile feedback and coverage testing has been
- improved.
- + Performance of profiled programs has been improved by faster
- profile merging code.
- + Better use of the profile feedback for optimization (loop
- unrolling and loop peeling).
- + File locking support allowing fork() calls and parallel runs
- of profiled programs.
- + Coverage file format has been redesigned.
- + gcov coverage tool has been improved.
- + make profiledbootstrap available to build a faster compiler.
- Experiments made on i386 hardware showed an 11% speedup on -O0
- and a 7.5% speedup on -O2 compilation of a [9]large C++
- testcase.
- + New value profiling pass enabled via -fprofile-values
- + New value profile transformations pass enabled via -fvpt aims
- to optimize some code sequences by exploiting knowledge about
- value ranges or other properties of the operands. At the
- moment a conversion of expensive divisions into cheaper
- operations has been implemented.
- + New -fprofile-generate and -fprofile-use command-line options
- to simplify the use of profile feedback.
- * A new unit-at-a-time compilation scheme for C, Objective-C, C++ and
- Java which is enabled via -funit-at-a-time (and implied by -O2). In
- this scheme a whole file is parsed first and optimized later. The
- following basic inter-procedural optimizations are implemented:
- + Removal of unreachable functions and variables
- + Discovery of local functions (functions with static linkage
- whose address is never taken)
- + On i386, these local functions use register parameter passing
- conventions.
- + Reordering of functions in topological order of the call graph
- to enable better propagation of optimizing hints (such as the
- stack alignments needed by functions) in the back end.
- + Call graph based out-of-order inlining heuristics which allows
- to limit overall compilation unit growth (--param
- inline-unit-growth).
- Overall, the unit-at-a-time scheme produces a 1.3% improvement for
- the SPECint2000 benchmark on the i386 architecture (AMD Athlon
- CPU).
- * More realistic code size estimates used by inlining for C,
- Objective-C, C++ and Java. The growth of large functions can now be
- limited via --param large-function-insns and --param
- large-function-growth.
- * A new cfg-level loop optimizer pass replaces the old loop unrolling
- pass and adds two other loop transformations -- loop peeling and
- loop unswitching -- and also uses the profile feedback to limit
- code growth. (The three optimizations are enabled by
- -funroll-loops, -fpeel-loops and -funswitch-loops flags,
- respectively).
- The old loop unroller still can be enabled by -fold-unroll-loops
- and may produce better code in some cases, especially when the
- webizer optimization pass is not run.
- * A new web construction pass enabled via -fweb (and implied by -O3)
- improves the quality of register allocation, CSE, first scheduling
- pass and some other optimization passes by avoiding re-use of
- pseudo registers with non-overlapping live ranges. The pass almost
- always improves code quality but does make debugging difficult and
- thus is not enabled by default by -O2
- The pass is especially effective as cleanup after code duplication
- passes, such as the loop unroller or the tracer.
- * Experimental implementations of superblock or trace scheduling in
- the second scheduling pass can be enabled via
- -fsched2-use-superblocks and -fsched2-use-traces, respectively.
- New Languages and Language specific improvements
- Ada
- * The Ada front end has been updated to include numerous bug fixes
- and enhancements. These include:
- + Improved project file support
- + Additional set of warnings about potential wrong code
- + Improved error messages
- + Improved code generation
- + Improved cross reference information
- + Improved inlining
- + Better run-time check elimination
- + Better error recovery
- + More efficient implementation of unbounded strings
- + Added features in GNAT.Sockets, GNAT.OS_Lib, GNAT.Debug_Pools,
- ...
- + New GNAT.xxxx packages (e.g. GNAT.Strings,
- GNAT.Exception_Action)
- + New pragmas
- + New -gnatS switch replacing gnatpsta
- + Implementation of new Ada features (in particular limited
- with, limited aggregates)
- C/Objective-C/C++
- * Precompiled headers are now supported. Precompiled headers can
- dramatically speed up compilation of some projects. There are some
- known defects in the current precompiled header implementation that
- will result in compiler crashes in relatively rare situations.
- Therefore, precompiled headers should be considered a "technology
- preview" in this release. Read the manual for details about how to
- use precompiled headers.
- * File handling in the preprocessor has been rewritten. GCC no longer
- gets confused by symlinks and hardlinks, and now has a correct
- implementation of #import and #pragma once. These two directives
- have therefore been un-deprecated.
- * The undocumented extension that allowed C programs to have a label
- at the end of a compound statement, which has been deprecated since
- GCC 3.0, has been removed.
- * The cast-as-lvalue extension has been removed for C++ and
- deprecated for C and Objective-C. In particular, code like this:
- int i;
- (char) i = 5;
- or this:
- char *p;
- ((int *) p)++;
- is no longer accepted for C++ and will not be accepted for C and
- Objective-C in a future version.
- * The conditional-expression-as-lvalue extension has been deprecated
- for C and Objective-C. In particular, code like this:
- int a, b, c;
- (a ? b : c) = 2;
- will not be accepted for C and Objective-C in a future version.
- * The compound-expression-as-lvalue extension has been deprecated for
- C and Objective-C. In particular, code like this:
- int a, b;
- (a, b) = 2;
- will not be accepted for C and Objective-C in a future version. A
- possible non-intrusive workaround is the following:
- (*(a, &b)) = 2;
- * Several [10]built-in functions such as __builtin_popcount for
- counting bits, finding the highest and lowest bit in a word, and
- parity have been added.
- * The -fwritable-strings option has been deprecated and will be
- removed.
- * Many C math library functions are now recognized as built-ins and
- optimized.
- * The C, C++, and Objective-C compilers can now handle source files
- written in any character encoding supported by the host C library.
- The default input character set is taken from the current locale,
- and may be overridden with the -finput-charset command line option.
- In the future we will add support for inline encoding markers.
- C++
- * G++ is now much closer to full conformance to the ISO/ANSI C++
- standard. This means, among other things, that a lot of invalid
- constructs which used to be accepted in previous versions will now
- be rejected. It is very likely that existing C++ code will need to
- be fixed. This document lists some of the most common issues.
- * A hand-written recursive-descent C++ parser has replaced the
- YACC-derived C++ parser from previous GCC releases. The new parser
- contains much improved infrastructure needed for better parsing of
- C++ source codes, handling of extensions, and clean separation
- (where possible) between proper semantics analysis and parsing. The
- new parser fixes many bugs that were found in the old parser.
- * You must now use the typename and template keywords to disambiguate
- dependent names, as required by the C++ standard.
- struct K {
- typedef int mytype_t;
- };
- template <class T1> struct A {
- template <class T2> struct B {
- void callme(void);
- };
- template <int N> void bar(void)
- {
- // Use 'typename' to tell the parser that T1::mytype_t names
- // a type. This is needed because the name is dependent (in
- // this case, on template parameter T1).
- typename T1::mytype_t x;
- x = 0;
- }
- };
- template <class T> void template_func(void)
- {
- // Use 'template' to prefix member templates within
- // dependent types (a has type A<T>, which depends on
- // the template parameter T).
- A<T> a;
- a.template bar<0>();
- // Use 'template' to tell the parser that B is a nested
- // template class (dependent on template parameter T), and
- // 'typename' because the whole A<T>::B<int> is
- // the name of a type (again, dependent).
- typename A<T>::template B<int> b;
- b.callme();
- }
- void non_template_func(void)
- {
- // Outside of any template class or function, no names can be
- // dependent, so the use of the keyword 'typename' and 'template'
- // is not needed (and actually forbidden).
- A<K> a;
- a.bar<0>();
- A<K>::B<float> b;
- b.callme();
- }
- * In a template definition, unqualified names will no longer find
- members of a dependent base (as specified by [temp.dep]/3 in the
- C++ standard). For example,
- template <typename T> struct B {
- int m;
- int n;
- int f ();
- int g ();
- };
- int n;
- int g ();
- template <typename T> struct C : B<T> {
- void h ()
- {
- m = 0; // error
- f (); // error
- n = 0; // ::n is modified
- g (); // ::g is called
- }
- };
- You must make the names dependent, e.g. by prefixing them with
- this->. Here is the corrected definition of C<T>::h,
- template <typename T> void C<T>::h ()
- {
- this->m = 0;
- this->f ();
- this->n = 0
- this->g ();
- }
- As an alternative solution (unfortunately not backwards compatible
- with GCC 3.3), you may use using declarations instead of this->:
- template <typename T> struct C : B<T> {
- using B<T>::m;
- using B<T>::f;
- using B<T>::n;
- using B<T>::g;
- void h ()
- {
- m = 0;
- f ();
- n = 0;
- g ();
- }
- };
- * In templates, all non-dependent names are now looked up and bound
- at definition time (while parsing the code), instead of later when
- the template is instantiated. For instance:
- void foo(int);
- template <int> struct A {
- static void bar(void){
- foo('a');
- }
- };
- void foo(char);
- int main()
- {
- A<0>::bar(); // Calls foo(int), used to call foo(char).
- }
- * In an explicit instantiation of a class template, you must use
- class or struct before the template-id:
- template <int N>
- class A {};
- template A<0>; // error, not accepted anymore
- template class A<0>; // OK
- * The "named return value" and "implicit typename" extensions have
- been removed.
- * Default arguments in function types have been deprecated and will
- be removed.
- * ARM-style name-injection of friend declarations has been deprecated
- and will be removed. For example: struct S { friend void f(); };
- void g() { f(); } will not be accepted by future versions of G++;
- instead a declaration of "f" will need to be present outside of the
- scope of "S".
- * Covariant returns are implemented for all but varadic functions
- that require an adjustment.
- * When -pedantic is used, G++ now issues errors about spurious
- semicolons. For example,
- namespace N {}; // Invalid semicolon.
- void f() {}; // Invalid semicolon.
- * G++ no longer accepts attributes for a declarator after the
- initializer associated with that declarator. For example,
- X x(1) __attribute__((...));
- is no longer accepted. Instead, use:
- X x __attribute__((...)) (1);
- * Inside the scope of a template class, the name of the class itself
- can be treated as either a class or a template. So GCC used to
- accept the class name as argument of type template, and template
- template parameter. However this is not C++ standard compliant. Now
- the name is not treated as a valid template template argument
- unless you qualify the name by its scope. For example, the code
- below no longer compiles.
- template <template <class> class TT> class X {};
- template <class T> class Y {
- X<Y> x; // Invalid, Y is always a type template parameter.
- };
- The valid code for the above example is
- X< ::Y> x; // Valid.
- (Notice the space between < and : to prevent GCC to interpret this
- as a digraph for [.)
- * Friend declarations that refer to template specializations are
- rejected if the template has not already been declared. For
- example,
- template <typename T>
- class C {
- friend void f<> (C&);
- };
- is rejected. You must first declare f as a template,
- template <typename T>
- void f(T);
- * In case of friend declarations, every name used in the friend
- declaration must be accessible at the point of that declaration.
- Previous versions of G++ used to be less strict about this and
- allowed friend declarations for private class members, for example.
- See the ISO C++ Standard Committee's [11]defect report #209 for
- details.
- * Declaration of member functions of class templates as friends are
- supported. For example,
- template <typename T> struct A {
- void f();
- };
- class C {
- template <typename T> friend void A<T>::f();
- };
- * You must use template <> to introduce template specializations, as
- required by the standard. For example,
- template <typename T>
- struct S;
- struct S<int> { };
- is rejected. You must write,
- template <> struct S<int> {};
- * G++ used to accept code like this,
- struct S {
- int h();
- void f(int i = g());
- int g(int i = h());
- };
- This behavior is not mandated by the standard. Now G++ issues an
- error about this code. To avoid the error, you must move the
- declaration of g before the declaration of f. The default arguments
- for g must be visible at the point where it is called.
- * The C++ ABI Section 3.3.3 specifications for the array construction
- routines __cxa_vec_new2 and __cxa_vec_new3 were changed to return
- NULL when the allocator argument returns NULL. These changes are
- incorporated into the libstdc++ runtime library.
- * Using a name introduced by a typedef in a friend declaration or in
- an explicit instantiation is now rejected, as specified by the ISO
- C++ standard.
- class A;
- typedef A B;
- class C {
- friend class B; // error, no typedef name here
- friend B; // error, friend always needs class/struct/enum
- friend class A; // OK
- };
- template <int> class Q {};
- typedef Q<0> R;
- template class R; // error, no typedef name here
- template class Q<0>; // OK
- * When allocating an array with a new expression, GCC used to allow
- parentheses around the type name. This is actually ill-formed and
- it is now rejected:
- int* a = new (int)[10]; // error, not accepted anymore
- int* a = new int[10]; // OK
- * When binding an rvalue of class type to a reference, the copy
- constructor of the class must be accessible. For instance, consider
- the following code:
- class A
- {
- public:
- A();
- private:
- A(const A&); // private copy ctor
- };
- A makeA(void);
- void foo(const A&);
- void bar(void)
- {
- foo(A()); // error, copy ctor is not accessible
- foo(makeA()); // error, copy ctor is not accessible
- A a1;
- foo(a1); // OK, a1 is a lvalue
- }
- This might be surprising at first sight, especially since most
- popular compilers do not correctly implement this rule ([12]further
- details).
- * When forming a pointer to member or a pointer to member function,
- access checks for class visibility (public, protected, private) are
- now performed using the qualifying scope of the name itself. This
- is better explained with an example:
- class A
- {
- public:
- void pub_func();
- protected:
- void prot_func();
- private:
- void priv_func();
- };
- class B : public A
- {
- public:
- void foo()
- {
- &A::pub_func; // OK, pub_func is accessible through A
- &A::prot_func; // error, cannot access prot_func through A
- &A::priv_func; // error, cannot access priv_func through A
- &B::pub_func; // OK, pub_func is accessible through B
- &B::prot_func; // OK, can access prot_func through B (within B)
- &B::priv_func; // error, cannot access priv_func through B
- }
- };
- Runtime Library (libstdc++)
- * Optimization work:
- + Streamlined streambuf, filebuf, separate synched with C
- Standard I/O streambuf.
- + All formatted I/O now uses cached locale information.
- + STL optimizations (memory/speed for list, red-black trees as
- used by sets and maps).
- + More use of GCC builtins.
- + String optimizations (avoid contention on
- increment/decrement-and-test of the reference count in the
- empty-string object, constructor from input_iterators
- speedup).
- * Static linkage size reductions.
- * Large File Support (files larger than 2 GB on 32-bit systems).
- * Wide character and variable encoding filebuf work (UTF-8, Unicode).
- * Generic character traits.
- * Also support wchar_t specializations on Mac OS 10.3.x, FreeBSD 5.x,
- Solaris 2.7 and above, AIX 5.x, Irix 6.5.
- * The allocator class is now standard-conformant, and two additional
- extension allocators have been added, mt_alloc and
- bitmap_allocator.
- * PCH support: -include bits/stdc++.h (2x compile speedup).
- * Rewrote __cxa_demangle with support for C++ style allocators.
- * New debug modes for STL containers and iterators.
- * Testsuite rewrite: five times as many tests, plus increasingly
- sophisticated tests, including I/O, MT, multi-locale, wide and
- narrow characters.
- * Use current versions of GNU "autotools" for build/configuration.
- Objective-C
- * The Objective-C front end has been updated to include the numerous
- bug fixes and enhancements previously available only in Apple's
- version of GCC. These include:
- + Structured exception (@try... @catch... @finally, @throw) and
- synchronization (@synchronized) support. These are accessible
- via the -fobjc-exceptions switch; as of this writing, they may
- only be used in conjunction with -fnext-runtime on Mac OS X
- 10.3 and later. See [13]Options Controlling Objective-C
- Dialect for more information.
- + An overhaul of @encode logic. The C99 _Bool and C++ bool type
- may now be encoded as 'B'. In addition, the back-end/codegen
- dependencies have been removed.
- + An overhaul of message dispatch construction, ensuring that
- the various receiver types (and casts thereof) are handled
- properly, and that correct diagnostics are issued.
- + Support for "Zero-Link" (-fzero-link) and "Fix-and-Continue"
- (-freplace-objc-classes) debugging modes, currently available
- on Mac OS X 10.3 and later. See [14]Options Controlling
- Objective-C Dialect for more information.
- + Access to optimized runtime entry points (-fno-nil-receivers )
- on the assumption that message receivers are never nil. This
- is currently available on Mac OS X 10.3 and later. See
- [15]Options Controlling Objective-C Dialect for more
- information.
- Java
- * Compiling a .jar file will now cause non-.class entries to be
- automatically compiled as resources.
- * libgcj has been ported to Darwin.
- * Jeff Sturm has adapted Jan Hubicka's call graph optimization code
- to gcj.
- * libgcj has a new gcjlib URL type; this lets URLClassLoader load
- code from shared libraries.
- * libgcj has been much more completely merged with [16]GNU Classpath.
- * Class loading is now much more correct; in particular the caller's
- class loader is now used when that is required.
- * [17]Eclipse 2.x will run out of the box using gij.
- * Parts of java.nio have been implemented. Direct and indirect
- buffers work, as do fundamental file and socket operations.
- * java.awt has been improved, though it is still not ready for
- general use.
- * The HTTP protocol handler now uses HTTP/1.1 and can handle the POST
- method.
- * The MinGW port has matured. Enhancements include socket timeout
- support, thread interruption, improved Runtime.exec() handling and
- support for accented characters in filenames.
- Fortran
- * Fortran improvements are listed in the [18]Fortran documentation.
- New Targets and Target Specific Improvements
- Alpha
- * Several [19]built-in functions have been added such as
- __builtin_alpha_zap to allow utilizing the more obscure
- instructions of the CPU.
- * Parameter passing of complex arguments has changed to match the
- [20]ABI. This change is incompatible with previous GCC versions,
- but does fix compatibility with the Tru64 compiler and several
- corner cases where GCC was incompatible with itself.
- ARM
- * Nicolas Pitre has contributed his hand-coded floating-point support
- code for ARM. It is both significantly smaller and faster than the
- existing C-based implementation, even when building applications
- for Thumb. The arm-elf configuration has been converted to use the
- new code.
- * Support for the Intel's iWMMXt architecture, a second generation
- XScale processor, has been added. Enabled at run time with the
- -mcpu=iwmmxt command line switch.
- * A new ARM target has been added: arm-wince-pe. This is similar to
- the arm-pe target, but it defaults to using the APCS32 ABI.
- * The existing ARM pipeline description has been converted to the use
- the [21]DFA processor pipeline model. There is not much change in
- code performance, but the description is now [22]easier to
- understand.
- * Support for the Cirrus EP9312 Maverick floating point co-processor
- added. Enabled at run time with the -mcpu=ep9312 command line
- switch. Note however that the multilibs to support this chip are
- currently disabled in gcc/config/arm/t-arm-elf, so if you want to
- enable their production you will have to uncomment the entries in
- that file.
- H8/300
- * Support for long long has been added.
- * Support for saveall attribute has been added.
- * Pavel Pisa contributed hand-written 32-bit-by-32-bit division code
- for H8/300H and H8S, which is much faster than the previous
- implementation.
- * A lot of small performance improvements.
- IA-32/AMD64 (x86-64)
- * Tuning for K8 (AMD Opteron/Athlon64) core is available via
- -march=k8 and -mcpu=k8.
- * Scalar SSE code generation carefully avoids reformatting penalties,
- hidden dependencies and minimizes the number of uops generated on
- both Intel and AMD CPUs.
- * Vector MMX and SSE operands are now passed in registers to improve
- performance and match the argument passing convention used by the
- Intel C++ Compiler. As a result it is not possible to call
- functions accepting vector arguments compiled by older GCC version.
- * Conditional jump elimination is now more aggressive on modern CPUs.
- * The Athlon ports has been converted to use the DFA processor
- pipeline description.
- * Optimization of indirect tail calls is now possible in a similar
- fashion as direct sibcall optimization.
- * Further small performance improvements.
- * -m128bit-long-double is now less buggy.
- * __float128 support in 64-bit compilation.
- * Support for data structures exceeding 2GB in 64-bit mode.
- * -mcpu has been renamed to -mtune.
- IA-64
- * Tuning code for the Itanium 2 processor has been added. The
- generation of code tuned for Itanium 2 (option -mtune=itanium2) is
- enabled by default now. To generate code tuned for Itanium 1 the
- option -mtune=itanium1 should be used.
- * [23]DFA processor pipeline descriptions for the IA-64 processors
- have been added. This resulted in about 3% improvement on the
- SPECInt2000 benchmark for Itanium 2.
- * Instruction bundling for the IA-64 processors has been rewritten
- using the DFA pipeline hazard recognizer. It resulted in about 60%
- compiler speedup on the SPECInt2000 C programs.
- M32R
- * Support for the M32R/2 processor has been added by Renesas.
- * Support for an M32R GNU/Linux target and PIC code generation has
- been added by Renesas.
- M68000
- * Bernardo Innocenti (Develer S.r.l.) has contributed the
- m68k-uclinux target, based on former work done by Paul Dale
- (SnapGear Inc.). Code generation for the ColdFire processors family
- has been enhanced and extended to support the MCF 53xx and MCF 54xx
- cores, integrating former work done by Peter Barada (Motorola).
- MIPS
- Processor-specific changes
- * Support for the RM7000 and RM9000 processors has been added. It can
- be selected using the -march compiler option and should work with
- any MIPS I (mips-*) or MIPS III (mips64-*) configuration.
- * Support for revision 2 of the MIPS32 ISA has been added. It can be
- selected with the command-line option -march=mips32r2.
- * There is a new option, -mfix-sb1, to work around certain SB-1
- errata.
- Configuration
- * It is possible to customize GCC using the following configure-time
- options:
- + --with-arch, which specifies the default value of the -march
- option.
- + --with-tune, which specifies the default value of the -mtune
- option.
- + --with-abi, which specifies the default ABI.
- + --with-float=soft, which tells GCC to use software floating
- point by default.
- + --with-float=hard, which tells GCC to use hardware floating
- point by default.
- * A 64-bit GNU/Linux port has been added. The associated
- configurations are mips64-linux-gnu and mips64el-linux-gnu.
- * The 32-bit GNU/Linux port now supports Java.
- * The IRIX 6 configuration now supports the o32 ABI and will build
- o32 multilibs by default. This support is compatible with both
- binutils and the SGI tools, but note that several features,
- including debugging information and DWARF2 exception handling, are
- only available when using the GNU assembler. Use of the GNU
- assembler and linker (version 2.15 or above) is strongly
- recommended.
- * The IRIX 6 configuration now supports 128-bit long doubles.
- * There are two new RTEMS-specific configurations, mips-rtems and
- mipsel-rtems.
- * There are two new *-elf configurations, mipsisa32r2-elf and
- mipsisa32r2el-elf.
- General
- * Several [24]ABI bugs have been fixed. Unfortunately, these changes
- will break binary compatibility with earlier releases.
- * GCC can now use explicit relocation operators when generating
- -mabicalls code. This behavior is controlled by -mexplicit-relocs
- and can have several performance benefits. For example:
- + It allows for more optimization of GOT accesses, including
- better scheduling and redundancy elimination.
- + It allows sibling calls to be implemented as jumps.
- + n32 and n64 leaf functions can use a call-clobbered global
- pointer instead of $28.
- + The code to set up $gp can be removed from functions that
- don't need it.
- * A new option, -mxgot, allows the GOT to be bigger than 64k. This
- option is equivalent to the assembler's -xgot option and should be
- used instead of -Wa,-xgot.
- * Frame pointer elimination is now supported when generating 64-bit
- MIPS16 code.
- * Inline block moves have been optimized to take more account of
- alignment information.
- * Many internal changes have been made to the MIPS port, mostly aimed
- at reducing the reliance on assembler macros.
- PowerPC
- * GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64
- [25]ABI incompatibilities regarding the way parameters are passed
- during functions calls. These changes may result in incompatibility
- between code compiled with GCC 3.3 and GCC 3.4.
- PowerPC Darwin
- * Support for shared/dylib gcc libraries has been added. It is
- enabled by default on powerpc-apple-darwin7.0.0 and up.
- * Libgcj is enabled by default. On systems older than
- powerpc-apple-darwin7.0.0 you need to install dlcompat.
- * 128-bit IBM extended precision format support added for long
- double.
- PowerPC64 GNU/Linux
- * By default, PowerPC64 GNU/Linux now uses natural alignment of
- structure elements. The old four byte alignment for double, with
- special rules for a struct starting with a double, can be chosen
- with -malign-power. This change may result in incompatibility
- between code compiled with GCC 3.3 and GCC 3.4.
- * -mabi=altivec is now the default rather than -mabi=no-altivec.
- * 128-bit IBM extended precision format support added for long
- double.
- S/390 and zSeries
- * New command-line options allow to specify the intended execution
- environment for generated code:
- + -mesa/-mzarch allows to specify whether to generate code
- running in ESA/390 mode or in z/Architecture mode (this is
- applicable to 31-bit code only).
- + -march allows to specify a minimum processor architecture
- level (g5, g6, z900, or z990).
- + -mtune allows to specify which processor to tune for.
- * It is possible to customize GCC using the following configure-time
- options:
- + --with-mode, which specifies whether to default to assuming
- ESA/390 or z/Architecture mode.
- + --with-arch, which specifies the default value of the -march
- option.
- + --with-tune, which specifies the default value of the -mtune
- option.
- * Support for the z990 processor has been added, and can be selected
- using -march=z990 or -mtune=z990. This includes instruction
- scheduling tuned for the superscalar instruction pipeline of the
- z990 processor as well as support for all new instructions provided
- by the long-displacement facility.
- * Support to generate 31-bit code optimized for zSeries processors
- (running in ESA/390 or in z/Architecture mode) has been added. This
- can be selected using -march=z900 and -mzarch respectively.
- * Instruction scheduling for the z900 and z990 processors now uses
- the DFA pipeline hazard recognizer.
- * GCC no longer generates code to maintain a stack backchain,
- previously used to generate stack backtraces for debugging
- purposes. As replacement that does not incur runtime overhead,
- DWARF-2 call frame information is provided by GCC; this is
- supported by GDB 6.1. The old behavior can be restored using the
- -mbackchain option.
- * The stack frame size of functions may now exceed 2 GB in 64-bit
- code.
- * A port for the 64-bit IBM TPF operating system has been added; the
- configuration is s390x-ibm-tpf. This configuration is supported as
- cross-compilation target only.
- * Various changes to improve the generated code have been
- implemented, including:
- + GCC now uses the MULTIPLY AND ADD and MULTIPLY AND SUBTRACT
- instructions to significantly speed up many floating-point
- applications.
- + GCC now uses the ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL
- WITH BORROW instructions to speed up long long arithmetic.
- + GCC now uses the SEARCH STRING instruction to implement
- strlen().
- + In many cases, function call overhead for 31-bit code has been
- reduced by placing the literal pool after the function code
- instead of after the function prolog.
- + Register 14 is no longer reserved in 64-bit code.
- + Handling of global register variables has been improved.
- SPARC
- * The option -mflat is deprecated.
- * Support for large (> 2GB) frames has been added to the 64-bit port.
- * Several [26]ABI bugs have been fixed. Unfortunately, these changes
- will break binary compatibility with earlier releases.
- * The default debugging format has been switched from STABS to
- DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already
- the default debugging format for 64-bit code on Solaris.
- SuperH
- * Support for the SH2E processor has been added. Enabled at run time
- with the -m2e command line switch, or at configure time by
- specifying sh2e as the machine part of the target triple.
- V850
- * Support for the Mitsubishi V850E1 processor has been added. This is
- a variant of the V850E processor with some additional debugging
- instructions.
- Xtensa
- * Several ABI bugs have been fixed. Unfortunately, these changes
- break binary compatibility with earlier releases.
- + For big-endian processors, the padding of aggregate return
- values larger than a word has changed. If the size of an
- aggregate return value is not a multiple of 32 bits, previous
- versions of GCC inserted padding in the most-significant bytes
- of the first return value register. Aggregates larger than a
- word are now padded in the least-significant bytes of the last
- return value register used. Aggregates smaller than a word are
- still padded in the most-significant bytes. The return value
- padding has not changed for little-endian processors.
- + Function arguments with 16-byte alignment are now properly
- aligned.
- + The implementation of the va_list type has changed. A va_list
- value created by va_start from a previous release cannot be
- used with va_arg from this release, or vice versa.
- * More processor configuration options for Xtensa processors are
- supported:
- + the ABS instruction is now optional;
- + the ADDX* and SUBX* instructions are now optional;
- + an experimental CONST16 instruction can be used to synthesize
- constants instead of loading them from constant pools.
- These and other Xtensa processor configuration options can no
- longer be enabled or disabled by command-line options; the
- processor configuration must be specified by the xtensa-config.h
- header file when building GCC. Additionally, the
- -mno-serialize-volatile option is no longer supported.
- Obsolete Systems
- Support for a number of older systems has been declared obsolete in GCC
- 3.4. Unless there is activity to revive them, the next release of GCC
- will have their sources permanently removed.
- All configurations of the following processor architectures have been
- declared obsolete:
- * Mitsubishi D30V, d30v-*
- * AT&T DSP1600 and DSP1610, dsp16xx-*
- * Intel 80960, i960
- Also, some individual systems have been obsoleted:
- * ARM Family
- + Support for generating code for operation in APCS/26 mode
- (-mapcs-26).
- * IBM ESA/390
- + "Bigfoot" port, i370-*. (The other port, s390-*, is actively
- maintained and supported.)
- * Intel 386 family
- + MOSS, i?86-moss-msdos and i?86-*-moss*
- + NCR 3000 running System V r.4, i?86-ncr-sysv4*
- + FreeBSD with a.out object format, i?86-*-freebsd*aout* and
- i?86-*-freebsd2*
- + GNU/Linux with a.out object format, i?86-linux*aout*
- + GNU/Linux with libc5, a.k.a. glibc1, i?86-linux*libc1*
- + Interix versions before Interix 3, i?86-*-interix
- + Mach microkernel, i?86-mach*
- + SCO UnixWare with UDK, i?86-*-udk*
- + Generic System V releases 1, 2, and 3, i?86-*-sysv[123]*
- + VSTa microkernel, i386-*-vsta
- * Motorola M68000 family
- + HPUX, m68k-hp-hpux* and m68000-hp-hpux*
- + NetBSD with a.out object format (before NetBSD 1.4),
- m68k-*-*-netbsd* except m68k-*-*-netbsdelf*
- + Generic System V r.4, m68k-*-sysv4*
- * VAX
- + Generic VAX, vax-*-* (This is generic VAX only; we have not
- obsoleted any VAX triples for specific operating systems.)
- Documentation improvements
- Other significant improvements
- * The build system has undergone several significant cleanups.
- Subdirectories will only be configured if they are being built, and
- all subdirectory configures are run from the make command. The top
- level has been autoconfiscated.
- * Building GCC no longer writes to its source directory. This should
- help those wishing to share a read-only source directory over NFS
- or build from a CD. The exceptions to this feature are if you
- configure with either --enable-maintainer-mode or
- --enable-generated-files-in-srcdir.
- * The -W warning option has been renamed to -Wextra, which is more
- easily understood. The older spelling will be retained for
- backwards compatibility.
- * Substantial improvements in compile time have been made,
- particularly for non-optimizing compilations.
- __________________________________________________________________
- GCC 3.4.0
- Bug Fixes
- A vast number of bugs have been fixed in 3.4.0, too many to publish a
- complete list here. [27]Follow this link to query the Bugzilla database
- for the list of over 900 bugs fixed in 3.4.0. This is the list of all
- bugs marked as resolved and fixed in 3.4.0 that are not flagged as 3.4
- regressions.
- __________________________________________________________________
- GCC 3.4.1
- Bug Fixes
- This section lists the problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.4.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- Bootstrap failures
- * [28]10129 Ada bootstrap fails on PPC-Darwin - invalid assembler
- emitted - PIC related
- * [29]14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf
- * [30]14760 A bug in configure.in prevents using both
- --program-suffix and --program-prefix
- * [31]14671 [hppa64] bootstrap fails: ICE in
- save_call_clobbered_regs, in caller_save.c
- * [32]15093 [alpha][Java] make bootstrap fails to configure libffi on
- Alpha
- * [33]15178 Solaris 9/x86 fails linking after stage 3
- Multi-platform internal compiler errors (ICEs)
- * [34]12753 (preprocessor) Memory corruption in preprocessor on bad
- input
- * [35]13985 ICE in gcc.c-torture/compile/930621-1.c
- * [36]14810 (c++) tree check failures with invalid code involving
- templates
- * [37]14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in
- cp/parser.c
- * [38]15044 (c++) ICE on syntax error, template header
- * [39]15057 (c++) Compiling of conditional value throw constructs
- cause a segmentation violation
- * [40]15064 (c++) typeid of template parameter gives ICE
- * [41]15142 (c++) ICE when passing a string where a char* is expected
- in a throw statement
- * [42]15159 ICE in rtl_verify_flow_info_1
- * [43]15165 (c++) ICE in instantiate_template
- * [44]15193 Unary minus using pointer to V4SF vector causes
- -fforce-mem to exhaust all memory
- * [45]15209 (c++) Runs out of memory with packed structs
- * [46]15227 (c++) Trouble with invalid function definition
- * [47]15285 (c++) instantiate_type ICE when forming pointer to
- template function
- * [48]15299 (c++) ICE in resolve_overloaded_unification
- * [49]15329 (c++) ICE on constructor of member template
- * [50]15550 ICE in extract_insn, in recog.c
- * [51]15554 (c++) ICE in tsubst_copy, in cp/pt.c
- * [52]15640 (c++) ICE on invalid code in arg_assoc, in
- cp/name-lookup.c
- * [53]15666 [unit-at-a-time] Gcc abort on valid code
- * [54]15696 (c++) ICE with bad pointer-to-member code
- * [55]15701 (c++) ICE with friends and template template parameter
- * [56]15761 ICE in do_SUBST, in combine.c
- * [57]15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops
- Ada
- * [58]14538 All RTEMS targets broken for gnat
- C front end
- * [59]12391 missing warning about assigning to an incomplete type
- * [60]14649 atan(1.0) should not be a constant expression
- * [61]15004 [unit-at-a-time] no warning for unused paramater in
- static function
- * [62]15749 --pedantic-errors behaves differently from --pedantic
- with C-compiler on GNU/Linux
- C++ compiler and library
- * [63]10646 non-const reference is incorrectly matched in a "const T"
- partial specialization
- * [64]12077 wcin.rdbuf()->in_avail() return value too high
- * [65]13598 enc_filebuf doesn't work
- * [66]14211 const_cast returns lvalue but should be rvalue
- * [67]14220 num_put::do_put() undesired float/double behavior
- * [68]14245 problem with user-defined allocators in std::basic_string
- * [69]14340 libstdc++ Debug mode: failure to convert iterator to
- const_iterator
- * [70]14600 __gnu_cxx::stdio_sync_filebuf should expose internal
- FILE*
- * [71]14668 no warning anymore for reevaluation of declaration
- * [72]14775 LFS (large file support) tests missing
- * [73]14821 Duplicate namespace alias declaration should not conflict
- * [74]14930 Friend declaration ignored
- * [75]14932 cannot use offsetof to get offsets of array elements in
- g++ 3.4.0
- * [76]14950 [non unit-at-a-time] always_inline does not mix with
- templates and -O0
- * [77]14962 g++ ignores #pragma redefine_extname
- * [78]14975 Segfault on low-level write error during imbue
- * [79]15002 Linewise stream input is unusably slow (std::string slow)
- * [80]15025 compiler accepts redeclaration of template as
- non-template
- * [81]15046 [arm] Math functions misdetected by cross configuration
- * [82]15069 a bit test on a variable of enum type is miscompiled
- * [83]15074 g++ -lsupc++ still links against libstdc++
- * [84]15083 spurious "statement has no effect" warning
- * [85]15096 parse error with templates and pointer to const member
- * [86]15287 combination of operator[] and operator .* fails in
- templates
- * [87]15317 __attribute__ unused in first parameter of constructor
- gives error
- * [88]15337 sizeof on incomplete type diagnostic
- * [89]15361 bitset<>::_Find_next fails
- * [90]15412 _GLIBCXX_ symbols symbols defined and used in different
- namespaces
- * [91]15427 valid code results in incomplete type error
- * [92]15471 Incorrect member pointer offsets in anonymous
- structs/unions
- * [93]15503 nested template problem
- * [94]15507 compiler hangs while laying out union
- * [95]15542 operator & and template definitions
- * [96]15565 SLES9: leading + sign for unsigned int with showpos
- * [97]15625 friend defined inside a template fails to find static
- function
- * [98]15629 Function templates, overloads, and friend name injection
- * [99]15742 'noreturn' attribute ignored in method of template
- functions.
- * [100]15775 Allocator::pointer consistently ignored
- * [101]15821 Duplicate namespace alias within namespace rejected
- * [102]15862 'enum yn' fails (confict with undeclared builtin)
- * [103]15875 rejects pointer to member in template
- * [104]15877 valid code using templates and anonymous enums is
- rejected
- * [105]15947 Puzzling error message for wrong destructor declaration
- in template class
- * [106]16020 cannot copy __gnu_debug::bitset
- * [107]16154 input iterator concept too restrictive
- * [108]16174 deducing top-level consts
- Java
- * [109]14315 Java compiler is not parallel make safe
- Fortran
- * [110]15151 [g77] incorrect logical i/o in 64-bit mode
- Objective-C
- * [111]7993 private variables cannot be shadowed in subclasses
- Optimization bugs
- * [112]15228 useless copies of floating point operands
- * [113]15345 [non-unit-at-a-time] unreferenced nested inline
- functions not optimized away
- * [114]15945 Incorrect floating point optimization
- * [115]15526 ftrapv aborts on 0 * (-1)
- * [116]14690 Miscompiled POOMA tests
- * [117]15112 GCC generates code to write to unchanging memory
- Preprocessor
- * [118]15067 Minor glitch in the source of cpp
- Main driver program bugs
- * [119]1963 collect2 interprets -oldstyle_liblookup as -o
- ldstyle_liblookup
- x86-specific (Intel/AMD)
- * [120]15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND*
- section}
- HPPA-specific
- * [121]14782 GCC produces an unaligned data access at -O2
- * [122]14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2
- * [123]15202 ICE in reload_cse_simplify_operands, in postreload.c
- IA64-specific
- * [124]14610 __float80 constants incorrectly emitted
- * [125]14813 init_array sections are initialized in the wrong order
- * [126]14857 GCC segfault on duplicated asm statement
- * [127]15598 Gcc 3.4 ICE on valid code
- * [128]15653 Gcc 3.4 ICE on valid code
- MIPS-specific
- * [129]15189 wrong filling of delay slot with -march=mips1 -G0
- -mno-split-addresses -mno-explicit-relocs
- * [130]15331 Assembler error building gnatlib on IRIX 6.5 with GNU as
- 2.14.91
- * [131]16144 Bogus reference to __divdf3 when -O1
- * [132]16176 Miscompilation of unaligned data in MIPS backend
- PowerPC-specific
- * [133]11591 ICE in gcc.dg/altivec-5.c
- * [134]12028 powerpc-eabispe produces bad sCOND operation
- * [135]14478 rs6000 geu/ltu patterns generate incorrect code
- * [136]14567 long double and va_arg complex args
- * [137]14715 Altivec stack layout may overlap gpr save with stack
- temps
- * [138]14902 (libstdc++) Stream checking functions fail when -pthread
- option is used.
- * [139]14924 Compiler ICE on valid code
- * [140]14960 -maltivec affects vector return with -mabi=no-altivec
- * [141]15106 vector varargs failure passing from altivec to
- non-altivec code for -m32
- * [142]16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 &
- half-word operation
- * [143]15191 -maltivec -mabi=no-altivec results in mis-aligned lvx
- and stvx
- * [144]15662 Segmentation fault when an exception is thrown - even if
- try and catch are specified
- s390-specific
- * [145]15054 Bad code due to overlapping stack temporaries
- SPARC-specific
- * [146]15783 ICE with union assignment in 64-bit mode
- * [147]15626 GCC 3.4 emits "ld: warning: relocation error:
- R_SPARC_UA32"
- x86-64-specific
- * [148]14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64
- * [149]14723 Backported -march=nocona from mainline
- * [150]15290 __float128 failed to pass to function properly
- Cygwin/Mingw32-specific
- * [151]15250 Option -mms-bitfields support on GCC 3.4 is not
- conformant to MS layout
- * [152]15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe
- worker on windows32 targets
- Bugs specific to embedded processors
- * [153]8309 [m68k] -m5200 produces erroneous SImode set of short
- varaible on stack
- * [154]13250 [SH] Gcc code for rotation clobbers the register, but
- gcc continues to use the register as if it was not clobbered
- * [155]13803 [coldfire] movqi operand constraints too restrictivefor
- TARGET_COLDFIRE
- * [156]14093 [SH] ICE for code when using -mhitachi option in SH
- * [157]14457 [m6811hc] ICE with simple c++ source
- * [158]14542 [m6811hc] ICE on simple source
- * [159]15100 [SH] cc1plus got hang-up on
- libstdc++-v3/testsuite/abi_check.cc
- * [160]15296 [CRIS] Delayed branch scheduling causing invalid code on
- cris-*
- * [161]15396 [SH] ICE with -O2 -fPIC
- * [162]15782 [coldfire] m68k_output_mi_thunk emits wrong code for
- ColdFire
- Testsuite problems (compiler not affected)
- * [163]11610 libstdc++ testcases 27_io/* don't work properly remotely
- * [164]15488 (libstdc++) possibly insufficient file permissions for
- executing test suite
- * [165]15489 (libstdc++) testsuite_files determined incorrectly
- Documentation bugs
- * [166]13928 (libstdc++) no whatis info in some man pages generated
- by doxygen
- * [167]14150 Ada documentation out of date
- * [168]14949 (c++) Need to document method visibility changes
- * [169]15123 libstdc++-doc: Allocators.3 manpage is empty
- __________________________________________________________________
- GCC 3.4.2
- Bug Fixes
- This section lists the problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.4.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- Bootstrap failures and issues
- * [170]16469 [mips-sgi-irix5.3] bootstrap fails in
- libstdc++-v3/testsuite
- * [171]16344 [hppa-linux-gnu] libstdc++'s PCH built by
- profiledbootstrap does not work with the built compiler
- * [172]16842 [Solaris/x86] mkheaders can not find mkheaders.conf
- Multi-platform internal compiler errors (ICEs)
- * [173]12608 (c++) ICE: expected class 't', have 'x' (error_mark) in
- cp_parser_class_specifier, in cp/parser.c
- * [174]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
- * [175]15461 (c++) ICE due to NRV and inlining
- * [176]15890 (c++) ICE in c_expand_expr, in c-common.c
- * [177]16180 ICE: segmentation fault in RTL optimization
- * [178]16224 (c++) ICE in write_unscoped_name (template/namespace)
- * [179]16408 ICE: in delete_insn, in cfgrtl.c
- * [180]16529 (c++) ICE for: namespace-alias shall not be declared as
- the name of any other entity
- * [181]16698 (c++) ICE with exceptions and declaration of __cxa_throw
- * [182]16706 (c++) ICE in finish_member_declaration, in
- cp/semantics.c
- * [183]16810 (c++) Legal C++ program with cast gives ICE in
- build_ptrmemfunc
- * [184]16851 (c++) ICE when throwing a comma expression
- * [185]16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c
- * [186]16904 (c++) ICE in finish_class_member_access_expr, in
- cp/typeck.c
- * [187]16905 (c++) ICE (segfault) with exceptions
- * [188]16964 (c++) ICE in cp_parser_class_specifier due to
- redefinition
- * [189]17068 (c++) ICE: tree check: expected class 'd', have 'x'
- (identifier_node) in dependent_template_p, in cp/pt.c
- Preprocessor bugs
- * [190]16366 Preprocessor option -remap causes memory corruption
- Optimization
- * [191]15345 unreferenced nested inline functions not optimized away
- * [192]16590 Incorrect execution when compiling with -O2
- * [193]16693 Bitwise AND is lost when used within a cast to an enum
- of the same precision
- * [194]17078 Jump into if(0) substatement fails
- Problems in generated debug information
- * [195]13956 incorrect stabs for nested local variables
- C front end bugs
- * [196]16684 GCC should not warn about redundant redeclarations of
- built-ins
- C++ compiler and library
- * [197]12658 Thread safety problems in locale::global() and
- locale::locale()
- * [198]13092 g++ accepts invalid pointer-to-member conversion
- * [199]15320 Excessive memory consumption
- * [200]16246 Incorrect template argument deduction
- * [201]16273 Memory exhausted when using nested classes and virtual
- functions
- * [202]16401 ostringstream in gcc 3.4.x very slow for big data
- * [203]16411 undefined reference to
- __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char>
- >::file()
- * [204]16489 G++ incorrectly rejects use of a null constant integral
- expression as a null constant pointer
- * [205]16618 offsetof fails with constant member
- * [206]16637 syntax error reported for valid input code
- * [207]16717 __attribute__((constructor)) broken in C++
- * [208]16813 compiler error in DEBUG version of range insertion
- std::map::insert
- * [209]16853 pointer-to-member initialization from incompatible one
- accepted
- * [210]16889 ambiguity is not detected
- * [211]16959 Segmentation fault in ios_base::sync_with_stdio
- Java compiler and library
- * [212]7587 direct threaded interpreter not thread-safe
- * [213]16473 ServerSocket accept() leaks file descriptors
- * [214]16478 Hash synchronization deadlock with finalizers
- Alpha-specific
- * [215]10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c
- * [216]16974 could not split insn (ice in final_scan_insn, in
- final.c)
- x86-specific
- * [217]16298 ICE in output_operand
- * [218]17113 ICE with SSE2 intrinsics
- x86-64 specific
- * [219]14697 libstdc++ couldn't find 32bit libgcc_s
- MIPS-specific
- * [220]15869 [mips64] No NOP after LW (with -mips1 -O0)
- * [221]16325 [mips64] value profiling clobbers gp on mips
- * [222]16357 [mipsisa64-elf] ICE copying 7 bytes between extern
- char[]s
- * [223]16380 [mips64] Use of uninitialised register after dbra
- conversion
- * [224]16407 [mips64] Unaligned access to local variables
- * [225]16643 [mips64] verify_local_live_at_start ICE after
- crossjumping & cfgcleanup
- ARM-specific
- * [226]15927 THUMB -O2: strength-reduced iteration variable ends up
- off by 1
- * [227]15948 THUMB: ICE with non-commutative cbranch
- * [228]17019 THUMB: bad switch statement in md code for
- addsi3_cbranch_scratch
- IA64-specific
- * [229]16130 ICE on valid code: in bundling, in config/ia64/ia64.c
- (-mtune=merced)
- * [230]16142 ICE on valid code: in bundling, in config/ia64/ia64.c
- (-mtune=itanium)
- * [231]16278 Gcc failed to build Linux kernel with -mtune=merced
- * [232]16414 ICE on valid code: typo in comparison of asm_noperands
- result
- * [233]16445 ICE on valid code: don't count ignored insns
- * [234]16490 ICE (segfault) while compiling with -fprofile-use
- * [235]16683 ia64 does not honor SUBTARGET_EXTRA_SPECS
- PowerPC-specific
- * [236]16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x
- * [237]16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions
- issue)
- SPARC-specific
- * [238]16199 ICE while compiling apache 2.0.49
- * [239]16416 -m64 doesn't imply -mcpu=v9 anymore
- * [240]16430 ICE when returning non-C aggregates larger than 16 bytes
- Bugs specific to embedded processors
- * [241]16379 [m32r] can't output large model function call of memcpy
- * [242]17093 [m32r] ICE with -msdata=use -O0
- * [243]17119 [m32r] ICE at switch case 0x8000
- DJGPP-specific
- * [244]15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp
- Alpha Tru64-specific
- * [245]16210 libstdc++ gratuitously omits "long long" I/O
- Testsuite, documentation issues (compiler is not affected):
- * [246]15488 (libstdc++) possibly insufficient file permissions for
- executing test suite
- * [247]16250 ada/doctools runs makeinfo even in release tarball
- __________________________________________________________________
- GCC 3.4.3
- This is the [248]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.4.3 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- Bootstrap failures
- * [249]17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1
- * [250]17850 [arm-elf] bootstrap failure - libstdc++ uses strtold
- when undeclared
- Internal compiler errors (ICEs) affecting multiple platforms
- * [251]13948 (java) GCJ segmentation fault while compiling GL4Java
- .class files
- * [252]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
- * [253]16301 (c++) ICE when "strong" attribute is attached to a using
- directive
- * [254]16566 ICE with flexible arrays
- * [255]17023 ICE with nested functions in parameter declaration
- * [256]17027 ICE with noreturn function in loop at -O2
- * [257]17524 ICE in grokdeclarator, in cp/decl.c
- * [258]17826 (c++) ICE in cp_tree_equal
- C and optimization bugs
- * [259]15526 -ftrapv aborts on 0 * (-1)
- * [260]16999 #ident stopped working
- * [261]17503 quadratic behaviour in invalid_mode_change_p
- * [262]17581 Long long arithmetic fails inside a switch/case
- statement when compiled with -O2
- * [263]18129 -fwritable-strings doesn't work
- C++ compiler and library bugs
- * [264]10975 incorrect initial ostringstream::tellp()
- * [265]11722 Unbuffered filebuf::sgetn is slow
- * [266]14534 Unrecognizing static function as a template parameter
- when its return value is also templated
- * [267]15172 Copy constructor optimization in aggregate
- initialization
- * [268]15786 Bad error message for frequently occuring error.
- * [269]16162 Rejects valid member-template-definition
- * [270]16612 empty basic_strings can't live in shared memory
- * [271]16715 std::basic_iostream is instantiated when used, even
- though instantiations are already contained in libstdc++
- * [272]16848 code in /ext/demangle.h appears broken
- * [273]17132 GCC fails to eliminate function template specialization
- when argument deduction fails
- * [274]17259 One more _S_leaf incorrectly qualified with _RopeRep::
- in ropeimpl.h
- * [275]17327 use of `enumeral_type' in template type unification
- * [276]17393 "unused variable '._0'" warning with -Wall
- * [277]17501 Confusion with member templates
- * [278]17537 g++ not passing -lstdc++ to linker when all command line
- arguments are libraries
- * [279]17585 usage of unqualified name of static member from within
- class not allowed
- * [280]17821 Poor diagnostic for using "." instead of "->"
- * [281]17829 wrong error: call of overloaded function is ambiguous
- * [282]17851 Misleading diagnostic for invalid function declarations
- with undeclared types
- * [283]17976 Destructor is called twice
- * [284]18020 rejects valid definition of enum value in template
- * [285]18093 bogus conflict in namespace aliasing
- * [286]18140 C++ parser bug when using >> in templates
- Fortran
- * [287]17541 data statements with double precision constants fail
- x86-specific
- * [288]17853 -O2 ICE for MMX testcase
- SPARC-specific
- * [289]17245 ICE compiling gsl-1.5 statistics/lag1.c
- Darwin-specific
- * [290]17167 FATAL:Symbol L_foo$stub already defined.
- AIX-specific
- * [291]17277 could not catch an exception when specified -maix64
- Solaris-specific
- * [292]17505 <cmath> calls acosf(), ceilf(), and other functions
- missing from system libraries
- HP/UX specific:
- * [293]17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl
- ARM-specific
- * [294]17384 ICE with mode attribute on structures
- MIPS-specific
- * [295]17770 No NOP after LWL with -mips1
- Other embedded target specific
- * [296]11476 [arc-elf] gcc ICE on newlib's vfprintf.c
- * [297]14064 [avr-elf] -fdata-sections triggers ICE
- * [298]14678 [m68hc11-elf] gcc ICE
- * [299]15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__
- * [300]15790 [i686-coff] Alignment error building gcc with i686-coff
- target
- * [301]15886 [SH] Miscompilation with -O2 -fPIC
- * [302]16884 [avr-elf] [fweb related] bug while initializing
- variables
- Bugs relating to debugger support
- * [303]13841 missing debug info for _Complex function arguments
- * [304]15860 [big-endian targets] No DW_AT_location debug info is
- emitted for formal arguments to a function that uses "register"
- qualifiers
- Testsuite issues (compiler not affected)
- * [305]17465 Testsuite in libffi overrides LD_LIBRARY_PATH
- * [306]17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH
- * [307]18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit
- testsuite
- Documentation
- * [308]15498 typo in gcc manual: non-existing locale example en_UK,
- should be en_GB
- * [309]15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap:
- document broken shell
- * [310]16406 USE_LD_AS_NEEDED undocumented
- __________________________________________________________________
- GCC 3.4.4
- This is the [311]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.4.4 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- __________________________________________________________________
- GCC 3.4.5
- This is the [312]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.4.5 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- Bootstrap issues
- * [313]24688 sco_math fixincl breaks math.h
- C compiler bugs
- * [314]17188 struct Foo { } redefinition
- * [315]20187 wrong code for ((unsigned char)(unsigned long
- long)((a?a:1)&(a*b)))?0:1)
- * [316]21873 infinite warning loop on bad array initializer
- * [317]21899 enum definition accepts values to be overriden
- * [318]22061 ICE in find_function_data, in function.c
- * [319]22308 Failure to diagnose violation of constraint 6.516p2
- * [320]22458 ICE on missing brace
- * [321]22589 ICE casting to long long
- * [322]24101 Segfault with preprocessed source
- C++ compiler and library bugs
- * [323]10611 operations on vector mode not recognized in C++
- * [324]13377 unexpected behavior of namespace usage directive
- * [325]16002 Strange error message with new parser
- * [326]17413 local classes as template argument
- * [327]17609 spurious error message after using keyword
- * [328]17618 ICE in cp_convert_to_pointer, in cp/cvt.c
- * [329]18124 ICE with invalid template template parameter
- * [330]18155 typedef in template declaration not rejected
- * [331]18177 ICE with const_cast for undeclared variable
- * [332]18368 C++ error message regression
- * [333]16378 ICE when returning a copy of a packed member
- * [334]18466 int ::i; accepted
- * [335]18512 ICE on invalid usage of template base class
- * [336]18454 ICE when returning undefined type
- * [337]18738 typename not allowed with non-dependent qualified name
- * [338]18803 rejects access to operator() in template
- * [339]19004 ICE in uses_template_parms, in cp/pt.c
- * [340]19208 Spurious error about variably modified type
- * [341]18253 bad error message / ICE for invalid template parameter
- * [342]19608 ICE after friend function definition in local class
- * [343]19884 ICE on explicit instantiation of a non-template
- constructor
- * [344]20153 ICE when C++ template function contains anonymous union
- * [345]20563 Infinite loop in diagnostic (and ice after error
- message)
- * [346]20789 ICE with incomplete type in template
- * [347]21336 Internal compiler error when using custom new operators
- * [348]21768 ICE in error message due to violation of coding
- conventions
- * [349]21853 constness of pointer to data member ignored
- * [350]21903 Default argument of template function causes a
- compile-time error
- * [351]21983 multiple diagnostics
- * [352]21987 New testsuite failure
- g++.dg/warn/conversion-function-1.C
- * [353]22153 ICE on invalid template specialization
- * [354]22172 Internal compiler error, seg fault.
- * [355]21286 filebuf::xsgetn vs pipes
- * [356]22233 ICE with wrong number of template parameters
- * [357]22508 ICE after invalid operator new
- * [358]22545 ICE with pointer to class member & user defined
- conversion operator
- * [359]23528 Wrong default allocator in ext/hash_map
- * [360]23550 char_traits requirements/1.cc test bad math
- * [361]23586 Bad diagnostic for invalid namespace-name
- * [362]23624 ICE in invert_truthvalue, in fold-const.c
- * [363]23639 Bad error message: not a member of '<declaration error>'
- * [364]23797 ICE on typename outside template
- * [365]23965 Bogus error message: no matching function for call to
- 'foo(<type error>)'
- * [366]24052 &#`label_decl' not supported by dump_expr#<expression
- error>
- * [367]24580 virtual base class cause exception not to be caught
- Problems in generated debug information
- * [368]24267 Bad DWARF for altivec vectors
- Optimizations issues
- * [369]17810 ICE in verify_local_live_at_start
- * [370]17860 Wrong generated code for loop with varying bound
- * [371]21709 ICE on compile-time complex NaN
- * [372]21964 broken tail call at -O2 or more
- * [373]22167 Strange optimization bug when using -Os
- * [374]22619 Compilation failure for real_const_1.f and
- real_const_2.f90
- * [375]23241 Invalid code generated for comparison of uchar to 255
- * [376]23478 Miscompilation due to reloading of a var that is also
- used in EH pad
- * [377]24470 segmentation fault in cc1plus when compiling with -O
- * [378]24950 ICE in operand_subword_force
- Precompiled headers problems
- * [379]14400 Cannot compile qt-x11-free-3.3.0
- * [380]14940 PCH largefile test fails on various platforms
- Preprocessor bugs
- * [381]20239 ICE on empty preprocessed input
- * [382]15220 "gcc -E -MM -MG" reports missing system headers in
- source directory
- Testsuite issues
- * [383]19275 gcc.dg/20020919-1.c fails with -fpic/-fPIC on
- i686-pc-linux-gnu
- Alpha specific
- * [384]21888 bootstrap failure with linker relaxation enabled
- ARM specific
- * [385]15342 [arm-linux]: ICE in verify_local_live_at_start
- * [386]23985 Memory aliasing information incorrect in inlined memcpy
- ColdFile specific
- * [387]16719 Illegal move of byte into address register causes
- compiler to ICE
- HPPA specific
- * [388]21723 ICE while building libgfortran
- * [389]21841 -mhp-ld/-mgnu-ld documentation
- IA-64 specific
- * [390]23644 IA-64 hardware models and configuration options
- documentation error
- * [391]24718 Shared libgcc not used for linking by default
- M68000 specific
- * [392]18421 ICE in reload_cse_simplify_operands, in postreload.c
- MIPS specific
- * [393]20621 ICE in change_address_1, in emit-rtl.c
- PowerPC and PowerPC64 specific
- * [394]18583 error on valid code: const
- __attribute__((altivec(vector__))) doesn't work in arrays
- * [395]20191 ICE in reload_cse_simplify_operands
- * [396]22083 AIX: TARGET_C99_FUNCTIONS is wrongly defined
- * [397]23070 CALL_V4_CLEAR_FP_ARGS flag not properly set
- * [398]23404 gij trashes args of functions with more than 8 fp args
- * [399]23539 C & C++ compiler generating misaligned references
- regardless of compiler flags
- * [400]24102 floatdisf2_internal2 broken
- * [401]24465 -mminimal-toc miscompilation of __thread vars
- Solaris specific
- * [402]19933 Problem with define of HUGE_VAL in math_c99
- * [403]21889 Native Solaris assembler cannot grok DTP-relative debug
- symbols
- SPARC specific
- * [404]19300 PCH failures on sparc-linux
- * [405]20301 Assembler labels have a leading "-"
- * [406]20673 C PCH testsuite assembly comparison failure
- x86 and x86_64 specific
- * [407]18582 ICE with arrays of type V2DF
- * [408]19340 Compilation SEGFAULTs with -O1 -fschedule-insns2
- -fsched2-use-traces
- * [409]21716 ICE in reg-stack.c's swap_rtx_condition
- * [410]24315 amd64 fails -fpeephole2
- __________________________________________________________________
- GCC 3.4.6
- This is the [411]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.4.6 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- For questions related to the use of GCC, please consult these web
- pages and the [412]GCC manuals. If that fails, the
- [413]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [414]gcc@gcc.gnu.org. All of [415]our lists have public
- archives.
- Copyright (C) [416]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [417]maintained by the GCC team. Last modified
- 2014-06-28[418].
- References
- 1. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
- 2. http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus
- 3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
- 4. http://gcc.gnu.org/gcc-3.4/changes.html#obsolete_systems
- 5. http://gcc.gnu.org/gcc-3.4/mips-abi.html
- 6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
- 7. http://www.boost.org/
- 8. https://gcc.gnu.org/PR11953
- 9. https://gcc.gnu.org/PR8361
- 10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
- 11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
- 12. http://gcc.gnu.org/bugs/#cxx_rvalbind
- 13. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
- 14. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
- 15. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
- 16. http://www.gnu.org/software/classpath/
- 17. http://www.eclipse.org/
- 18. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html
- 19. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html
- 20. http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51A_HTML/ARH9MBTE/DTMNPLTN.HTM#normal-argument-list-structure
- 21. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
- 22. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Comparison-of-the-two-descriptions.html
- 23. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
- 24. http://gcc.gnu.org/gcc-3.4/mips-abi.html
- 25. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
- 26. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
- 27. https://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=%5C%5B3%5C.4.*%5BRr%5Degression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
- 28. https://gcc.gnu.org/PR10129
- 29. https://gcc.gnu.org/PR14576
- 30. https://gcc.gnu.org/PR14760
- 31. https://gcc.gnu.org/PR14671
- 32. https://gcc.gnu.org/PR15093
- 33. https://gcc.gnu.org/PR15178
- 34. https://gcc.gnu.org/PR12753
- 35. https://gcc.gnu.org/PR13985
- 36. https://gcc.gnu.org/PR14810
- 37. https://gcc.gnu.org/PR14883
- 38. https://gcc.gnu.org/PR15044
- 39. https://gcc.gnu.org/PR15057
- 40. https://gcc.gnu.org/PR15064
- 41. https://gcc.gnu.org/PR15142
- 42. https://gcc.gnu.org/PR15159
- 43. https://gcc.gnu.org/PR15165
- 44. https://gcc.gnu.org/PR15193
- 45. https://gcc.gnu.org/PR15209
- 46. https://gcc.gnu.org/PR15227
- 47. https://gcc.gnu.org/PR15285
- 48. https://gcc.gnu.org/PR15299
- 49. https://gcc.gnu.org/PR15329
- 50. https://gcc.gnu.org/PR15550
- 51. https://gcc.gnu.org/PR15554
- 52. https://gcc.gnu.org/PR15640
- 53. https://gcc.gnu.org/PR15666
- 54. https://gcc.gnu.org/PR15696
- 55. https://gcc.gnu.org/PR15701
- 56. https://gcc.gnu.org/PR15761
- 57. https://gcc.gnu.org/PR15829
- 58. https://gcc.gnu.org/PR14538
- 59. https://gcc.gnu.org/PR12391
- 60. https://gcc.gnu.org/PR14649
- 61. https://gcc.gnu.org/PR15004
- 62. https://gcc.gnu.org/PR15749
- 63. https://gcc.gnu.org/PR10646
- 64. https://gcc.gnu.org/PR12077
- 65. https://gcc.gnu.org/PR13598
- 66. https://gcc.gnu.org/PR14211
- 67. https://gcc.gnu.org/PR14220
- 68. https://gcc.gnu.org/PR14245
- 69. https://gcc.gnu.org/PR14340
- 70. https://gcc.gnu.org/PR14600
- 71. https://gcc.gnu.org/PR14668
- 72. https://gcc.gnu.org/PR14775
- 73. https://gcc.gnu.org/PR14821
- 74. https://gcc.gnu.org/PR14930
- 75. https://gcc.gnu.org/PR14932
- 76. https://gcc.gnu.org/PR14950
- 77. https://gcc.gnu.org/PR14962
- 78. https://gcc.gnu.org/PR14975
- 79. https://gcc.gnu.org/PR15002
- 80. https://gcc.gnu.org/PR15025
- 81. https://gcc.gnu.org/PR15046
- 82. https://gcc.gnu.org/PR15069
- 83. https://gcc.gnu.org/PR15074
- 84. https://gcc.gnu.org/PR15083
- 85. https://gcc.gnu.org/PR15096
- 86. https://gcc.gnu.org/PR15287
- 87. https://gcc.gnu.org/PR15317
- 88. https://gcc.gnu.org/PR15337
- 89. https://gcc.gnu.org/PR15361
- 90. https://gcc.gnu.org/PR15412
- 91. https://gcc.gnu.org/PR15427
- 92. https://gcc.gnu.org/PR15471
- 93. https://gcc.gnu.org/PR15503
- 94. https://gcc.gnu.org/PR15507
- 95. https://gcc.gnu.org/PR15542
- 96. https://gcc.gnu.org/PR15565
- 97. https://gcc.gnu.org/PR15625
- 98. https://gcc.gnu.org/PR15629
- 99. https://gcc.gnu.org/PR15742
- 100. https://gcc.gnu.org/PR15775
- 101. https://gcc.gnu.org/PR15821
- 102. https://gcc.gnu.org/PR15862
- 103. https://gcc.gnu.org/PR15875
- 104. https://gcc.gnu.org/PR15877
- 105. https://gcc.gnu.org/PR15947
- 106. https://gcc.gnu.org/PR16020
- 107. https://gcc.gnu.org/PR16154
- 108. https://gcc.gnu.org/PR16174
- 109. https://gcc.gnu.org/PR14315
- 110. https://gcc.gnu.org/PR15151
- 111. https://gcc.gnu.org/PR7993
- 112. https://gcc.gnu.org/PR15228
- 113. https://gcc.gnu.org/PR15345
- 114. https://gcc.gnu.org/PR15945
- 115. https://gcc.gnu.org/PR15526
- 116. https://gcc.gnu.org/PR14690
- 117. https://gcc.gnu.org/PR15112
- 118. https://gcc.gnu.org/PR15067
- 119. https://gcc.gnu.org/PR1963
- 120. https://gcc.gnu.org/PR15717
- 121. https://gcc.gnu.org/PR14782
- 122. https://gcc.gnu.org/PR14828
- 123. https://gcc.gnu.org/PR15202
- 124. https://gcc.gnu.org/PR14610
- 125. https://gcc.gnu.org/PR14813
- 126. https://gcc.gnu.org/PR14857
- 127. https://gcc.gnu.org/PR15598
- 128. https://gcc.gnu.org/PR15653
- 129. https://gcc.gnu.org/PR15189
- 130. https://gcc.gnu.org/PR15331
- 131. https://gcc.gnu.org/PR16144
- 132. https://gcc.gnu.org/PR16176
- 133. https://gcc.gnu.org/PR11591
- 134. https://gcc.gnu.org/PR12028
- 135. https://gcc.gnu.org/PR14478
- 136. https://gcc.gnu.org/PR14567
- 137. https://gcc.gnu.org/PR14715
- 138. https://gcc.gnu.org/PR14902
- 139. https://gcc.gnu.org/PR14924
- 140. https://gcc.gnu.org/PR14960
- 141. https://gcc.gnu.org/PR15106
- 142. https://gcc.gnu.org/PR16026
- 143. https://gcc.gnu.org/PR15191
- 144. https://gcc.gnu.org/PR15662
- 145. https://gcc.gnu.org/PR15054
- 146. https://gcc.gnu.org/PR15783
- 147. https://gcc.gnu.org/PR15626
- 148. https://gcc.gnu.org/PR14326
- 149. https://gcc.gnu.org/PR14723
- 150. https://gcc.gnu.org/PR15290
- 151. https://gcc.gnu.org/PR15250
- 152. https://gcc.gnu.org/PR15551
- 153. https://gcc.gnu.org/PR8309
- 154. https://gcc.gnu.org/PR13250
- 155. https://gcc.gnu.org/PR13803
- 156. https://gcc.gnu.org/PR14093
- 157. https://gcc.gnu.org/PR14457
- 158. https://gcc.gnu.org/PR14542
- 159. https://gcc.gnu.org/PR15100
- 160. https://gcc.gnu.org/PR15296
- 161. https://gcc.gnu.org/PR15396
- 162. https://gcc.gnu.org/PR15782
- 163. https://gcc.gnu.org/PR11610
- 164. https://gcc.gnu.org/PR15488
- 165. https://gcc.gnu.org/PR15489
- 166. https://gcc.gnu.org/PR13928
- 167. https://gcc.gnu.org/PR14150
- 168. https://gcc.gnu.org/PR14949
- 169. https://gcc.gnu.org/PR15123
- 170. https://gcc.gnu.org/PR16469
- 171. https://gcc.gnu.org/PR16344
- 172. https://gcc.gnu.org/PR16842
- 173. https://gcc.gnu.org/PR12608
- 174. https://gcc.gnu.org/PR14492
- 175. https://gcc.gnu.org/PR15461
- 176. https://gcc.gnu.org/PR15890
- 177. https://gcc.gnu.org/PR16180
- 178. https://gcc.gnu.org/PR16224
- 179. https://gcc.gnu.org/PR16408
- 180. https://gcc.gnu.org/PR16529
- 181. https://gcc.gnu.org/PR16698
- 182. https://gcc.gnu.org/PR16706
- 183. https://gcc.gnu.org/PR16810
- 184. https://gcc.gnu.org/PR16851
- 185. https://gcc.gnu.org/PR16870
- 186. https://gcc.gnu.org/PR16904
- 187. https://gcc.gnu.org/PR16905
- 188. https://gcc.gnu.org/PR16964
- 189. https://gcc.gnu.org/PR17068
- 190. https://gcc.gnu.org/PR16366
- 191. https://gcc.gnu.org/PR15345
- 192. https://gcc.gnu.org/PR16590
- 193. https://gcc.gnu.org/PR16693
- 194. https://gcc.gnu.org/PR17078
- 195. https://gcc.gnu.org/PR13956
- 196. https://gcc.gnu.org/PR16684
- 197. https://gcc.gnu.org/PR12658
- 198. https://gcc.gnu.org/PR13092
- 199. https://gcc.gnu.org/PR15320
- 200. https://gcc.gnu.org/PR16246
- 201. https://gcc.gnu.org/PR16273
- 202. https://gcc.gnu.org/PR16401
- 203. https://gcc.gnu.org/PR16411
- 204. https://gcc.gnu.org/PR16489
- 205. https://gcc.gnu.org/PR16618
- 206. https://gcc.gnu.org/PR16637
- 207. https://gcc.gnu.org/PR16717
- 208. https://gcc.gnu.org/PR16813
- 209. https://gcc.gnu.org/PR16853
- 210. https://gcc.gnu.org/PR16889
- 211. https://gcc.gnu.org/PR16959
- 212. https://gcc.gnu.org/PR7587
- 213. https://gcc.gnu.org/PR16473
- 214. https://gcc.gnu.org/PR16478
- 215. https://gcc.gnu.org/PR10695
- 216. https://gcc.gnu.org/PR16974
- 217. https://gcc.gnu.org/PR16298
- 218. https://gcc.gnu.org/PR17113
- 219. https://gcc.gnu.org/PR14697
- 220. https://gcc.gnu.org/PR15869
- 221. https://gcc.gnu.org/PR16325
- 222. https://gcc.gnu.org/PR16357
- 223. https://gcc.gnu.org/PR16380
- 224. https://gcc.gnu.org/PR16407
- 225. https://gcc.gnu.org/PR16643
- 226. https://gcc.gnu.org/PR15927
- 227. https://gcc.gnu.org/PR15948
- 228. https://gcc.gnu.org/PR17019
- 229. https://gcc.gnu.org/PR16130
- 230. https://gcc.gnu.org/PR16142
- 231. https://gcc.gnu.org/PR16278
- 232. https://gcc.gnu.org/PR16414
- 233. https://gcc.gnu.org/PR16445
- 234. https://gcc.gnu.org/PR16490
- 235. https://gcc.gnu.org/PR16683
- 236. https://gcc.gnu.org/PR16195
- 237. https://gcc.gnu.org/PR16239
- 238. https://gcc.gnu.org/PR16199
- 239. https://gcc.gnu.org/PR16416
- 240. https://gcc.gnu.org/PR16430
- 241. https://gcc.gnu.org/PR16379
- 242. https://gcc.gnu.org/PR17093
- 243. https://gcc.gnu.org/PR17119
- 244. https://gcc.gnu.org/PR15928
- 245. https://gcc.gnu.org/PR16210
- 246. https://gcc.gnu.org/PR15488
- 247. https://gcc.gnu.org/PR16250
- 248. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.3
- 249. https://gcc.gnu.org/PR17369
- 250. https://gcc.gnu.org/PR17850
- 251. https://gcc.gnu.org/PR13948
- 252. https://gcc.gnu.org/PR14492
- 253. https://gcc.gnu.org/PR16301
- 254. https://gcc.gnu.org/PR16566
- 255. https://gcc.gnu.org/PR17023
- 256. https://gcc.gnu.org/PR17027
- 257. https://gcc.gnu.org/PR17524
- 258. https://gcc.gnu.org/PR17826
- 259. https://gcc.gnu.org/PR15526
- 260. https://gcc.gnu.org/PR16999
- 261. https://gcc.gnu.org/PR17503
- 262. https://gcc.gnu.org/PR17581
- 263. https://gcc.gnu.org/PR18129
- 264. https://gcc.gnu.org/PR10975
- 265. https://gcc.gnu.org/PR11722
- 266. https://gcc.gnu.org/PR14534
- 267. https://gcc.gnu.org/PR15172
- 268. https://gcc.gnu.org/PR15786
- 269. https://gcc.gnu.org/PR16162
- 270. https://gcc.gnu.org/PR16612
- 271. https://gcc.gnu.org/PR16715
- 272. https://gcc.gnu.org/PR16848
- 273. https://gcc.gnu.org/PR17132
- 274. https://gcc.gnu.org/PR17259
- 275. https://gcc.gnu.org/PR17327
- 276. https://gcc.gnu.org/PR17393
- 277. https://gcc.gnu.org/PR17501
- 278. https://gcc.gnu.org/PR17537
- 279. https://gcc.gnu.org/PR17585
- 280. https://gcc.gnu.org/PR17821
- 281. https://gcc.gnu.org/PR17829
- 282. https://gcc.gnu.org/PR17851
- 283. https://gcc.gnu.org/PR17976
- 284. https://gcc.gnu.org/PR18020
- 285. https://gcc.gnu.org/PR18093
- 286. https://gcc.gnu.org/PR18140
- 287. https://gcc.gnu.org/PR17541
- 288. https://gcc.gnu.org/PR17853
- 289. https://gcc.gnu.org/PR17245
- 290. https://gcc.gnu.org/PR17167
- 291. https://gcc.gnu.org/PR17277
- 292. https://gcc.gnu.org/PR17505
- 293. https://gcc.gnu.org/PR17684
- 294. https://gcc.gnu.org/PR17384
- 295. https://gcc.gnu.org/PR17770
- 296. https://gcc.gnu.org/PR11476
- 297. https://gcc.gnu.org/PR14064
- 298. https://gcc.gnu.org/PR14678
- 299. https://gcc.gnu.org/PR15583
- 300. https://gcc.gnu.org/PR15790
- 301. https://gcc.gnu.org/PR15886
- 302. https://gcc.gnu.org/PR16884
- 303. https://gcc.gnu.org/PR13841
- 304. https://gcc.gnu.org/PR15860
- 305. https://gcc.gnu.org/PR17465
- 306. https://gcc.gnu.org/PR17469
- 307. https://gcc.gnu.org/PR18138
- 308. https://gcc.gnu.org/PR15498
- 309. https://gcc.gnu.org/PR15747
- 310. https://gcc.gnu.org/PR16406
- 311. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.4
- 312. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.5
- 313. https://gcc.gnu.org/PR24688
- 314. https://gcc.gnu.org/PR17188
- 315. https://gcc.gnu.org/PR20187
- 316. https://gcc.gnu.org/PR21873
- 317. https://gcc.gnu.org/PR21899
- 318. https://gcc.gnu.org/PR22061
- 319. https://gcc.gnu.org/PR22208
- 320. https://gcc.gnu.org/PR22458
- 321. https://gcc.gnu.org/PR22589
- 322. https://gcc.gnu.org/PR24101
- 323. https://gcc.gnu.org/PR10611
- 324. https://gcc.gnu.org/PR13377
- 325. https://gcc.gnu.org/PR16002
- 326. https://gcc.gnu.org/PR17413
- 327. https://gcc.gnu.org/PR17609
- 328. https://gcc.gnu.org/PR17618
- 329. https://gcc.gnu.org/PR18124
- 330. https://gcc.gnu.org/PR18155
- 331. https://gcc.gnu.org/PR18177
- 332. https://gcc.gnu.org/PR18368
- 333. https://gcc.gnu.org/PR18378
- 334. https://gcc.gnu.org/PR18466
- 335. https://gcc.gnu.org/PR18512
- 336. https://gcc.gnu.org/PR18545
- 337. https://gcc.gnu.org/PR18738
- 338. https://gcc.gnu.org/PR18803
- 339. https://gcc.gnu.org/PR19004
- 340. https://gcc.gnu.org/PR19208
- 341. https://gcc.gnu.org/PR19253
- 342. https://gcc.gnu.org/PR19608
- 343. https://gcc.gnu.org/PR19884
- 344. https://gcc.gnu.org/PR20153
- 345. https://gcc.gnu.org/PR20563
- 346. https://gcc.gnu.org/PR20789
- 347. https://gcc.gnu.org/PR21336
- 348. https://gcc.gnu.org/PR21768
- 349. https://gcc.gnu.org/PR21853
- 350. https://gcc.gnu.org/PR21903
- 351. https://gcc.gnu.org/PR21983
- 352. https://gcc.gnu.org/PR21987
- 353. https://gcc.gnu.org/PR22153
- 354. https://gcc.gnu.org/PR22172
- 355. https://gcc.gnu.org/PR21286
- 356. https://gcc.gnu.org/PR22233
- 357. https://gcc.gnu.org/PR22508
- 358. https://gcc.gnu.org/PR22545
- 359. https://gcc.gnu.org/PR23528
- 360. https://gcc.gnu.org/PR23550
- 361. https://gcc.gnu.org/PR23586
- 362. https://gcc.gnu.org/PR23624
- 363. https://gcc.gnu.org/PR23639
- 364. https://gcc.gnu.org/PR23797
- 365. https://gcc.gnu.org/PR23965
- 366. https://gcc.gnu.org/PR24052
- 367. https://gcc.gnu.org/PR24580
- 368. https://gcc.gnu.org/PR24267
- 369. https://gcc.gnu.org/PR17810
- 370. https://gcc.gnu.org/PR17860
- 371. https://gcc.gnu.org/PR21709
- 372. https://gcc.gnu.org/PR21964
- 373. https://gcc.gnu.org/PR22167
- 374. https://gcc.gnu.org/PR22619
- 375. https://gcc.gnu.org/PR23241
- 376. https://gcc.gnu.org/PR23478
- 377. https://gcc.gnu.org/PR24470
- 378. https://gcc.gnu.org/PR24950
- 379. https://gcc.gnu.org/PR14400
- 380. https://gcc.gnu.org/PR14940
- 381. https://gcc.gnu.org/PR20239
- 382. https://gcc.gnu.org/PR15220
- 383. https://gcc.gnu.org/PR19275
- 384. https://gcc.gnu.org/PR21888
- 385. https://gcc.gnu.org/PR15342
- 386. https://gcc.gnu.org/PR23985
- 387. https://gcc.gnu.org/PR16719
- 388. https://gcc.gnu.org/PR21723
- 389. https://gcc.gnu.org/PR21841
- 390. https://gcc.gnu.org/PR23644
- 391. https://gcc.gnu.org/PR24718
- 392. https://gcc.gnu.org/PR18421
- 393. https://gcc.gnu.org/PR20621
- 394. https://gcc.gnu.org/PR18583
- 395. https://gcc.gnu.org/PR20191
- 396. https://gcc.gnu.org/PR22083
- 397. https://gcc.gnu.org/PR23070
- 398. https://gcc.gnu.org/PR23404
- 399. https://gcc.gnu.org/PR23539
- 400. https://gcc.gnu.org/PR24102
- 401. https://gcc.gnu.org/PR24465
- 402. https://gcc.gnu.org/PR19933
- 403. https://gcc.gnu.org/PR21889
- 404. https://gcc.gnu.org/PR19300
- 405. https://gcc.gnu.org/PR20301
- 406. https://gcc.gnu.org/PR20673
- 407. https://gcc.gnu.org/PR18582
- 408. https://gcc.gnu.org/PR19340
- 409. https://gcc.gnu.org/PR21716
- 410. https://gcc.gnu.org/PR24315
- 411. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6
- 412. https://gcc.gnu.org/onlinedocs/
- 413. mailto:gcc-help@gcc.gnu.org
- 414. mailto:gcc@gcc.gnu.org
- 415. https://gcc.gnu.org/lists.html
- 416. http://www.fsf.org/
- 417. https://gcc.gnu.org/about.html
- 418. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.3/index.html
- GCC 3.3 Release Series
- May 03, 2005
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.3.6.
- This release is a bug-fix release, containing fixes for regressions in
- GCC 3.3.5 relative to previous releases of GCC.
- This release is the last of the series 3.3.x.
- The GCC 3.3 release series includes numerous [2]new features,
- improvements, bug fixes, and other changes, thanks to an [3]amazing
- group of volunteers.
- Release History
- GCC 3.3.6
- May 3, 2005 ([4]changes)
- GCC 3.3.5
- September 30, 2004 ([5]changes)
- GCC 3.3.4
- May 31, 2004 ([6]changes)
- GCC 3.3.3
- February 14, 2004 ([7]changes)
- GCC 3.3.2
- October 16, 2003 ([8]changes)
- GCC 3.3.1
- August 8, 2003 ([9]changes)
- GCC 3.3
- May 14, 2003 ([10]changes)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [11]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [12]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [13]GCC
- project web site or contact the [14]GCC development mailing list.
- To obtain GCC please use [15]our mirror sites, or our CVS server.
- For questions related to the use of GCC, please consult these web
- pages and the [16]GCC manuals. If that fails, the
- [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [18]gcc@gcc.gnu.org. All of [19]our lists have public
- archives.
- Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [21]maintained by the GCC team. Last modified
- 2014-06-28[22].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-3.3/changes.html
- 3. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 4. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
- 5. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.5
- 6. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.4
- 7. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.3
- 8. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.2
- 9. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.1
- 10. http://gcc.gnu.org/gcc-3.3/changes.html
- 11. http://gcc.gnu.org/gcc-3.3/buildstat.html
- 12. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 13. http://gcc.gnu.org/index.html
- 14. mailto:gcc@gcc.gnu.org
- 15. http://gcc.gnu.org/mirrors.html
- 16. https://gcc.gnu.org/onlinedocs/
- 17. mailto:gcc-help@gcc.gnu.org
- 18. mailto:gcc@gcc.gnu.org
- 19. https://gcc.gnu.org/lists.html
- 20. http://www.fsf.org/
- 21. https://gcc.gnu.org/about.html
- 22. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.3/changes.html
- GCC 3.3 Release Series
- Changes, New Features, and Fixes
- The latest release in the 3.3 release series is [1]GCC 3.3.6.
- Caveats
- * The preprocessor no longer accepts multi-line string literals. They
- were deprecated in 3.0, 3.1, and 3.2.
- * The preprocessor no longer supports the -A- switch when appearing
- alone. -A- followed by an assertion is still supported.
- * Support for all the systems [2]obsoleted in GCC 3.1 has been
- removed from GCC 3.3. See below for a [3]list of systems which are
- obsoleted in this release.
- * Checking for null format arguments has been decoupled from the rest
- of the format checking mechanism. Programs which use the format
- attribute may regain this functionality by using the new [4]nonnull
- function attribute. Note that all functions for which GCC has a
- built-in format attribute, an appropriate built-in nonnull
- attribute is also applied.
- * The DWARF (version 1) debugging format has been deprecated and will
- be removed in a future version of GCC. Version 2 of the DWARF
- debugging format will continue to be supported for the foreseeable
- future.
- * The C and Objective-C compilers no longer accept the "Naming Types"
- extension (typedef foo = bar); it was already unavailable in C++.
- Code which uses it will need to be changed to use the "typeof"
- extension instead: typedef typeof(bar) foo. (We have removed this
- extension without a period of deprecation because it has caused the
- compiler to crash since version 3.0 and no one noticed until very
- recently. Thus we conclude it is not in widespread use.)
- * The -traditional C compiler option has been removed. It was
- deprecated in 3.1 and 3.2. (Traditional preprocessing remains
- available.) The <varargs.h> header, used for writing variadic
- functions in traditional C, still exists but will produce an error
- message if used.
- * GCC 3.3.1 automatically places zero-initialized variables in the
- .bss section on some operating systems. Versions of GNU Emacs up to
- (and including) 21.3 will not work correctly when using this
- optimization; you can use -fno-zero-initialized-in-bss to disable
- it.
- General Optimizer Improvements
- * A new scheme for accurately describing processor pipelines, the
- [5]DFA scheduler, has been added.
- * Pavel Nejedly, Charles University Prague, has contributed new file
- format used by the edge coverage profiler (-fprofile-arcs).
- The new format is robust and diagnoses common mistakes where
- profiles from different versions (or compilations) of the program
- are combined resulting in nonsensical profiles and slow code to
- produced with profile feedback. Additionally this format allows
- extra data to be gathered. Currently, overall statistics are
- produced helping optimizers to identify hot spots of a program
- globally replacing the old intra-procedural scheme and resulting in
- better code. Note that the gcov tool from older GCC versions will
- not be able to parse the profiles generated by GCC 3.3 and vice
- versa.
- * Jan Hubicka, SuSE Labs, has contributed a new superblock formation
- pass enabled using -ftracer. This pass simplifies the control flow
- of functions allowing other optimizations to do better job.
- He also contributed the function reordering pass
- (-freorder-functions) to optimize function placement using profile
- feedback.
- New Languages and Language specific improvements
- C/ObjC/C++
- * The preprocessor now accepts directives within macro arguments. It
- processes them just as if they had not been within macro arguments.
- * The separate ISO and traditional preprocessors have been completely
- removed. The front end handles either type of preprocessed output
- if necessary.
- * In C99 mode preprocessor arithmetic is done in the precision of the
- target's intmax_t, as required by that standard.
- * The preprocessor can now copy comments inside macros to the output
- file when the macro is expanded. This feature, enabled using the
- -CC option, is intended for use by applications which place
- metadata or directives inside comments, such as lint.
- * The method of constructing the list of directories to be searched
- for header files has been revised. If a directory named by a -I
- option is a standard system include directory, the option is
- ignored to ensure that the default search order for system
- directories and the special treatment of system header files are
- not defeated.
- * A few more [6]ISO C99 features now work correctly.
- * A new function attribute, nonnull, has been added which allows
- pointer arguments to functions to be specified as requiring a
- non-null value. The compiler currently uses this information to
- issue a warning when it detects a null value passed in such an
- argument slot.
- * A new type attribute, may_alias, has been added. Accesses to
- objects with types with this attribute are not subjected to
- type-based alias analysis, but are instead assumed to be able to
- alias any other type of objects, just like the char type.
- C++
- * Type based alias analysis has been implemented for C++ aggregate
- types.
- Objective-C
- * Generate an error if Objective-C objects are passed by value in
- function and method calls.
- * When -Wselector is used, check the whole list of selectors at the
- end of compilation, and emit a warning if a @selector() is not
- known.
- * Define __NEXT_RUNTIME__ when compiling for the NeXT runtime.
- * No longer need to include objc/objc-class.h to compile self calls
- in class methods (NeXT runtime only).
- * New -Wundeclared-selector option.
- * Removed selector bloating which was causing object files to be 10%
- bigger on average (GNU runtime only).
- * Using at run time @protocol() objects has been fixed in certain
- situations (GNU runtime only).
- * Type checking has been fixed and improved in many situations
- involving protocols.
- Java
- * The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK
- 1.4) API.
- * The JDK 1.4 assert facility has been implemented.
- * The bytecode interpreter is now direct threaded and thus faster.
- Fortran
- * Fortran improvements are listed in [7]the Fortran documentation.
- Ada
- * Ada tasking now works with glibc 2.3.x threading libraries.
- New Targets and Target Specific Improvements
- * The following changes have been made to the HP-PA port:
- + The port now defaults to scheduling for the PA8000 series of
- processors.
- + Scheduling support for the PA7300 processor has been added.
- + The 32-bit port now supports weak symbols under HP-UX 11.
- + The handling of initializers and finalizers has been improved
- under HP-UX 11. The 64-bit port no longer uses collect2.
- + Dwarf2 EH support has been added to the 32-bit GNU/Linux port.
- + ABI fixes to correct the passing of small structures by value.
- * The SPARC, HP-PA, SH4, and x86/pentium ports have been converted to
- use the DFA processor pipeline description.
- * The following NetBSD configurations for the SuperH processor family
- have been added:
- + SH3, big-endian, sh-*-netbsdelf*
- + SH3, little-endian, shle-*-netbsdelf*
- + SH5, SHmedia, big-endian, 32-bit default, sh5-*-netbsd*
- + SH5, SHmedia, little-endian, 32-bit default, sh5le-*-netbsd*
- + SH5, SHmedia, big-endian, 64-bit default, sh64-*-netbsd*
- + SH5, SHmedia, little-endian, 64-bit default, sh64le-*-netbsd*
- * The following changes have been made to the IA-32/x86-64 port:
- + SSE2 and 3dNOW! intrinsics are now supported.
- + Support for thread local storage has been added to the IA-32
- and x86-64 ports.
- + The x86-64 port has been significantly improved.
- * The following changes have been made to the MIPS port:
- + All configurations now accept the -mabi switch. Note that you
- will need appropriate multilibs for this option to work
- properly.
- + ELF configurations will always pass an ABI flag to the
- assembler, except when the MIPS EABI is selected.
- + -mabi=64 no longer selects MIPS IV code.
- + The -mcpu option, which was deprecated in 3.1 and 3.2, has
- been removed from this release.
- + -march now changes the core ISA level. In previous releases,
- it would change the use of processor-specific extensions, but
- would leave the core ISA unchanged. For example, mips64-elf
- -march=r8000 will now generate MIPS IV code.
- + Under most configurations, -mipsN now acts as a synonym for
- -march.
- + There are some new preprocessor macros to describe the -march
- and -mtune settings. See the documentation of those options
- for details.
- + Support for the NEC VR-Series processors has been added. This
- includes the 54xx, 5500, and 41xx series.
- + Support for the Sandcraft sr71k processor has been added.
- * The following changes have been made to the S/390 port:
- + Support to build the Java runtime libraries has been added.
- Java is now enabled by default on s390-*-linux* and
- s390x-*-linux* targets.
- + Multilib support for the s390x-*-linux* target has been added;
- this allows to build 31-bit binaries using the -m31 option.
- + Support for thread local storage has been added.
- + Inline assembler code may now use the 'Q' constraint to
- specify memory operands without index register.
- + Various platform-specific performance improvements have been
- implemented; in particular, the compiler now uses the BRANCH
- ON COUNT family of instructions and makes more frequent use of
- the TEST UNDER MASK family of instructions.
- * The following changes have been made to the PowerPC port:
- + Support for IBM Power4 processor added.
- + Support for Motorola e500 SPE added.
- + Support for AIX 5.2 added.
- + Function and Data sections now supported on AIX.
- + Sibcall optimizations added.
- * The support for H8 Tiny is added to the H8/300 port with -mn.
- Obsolete Systems
- Support for a number of older systems has been declared obsolete in GCC
- 3.3. Unless there is activity to revive them, the next release of GCC
- will have their sources permanently removed.
- All configurations of the following processor architectures have been
- declared obsolete:
- * Matsushita MN10200, mn10200-*-*
- * Motorola 88000, m88k-*-*
- * IBM ROMP, romp-*-*
- Also, some individual systems have been obsoleted:
- * Alpha
- + Interix, alpha*-*-interix*
- + Linux libc1, alpha*-*-linux*libc1*
- + Linux ECOFF, alpha*-*-linux*ecoff*
- * ARM
- + Generic a.out, arm*-*-aout*
- + Conix, arm*-*-conix*
- + "Old ABI," arm*-*-oabi
- + StrongARM/COFF, strongarm-*-coff*
- * HPPA (PA-RISC)
- + Generic OSF, hppa1.0-*-osf*
- + Generic BSD, hppa1.0-*-bsd*
- + HP/UX versions 7, 8, and 9, hppa1.[01]-*-hpux[789]*
- + HiUX, hppa*-*-hiux*
- + Mach Lites, hppa*-*-lites*
- * Intel 386 family
- + Windows NT 3.x, i?86-*-win32
- * MC68000 family
- + HP systems, m68000-hp-bsd* and m68k-hp-bsd*
- + Sun systems, m68000-sun-sunos*, m68k-sun-sunos*, and
- m68k-sun-mach*
- + AT&T systems, m68000-att-sysv*
- + Atari systems, m68k-atari-sysv*
- + Motorola systems, m68k-motorola-sysv*
- + NCR systems, m68k-ncr-sysv*
- + Plexus systems, m68k-plexus-sysv*
- + Commodore systems, m68k-cbm-sysv*
- + Citicorp TTI, m68k-tti-*
- + Unos, m68k-crds-unos*
- + Concurrent RTU, m68k-ccur-rtu*
- + Linux a.out, m68k-*-linux*aout*
- + Linux libc1, m68k-*-linux*libc1*
- + pSOS, m68k-*-psos*
- * MIPS
- + Generic ECOFF, mips*-*-ecoff*
- + SINIX, mips-sni-sysv4
- + Orion RTEMS, mips64orion-*-rtems*
- * National Semiconductor 32000
- + OpenBSD, ns32k-*-openbsd*
- * POWER (aka RS/6000) and PowerPC
- + AIX versions 1, 2, and 3, rs6000-ibm-aix[123]*
- + Bull BOSX, rs6000-bull-bosx
- + Generic Mach, rs6000-*-mach*
- + Generic SysV, powerpc*-*-sysv*
- + Linux libc1, powerpc*-*-linux*libc1*
- * Sun SPARC
- + Generic a.out, sparc-*-aout*, sparclet-*-aout*,
- sparclite-*-aout*, and sparc86x-*-aout*
- + NetBSD a.out, sparc-*-netbsd*aout*
- + Generic BSD, sparc-*-bsd*
- + ChorusOS, sparc-*-chorusos*
- + Linux a.out, sparc-*-linux*aout*
- + Linux libc1, sparc-*-linux*libc1*
- + LynxOS, sparc-*-lynxos*
- + Solaris on HAL hardware, sparc-hal-solaris2*
- + SunOS versions 3 and 4, sparc-*-sunos[34]*
- * NEC V850
- + RTEMS, v850-*-rtems*
- * VAX
- + VMS, vax-*-vms*
- Documentation improvements
- Other significant improvements
- * Almost all front-end dependencies in the compiler have been
- separated out into a set of language hooks. This should make adding
- a new front end clearer and easier.
- * One effect of removing the separate preprocessor is a small
- increase in the robustness of the compiler in general, and the
- maintainability of target descriptions. Previously target-specific
- built-in macros and others, such as __FAST_MATH__, had to be
- handled with so-called specs that were hard to maintain. Often they
- would fail to behave properly when conflicting options were
- supplied on the command line, and define macros in the user's
- namespace even when strict ISO compliance was requested.
- Integrating the preprocessor has cleanly solved these issues.
- * The Makefile suite now supports redirection of make install by
- means of the variable DESTDIR.
- __________________________________________________________________
- GCC 3.3
- Detailed release notes for the GCC 3.3 release follow.
- Bug Fixes
- bootstrap failures
- * [8]10140 cross compiler build failures: missing __mempcpy (DUP:
- [9]10198,[10]10338)
- Internal compiler errors (multi-platform)
- * [11]3581 large string causes segmentation fault in cc1
- * [12]4382 __builtin_{set,long}jmp with -O3 can crash the compiler
- * [13]5533 (c++) ICE when processing std::accumulate(begin, end,
- init, invalid_op)
- * [14]6387 -fpic -gdwarf-2 -g1 combination gives ICE in dwarf2out
- * [15]6412 (c++) ICE in retrieve_specialization
- * [16]6620 (c++) partial template specialization causes an ICE
- (segmentation fault)
- * [17]6663 (c++) ICE with attribute aligned
- * [18]7068 ICE with incomplete types
- * [19]7083 (c++) ICE using -gstabs with dodgy class derivation
- * [20]7647 (c++) ICE when data member has the name of the enclosing
- class
- * [21]7675 ICE in fixup_var_refs_1
- * [22]7718 'complex' template instantiation causes ICE
- * [23]8116 (c++) ICE in member template function
- * [24]8358 (ada) Ada compiler accesses freed memory, crashes
- * [25]8511 (c++) ICE: (hopefully) reproducible cc1plus segmentation
- fault
- * [26]8564 (c++) ICE in find_function_data, in function.c
- * [27]8660 (c++) template overloading ICE in tsubst_expr, in cp/pt.c
- * [28]8766 (c++) ICE after failed initialization of static template
- variable
- * [29]8803 ICE in instantiate_virtual_regs_1, in function.c
- * [30]8846 (c++) ICE after diagnostic if fr_FR@euro locale is set
- * [31]8906 (c++) ICE (Segmentation fault) when parsing nested-class
- definition
- * [32]9216 (c++) ICE on missing template parameter
- * [33]9261 (c++) ICE in arg_assoc, in cp/decl2.c
- * [34]9263 (fortran) ICE caused by invalid PARAMETER in implied DO
- loop
- * [35]9429 (c++) ICE in template instantiation with a pointered new
- operator
- * [36]9516 Internal error when using a big array
- * [37]9600 (c++) ICE with typedefs in template class
- * [38]9629 (c++) virtual inheritance segfault
- * [39]9672 (c++) ICE: Error reporting routines re-entered
- * [40]9749 (c++) ICE in write_expression on invalid function
- prototype
- * [41]9794 (fortran) ICE: floating point exception during constant
- folding
- * [42]9829 (c++) Missing colon in nested namespace usage causes ICE
- * [43]9916 (c++) ICE with noreturn function in ?: statement
- * [44]9936 ICE with local function and variable-length 2d array
- * [45]10262 (c++) cc1plus crashes with large generated code
- * [46]10278 (c++) ICE in parser for invalid code
- * [47]10446 (c++) ICE on definition of nonexistent member function of
- nested class in a class template
- * [48]10451 (c++) ICE in grokdeclarator on spurious mutable
- declaration
- * [49]10506 (c++) ICE in build_new at cp/init.c with
- -fkeep-inline-functions and multiple inheritance
- * [50]10549 (c++) ICE in store_bit_field on bitfields that exceed the
- precision of the declared type
- Optimization bugs
- * [51]2001 Inordinately long compile times in reload CSE regs
- * [52]2391 Exponential compilation time explosion in combine
- * [53]2960 Duplicate loop conditions even with -Os
- * [54]4046 redundant conditional branch
- * [55]6405 Loop-unrolling related performance regressions
- * [56]6798 very long compile time with large case-statement
- * [57]6871 const objects shouldn't be moved to .bss
- * [58]6909 problem w/ -Os on modified loop-2c.c test case
- * [59]7189 gcc -O2 -Wall does not print ``control reaches end of
- non-void function'' warning
- * [60]7642 optimization problem with signbit()
- * [61]8634 incorrect code for inlining of memcpy under -O2
- * [62]8750 Cygwin prolog generation erroneously emitting __alloca as
- regular function call
- C front end
- * [63]2161 long if-else cascade overflows parser stack
- * [64]4319 short accepted on typedef'd char
- * [65]8602 incorrect line numbers in warning messages when using
- inline functions
- * [66]9177 -fdump-translation-unit: C front end deletes function_decl
- AST nodes and breaks debugging dumps
- * [67]9853 miscompilation of non-constant structure initializer
- c++ compiler and library
- * [68]45 legal template specialization code is rejected (DUP:
- [69]3784)
- * [70]764 lookup failure: friend operator and dereferencing a pointer
- and templates (DUP: [71]5116)
- * [72]2862 gcc accepts invalid explicit instantiation syntax (DUP:
- 2863)
- * [73]3663 G++ doesn't check access control during template
- instantiation
- * [74]3797 gcc fails to emit explicit specialization of a template
- member
- * [75]3948 Two destructors are called when no copy destructor is
- defined (ABI change)
- * [76]4137 Conversion operator within template is not accepted
- * [77]4361 bogus ambiguity taking the address of a member template
- * [78]4802 g++ accepts illegal template code (access to private
- member; DUP: [79]5837)
- * [80]4803 inline function is used but never defined, and g++ does
- not object
- * [81]5094 Partial specialization cannot be friend?
- * [82]5730 complex<double>::norm() -- huge slowdown from egcs-2.91.66
- * [83]6713 Regression wrt 3.0.4: g++ -O2 leads to seg fault at run
- time
- * [84]7015 certain __asm__ constructs rejected
- * [85]7086 compile time regression (quadratic behavior in
- fixup_var_refs)
- * [86]7099 G++ doesn't set the noreturn attribute on std::exit and
- std::abort
- * [87]7247 copy constructor missing when inlining enabled (invalid
- optimization?)
- * [88]7441 string array initialization compilation time regression
- from seconds to minutes
- * [89]7768 __PRETTY_FUNCTION__ for template destructor is wrong
- * [90]7804 bad printing of floating point constant in warning message
- * [91]8099 Friend classes and template specializations
- * [92]8117 member function pointers and multiple inheritance
- * [93]8205 using declaration and multiple inheritance
- * [94]8645 unnecessary non-zero checks in stl_tree.h
- * [95]8724 explicit destructor call for incomplete class allowed
- * [96]8805 compile time regression with many member variables
- * [97]8691 -O3 and -fno-implicit-templates are incompatible
- * [98]8700 unhelpful error message for binding temp to reference
- * [99]8724 explicit destructor call for incomplete class allowed
- * [100]8949 numeric_limits<>::denorm_min() and is_iec559 problems
- * [101]9016 Failure to consistently constant fold "constant" C++
- objects
- * [102]9053 g++ confused about ambiguity of overloaded function
- templates
- * [103]9152 undefined virtual thunks
- * [104]9182 basic_filebuf<> does not report errors in codecvt<>::out
- * [105]9297 data corruption due to codegen bug (when copying.)
- * [106]9318 i/ostream::operator>>/<<(streambuf*) broken
- * [107]9320 Incorrect usage of traits_type::int_type in stdio_filebuf
- * [108]9400 bogus -Wshadow warning: shadowed declaration of this in
- local classes
- * [109]9424 i/ostream::operator>>/<<(streambuf*) drops characters
- * [110]9425 filebuf::pbackfail broken (DUP: [111]9439)
- * [112]9474 GCC freezes in compiling a weird code mixing <iostream>
- and <iostream.h>
- * [113]9548 Incorrect results from setf(ios::fixed) and precision(-1)
- [114][DR 231]
- * [115]9555 ostream inserters fail to set badbit on exception
- * [116]9561 ostream inserters rethrow exception of wrong type
- * [117]9563 ostream::sentry returns true after a failed preparation
- * [118]9582 one-definition rule violation in std::allocator
- * [119]9622 __PRETTY_FUNCTION__ incorrect in template destructors
- * [120]9683 bug in initialization chains for static const variables
- from template classes
- * [121]9791 -Woverloaded-virtual reports hiding of destructor
- * [122]9817 collate::compare doesn't handle nul characters
- * [123]9825 filebuf::sputbackc breaks sbumpc
- * [124]9826 operator>>(basic_istream, basic_string) fails to compile
- with custom traits
- * [125]9924 Multiple using statements for builtin functions not
- allowed
- * [126]9946 destructor is not called for temporary object
- * [127]9964 filebuf::close() sometimes fails to close file
- * [128]9988 filebuf::overflow writes EOF to file
- * [129]10033 optimization breaks polymorphic references w/ typeid
- operator
- * [130]10097 filebuf::underflow drops characters
- * [131]10132 filebuf destructor can throw exceptions
- * [132]10180 gcc fails to warn about non-inlined function
- * [133]10199 method parametrized by template does not work everywhere
- * [134]10300 use of array-new (nothrow) in segfaults on NULL return
- * [135]10427 Stack corruption with variable-length automatic arrays
- and virtual destructors
- * [136]10503 Compilation never stops in fixed_type_or_null
- Objective-C
- * [137]5956 selectors aren't matched properly when added to the
- selector table
- Fortran compiler and library
- * [138]1832 list directed i/o overflow hangs, -fbounds-check doesn't
- detect
- * [139]3924 g77 generates code that is rejected by GAS if COFF debug
- info requested
- * [140]5634 doc: explain that configure --prefix=~/... does not work
- * [141]6367 multiple repeat counts confuse namelist read into array
- * [142]6491 Logical operations error on logicals when using
- -fugly-logint
- * [143]6742 Generation of C++ Prototype for FORTRAN and extern "C"
- * [144]7113 Failure of g77.f-torture/execute/f90-intrinsic-bit.f -Os
- on irix6.5
- * [145]7236 OPEN(...,RECL=nnn,...) without ACCESS='DIRECT' should
- assume a direct access file
- * [146]7278 g77 "bug"; the executable misbehaves (with -O2
- -fno-automatic)
- * [147]7384 DATE_AND_TIME milliseconds field inactive on Windows
- * [148]7388 Incorrect output with 0-based array of characters
- * [149]8587 Double complex zero ** double precision number -> NaN
- instead of zero
- * [150]9038 -ffixed-line-length-none -x f77-cpp-input gives: Warning:
- unknown register name line-length-none
- * [151]10197 Direct access files not unformatted by default
- Java compiler and library
- * [152]6005 gcj fails to build rhug on alpha
- * [153]6389 System.getProperty("") should always throw an
- IllegalArgumentException
- * [154]6576 java.util.ResourceBundle.getResource ignores locale
- * [155]6652 new java.io.File("").getCanonicalFile() throws exception
- * [156]7060 getMethod() doesn't search super interface
- * [157]7073 bytecode interpreter gives wrong answer for interface
- getSuperclass()
- * [158]7180 possible bug in
- javax.naming.spi.NamingManager.getPlusPath()
- * [159]7416 java.security startup refs "GNU libgcj.security"
- * [160]7570 Runtime.exec with null envp: child doesn't inherit parent
- env (DUP: [161]7578)
- * [162]7611 Internal error while compiling libjava with -O
- * [163]7709 NullPointerException in _Jv_ResolvePoolEntry
- * [164]7766 ZipInputStream.available returns 0 immediately after
- construction
- * [165]7785 Calendar.getTimeInMillis/setTimeInMillis should be public
- * [166]7786 TimeZone.getDSTSavings() from JDK1.4 not implemented
- * [167]8142 '$' in class names vs. dlopen 'dynamic string tokens'
- * [168]8234 ZipInputStream chokes when InputStream.read() returns
- small chunks
- * [169]8415 reflection bug: exception info for Method
- * [170]8481 java.Random.nextInt(int) may return negative
- * [171]8593 Error reading GZIPped files with BufferedReader
- * [172]8759 java.beans.Introspector has no flushCaches() or
- flushFromCaches() methods
- * [173]8997 spin() calls Thread.sleep
- * [174]9253 on win32, java.io.File.listFiles("C:\\") returns pwd
- instead of the root content of C:
- * [175]9254 java::lang::Object::wait(), threads-win32.cc returns
- wrong return codes
- * [176]9271 Severe bias in java.security.SecureRandom
- Ada compiler and library
- * [177]6767 make gnatlib-shared fails on -laddr2line
- * [178]9911 gnatmake fails to link when GCC configured with
- --with-sjlj-exceptions=yes
- * [179]10020 Can't bootstrap gcc on AIX with Ada enabled
- * [180]10546 Ada tasking not working on Red Hat 9
- preprocessor
- * [181]7029 preprocessor should ignore #warning with -M
- ARM-specific
- * [182]2903 [arm] Optimization bug with long long arithmetic
- * [183]7873 arm-linux-gcc fails when assigning address to a bit field
- FreeBSD-specific
- * [184]7680 float functions undefined in math.h/cmath with #define
- _XOPEN_SOURCE
- HP-UX or HP-PA-specific
- * [185]8705 [HP-PA] ICE in emit_move_insn_1, in expr.c
- * [186]9986 [HP-UX] Incorrect transformation of fputs_unlocked to
- fputc_unlocked
- * [187]10056 [HP-PA] ICE at -O2 when building c++ code from doxygen
- m68hc11-specific
- * [188]6744 Bad assembler code generated: reference to pseudo
- register z
- * [189]7361 Internal compiler error in reload_cse_simplify_operands,
- in reload1.c
- MIPS-specific
- * [190]9496 [mips-linux] bug in optimizer?
- PowerPC-specific
- * [191]7067 -Os with -mcpu=powerpc optimizes for speed (?) instead of
- space
- * [192]8480 reload ICEs for LAPACK code on powerpc64-linux
- * [193]8784 [AIX] Internal compiler error in simplify_gen_subreg
- * [194]10315 [powerpc] ICE: in extract_insn, in recog.c
- SPARC-specific
- * [195]10267 (documentation) Wrong build instructions for
- *-*-solaris2*
- x86-specific (Intel/AMD)
- * [196]7916 ICE in instantiate_virtual_register_1
- * [197]7926 (c++) i486 instructions in header files make c++ programs
- crash on i386
- * [198]8555 ICE in gen_split_1231
- * [199]8994 ICE with -O -march=pentium4
- * [200]9426 ICE with -fssa -funroll-loops -fprofile-arcs
- * [201]9806 ICE in inline assembly with -fPIC flag
- * [202]10077 gcc -msse2 generates movd to move dwords between xmm
- regs
- * [203]10233 64-bit comparison only comparing bottom 32-bits
- * [204]10286 type-punning doesn't work with __m64 and -O
- * [205]10308 [x86] ICE with -O -fgcse or -O2
- __________________________________________________________________
- GCC 3.3.1
- Bug Fixes
- This section lists the problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.3.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- Bootstrap failures
- * [206]11272 [Solaris] make bootstrap fails while building libstdc++
- Internal compiler errors (multi-platform)
- * [207]5754 ICE on invalid nested template class
- * [208]6597 ICE in set_mem_alias_set compiling Qt with -O2 on ia64
- and --enable-checking
- * [209]6949 (c++) ICE in tsubst_decl, in cp/pt.c
- * [210]7053 (c++) ICE when declaring a function already defined as a
- friend method of a template class
- * [211]8164 (c++) ICE when using different const expressions as
- template parameter
- * [212]8384 (c++) ICE in is_base_type, in dwarf2out.c
- * [213]9559 (c++) ICE with invalid initialization of a static const
- * [214]9649 (c++) ICE in finish_member_declaration, in cp/semantics.c
- when redeclaring a static member variable
- * [215]9864 (fortran) ICE in add_abstract_origin_attribute, in
- dwarfout.c with -g -O -finline-functions
- * [216]10432 (c++) ICE in poplevel, in cp/decl.c
- * [217]10475 ICE in subreg_highpart_offset for code with long long
- * [218]10635 (c++) ICE when dereferencing an incomplete type casted
- from a void pointer
- * [219]10661 (c++) ICE in instantiate_decl, in cp/pt.c while
- instantiating static member variables
- * [220]10700 ICE in copy_to_mode_reg on 64-bit targets
- * [221]10712 (c++) ICE in constructor_name_full, in cp/decl2.c
- * [222]10796 (c++) ICE when defining an enum with two values: -1 and
- MAX_INT_64BIT
- * [223]10890 ICE in merge_assigned_reloads building Linux 2.4.2x
- sched.c
- * [224]10939 (c++) ICE with template code
- * [225]10956 (c++) ICE when specializing a template member function
- of a template class, in tsubst, in cp/pt.c
- * [226]11041 (c++) ICE: const myclass &x = *x; (when operator*()
- defined)
- * [227]11059 (c++) ICE with empty union
- * [228]11083 (c++) ICE in commit_one_edge_insertion, in cfgrtl.c with
- -O2 -fnon-call-exceptions
- * [229]11105 (c++) ICE in mangle_conv_op_name_for_type
- * [230]11149 (c++) ICE on error when instantiation with call function
- of a base type
- * [231]11228 (c++) ICE on new-expression using array operator new and
- default-initialization
- * [232]11282 (c++) Infinite memory usage after syntax error
- * [233]11301 (fortran) ICE with -fno-globals
- * [234]11308 (c++) ICE when using an enum type name as if it were a
- class or namespace
- * [235]11473 (c++) ICE with -gstabs when empty struct inherits from
- an empty struct
- * [236]11503 (c++) ICE when instantiating template with ADDR_EXPR
- * [237]11513 (c++) ICE in push_template_decl_real, in cp/pt.c:
- template member functions
- Optimization bugs
- * [238]11198 -O2 -frename-registers generates wrong code (aliasing
- problem)
- * [239]11304 Wrong code production with -fomit-frame-pointer
- * [240]11381 volatile memory access optimized away
- * [241]11536 [strength-reduce] -O2 optimization produces wrong code
- * [242]11557 constant folding bug generates wrong code
- C front end
- * [243]5897 No warning for statement after return
- * [244]11279 DWARF-2 output mishandles large enums
- Preprocessor bugs
- * [245]11022 no warning for non-compatible macro redefinition
- C++ compiler and library
- * [246]2330 static_cast<>() to a private base is allowed
- * [247]5388 Incorrect message "operands to ?: have different types"
- * [248]5390 Libiberty fails to demangle multi-digit template
- parameters
- * [249]7877 Incorrect parameter passing to specializations of member
- function templates
- * [250]9393 Anonymous namespaces and compiling the same file twice
- * [251]10032 -pedantic converts some errors to warnings
- * [252]10468 const typeof(x) is non-const, but only in templates
- * [253]10527 confused error message with "new int()" parameter
- initializer
- * [254]10679 parameter MIN_INLINE_INSNS is not honored
- * [255]10682 gcc chokes on a typedef for an enum inside a class
- template
- * [256]10689 pow(std::complex(0),1/3) returns (nan, nan) instead of
- 0.
- * [257]10845 template member function (with nested template as
- parameter) cannot be called anymore if another unrelated template
- member function is defined
- * [258]10849 Cannot define an out-of-class specialization of a
- private nested template class
- * [259]10888 Suppress -Winline warnings for system headers
- * [260]10929 -Winline warns about functions for which no definition
- is visible
- * [261]10931 valid conversion static_cast<const unsigned
- int&>(lvalue-of-type-int) is rejected
- * [262]10940 Bad code with explicit specialization
- * [263]10968 If member function implicitly instantiated, explicit
- instantiation of class fails to instantiate it
- * [264]10990 Cannot convert with dynamic_cast<> to a private base
- class from within a member function
- * [265]11039 Bad interaction between implicit typename deprecation
- and friendship
- * [266]11062 (libstdc++) avoid __attribute__ ((unused)); say
- "__unused__" instead
- * [267]11095 C++ iostream manipulator causes segfault when called
- with negative argument
- * [268]11098 g++ doesn't emit complete debugging information for
- local variables in destructors
- * [269]11137 GNU/Linux shared library constructors not called unless
- there's one global object
- * [270]11154 spurious ambiguity report for template class
- specialization
- * [271]11329 Compiler cannot find user defined implicit typecast
- * [272]11332 Spurious error with casts in ?: expression
- * [273]11431 static_cast behavior with subclasses when default
- constructor available
- * [274]11528 money_get facet does not accept "$.00" as valid
- * [275]11546 Type lookup problems in out-of-line definition of a
- class doubly nested from a template class
- * [276]11567 C++ code containing templated member function with same
- name as pure virtual member function results in linking failure
- * [277]11645 Failure to deal with using and private inheritance
- Java compiler and library
- * [278]5179 Qualified static field access doesn't initialize its
- class
- * [279]8204 gcj -O2 to native reorders certain instructions
- improperly
- * [280]10838 java.io.ObjectInputStream syntax error
- * [281]10886 The RMI registry that comes with GCJ does not work
- correctly
- * [282]11349 JNDI URL context factories not located correctly
- x86-specific (Intel/AMD)
- * [283]4823 ICE on inline assembly code
- * [284]8878 miscompilation with -O and SSE
- * [285]9815 (c++ library) atomicity.h - fails to compile with -O3
- -masm=intel
- * [286]10402 (inline assembly) [x86] ICE in merge_assigned_reloads,
- in reload1.c
- * [287]10504 ICE with SSE2 code and -O3 -mcpu=pentium4 -msse2
- * [288]10673 ICE for x86-64 on freebsd libc vfprintf.c source
- * [289]11044 [x86] out of range loop instructions for FP code on K6
- * [290]11089 ICE: instantiate_virtual_regs_lossage while using SSE
- built-ins
- * [291]11420 [x86_64] gcc generates invalid asm code when "-O -fPIC"
- is used
- SPARC- or Solaris- specific
- * [292]9362 solaris 'as' dies when fed .s and "-gstabs"
- * [293]10142 [SPARC64] gcc produces wrong code when passing
- structures by value
- * [294]10663 New configure check aborts with Sun tools.
- * [295]10835 combinatorial explosion in scheduler on HyperSPARC
- * [296]10876 ICE in calculate_giv_inc when building KDE
- * [297]10955 wrong code at -O3 for structure argument in context of
- structure return
- * [298]11018 -mcpu=ultrasparc busts tar-1.13.25
- * [299]11556 [sparc64] ICE in gen_reg_rtx() while compiling 2.6.x
- Linux kernel
- ia64 specific
- * [300]10907 gcc violates the ia64 ABI (GP must be preserved)
- * [301]11320 scheduler bug (in machine depended reorganization pass)
- * [302]11599 bug with conditional and __builtin_prefetch
- PowerPC specific
- * [303]9745 [powerpc] gcc mis-compiles libmcrypt (alias problem
- during loop)
- * [304]10871 error in rs6000_stack_info save_size computation
- * [305]11440 gcc mis-compiles c++ code (libkhtml) with -O2, -fno-gcse
- cures it
- m68k-specific
- * [306]7594 [m68k] ICE on legal code associated with simplify-rtx
- * [307]10557 [m68k] ICE in subreg_offset_representable_p
- * [308]11054 [m68k] ICE in reg_overlap_mentioned_p
- ARM-specific
- * [309]10834 [arm] GCC 3.3 still generates incorrect instructions for
- functions with __attribute__ ((interrupt ("IRQ")))
- * [310]10842 [arm] Clobbered link register is copied to pc under
- certain circumstances
- * [311]11052 [arm] noce_process_if_block() can lose REG_INC notes
- * [312]11183 [arm] ICE in change_address_1 (3.3) / subreg_hard_regno
- (3.4)
- MIPS-specific
- * [313]11084 ICE in propagate_one_insn, in flow.c
- SH-specific
- * [314]10331 can't compile c++ part of gcc cross compiler for sh-elf
- * [315]10413 [SH] ICE in reload_cse_simplify_operands, in reload1.c
- * [316]11096 i686-linux to sh-linux cross compiler fails to compile
- C++ files
- GNU/Linux (or Hurd?) specific
- * [317]2873 Bogus fixinclude of stdio.h from glibc 2.2.3
- UnixWare specific
- * [318]3163 configure bug: gcc/aclocal.m4 mmap test fails on UnixWare
- 7.1.1
- Cygwin (or mingw) specific
- * [319]5287 ICE with dllimport attribute
- * [320]10148 [MingW/CygWin] Compiler dumps core
- DJGPP specific
- * [321]8787 GCC fails to emit .intel_syntax when invoked with
- -masm=intel on DJGPP
- Darwin (and MacOS X) specific
- * [322]10900 trampolines crash
- Documentation
- * [323]1607 (c++) Format attributes on methods undocumented
- * [324]4252 Invalid option `-fdump-translation-unit'
- * [325]4490 Clarify restrictions on -m96bit-long-double,
- -m128bit-long-double
- * [326]10355 document an issue with regparm attribute on some systems
- (e.g. Solaris)
- * [327]10726 (fortran) Documentation for function "IDate Intrinsic
- (Unix)" is wrong
- * [328]10805 document bug in old version of Sun assembler
- * [329]10815 warn against GNU binutils on AIX
- * [330]10877 document need for newer binutils on i?86-*-linux-gnu
- * [331]11280 Manual incorrect with respect to -freorder-blocks
- * [332]11466 Document -mlittle-endian and its restrictions for the
- sparc64 port
- Testsuite bugs (compiler itself is not affected)
- * [333]10737 newer bison causes g++.dg/parse/crash2.C to incorrectly
- report failure
- * [334]10810 gcc-3.3 fails make check: buffer overrun in
- test_demangle.c
- __________________________________________________________________
- GCC 3.3.2
- Bug Fixes
- This section lists the problem reports (PRs) from GCC's bug tracker
- that are known to be fixed in the 3.3.2 release. This list might not be
- complete (that is, it is possible that some PRs that have been fixed
- are not listed here).
- Bootstrap failures and problems
- * [335]8336 [SCO5] bootstrap config still tries to use COFF options
- * [336]9330 [alpha-osf] Bootstrap failure on Compaq Tru64 with
- --enable-threads=posix
- * [337]9631 [hppa64-linux] gcc-3.3 fails to bootstrap
- * [338]9877 fixincludes makes a bad sys/byteorder.h on svr5 (UnixWare
- 7.1.1)
- * [339]11687 xstormy16-elf build fails in libf2c
- * [340]12263 [SGI IRIX] bootstrap fails during compile of
- libf2c/libI77/backspace.c
- * [341]12490 buffer overflow in scan-decls.c (during Solaris 9
- fix-header processing)
- Internal compiler errors (multi-platform)
- * [342]7277 Casting integers to vector types causes ICE
- * [343]7939 (c++) ICE on invalid function template specialization
- * [344]11063 (c++) ICE on parsing initialization list of const array
- member
- * [345]11207 ICE with negative index in array element designator
- * [346]11522 (fortran) g77 dwarf-2 ICE in
- add_abstract_origin_attribute
- * [347]11595 (c++) ICE on duplicate label definition
- * [348]11646 (c++) ICE in commit_one_edge_insertion with
- -fnon-call-exceptions -fgcse -O
- * [349]11665 ICE in struct initializer when taking address
- * [350]11852 (c++) ICE with bad struct initializer.
- * [351]11878 (c++) ICE in cp_expr_size
- * [352]11883 ICE with any -O on mercury-generated C code
- * [353]11991 (c++) ICE in cxx_incomplete_type_diagnostic, in
- cp/typeck2.c when applying typeid operator to template template
- parameter
- * [354]12146 ICE in lookup_template_function, in cp/pt.c
- * [355]12215 ICE in make_label_edge with -fnon-call-exceptions
- -fno-gcse -O2
- * [356]12369 (c++) ICE with templates and friends
- * [357]12446 ICE in emit_move_insn on complicated array reference
- * [358]12510 ICE in final_scan_insn
- * [359]12544 ICE with large parameters used in nested functions
- C and optimization bugs
- * [360]9862 spurious warnings with -W -finline-functions
- * [361]10962 lookup_field is a linear search on a linked list (can be
- slow if large struct)
- * [362]11370 -Wunreachable-code gives false complaints
- * [363]11637 invalid assembly with -fnon-call-exceptions
- * [364]11885 Problem with bitfields in packed structs
- * [365]12082 Inappropriate unreachable code warnings
- * [366]12180 Inline optimization fails for variadic function
- * [367]12340 loop unroller + gcse produces wrong code
- C++ compiler and library
- * [368]3907 nested template parameter collides with member name
- * [369]5293 confusing message when binding a temporary to a reference
- * [370]5296 [DR115] Pointers to functions and to template functions
- behave differently in deduction
- * [371]7939 ICE on function template specialization
- * [372]8656 Unable to assign function with __attribute__ and pointer
- return type to an appropriate variable
- * [373]10147 Confusing error message for invalid template function
- argument
- * [374]11400 std::search_n() makes assumptions about Size parameter
- * [375]11409 issues with using declarations, overloading, and
- built-in functions
- * [376]11740 ctype<wchar_t>::do_is(mask, wchar_t) doesn't handle
- multiple bits in mask
- * [377]11786 operator() call on variable in other namespace not
- recognized
- * [378]11867 static_cast ignores ambiguity
- * [379]11928 bug with conversion operators that are typedefs
- * [380]12114 Uninitialized memory accessed in dtor
- * [381]12163 static_cast + explicit constructor regression
- * [382]12181 Wrong code with comma operator and c++
- * [383]12236 regparm and fastcall messes up parameters
- * [384]12266 incorrect instantiation of unneeded template during
- overload resolution
- * [385]12296 istream::peek() doesn't set eofbit
- * [386]12298 [sjlj exceptions] Stack unwind destroys
- not-yet-constructed object
- * [387]12369 ICE with templates and friends
- * [388]12337 apparently infinite loop in g++
- * [389]12344 stdcall attribute ignored if function returns a pointer
- * [390]12451 missing(late) class forward declaration in cxxabi.h
- * [391]12486 g++ accepts invalid use of a qualified name
- x86 specific (Intel/AMD)
- * [392]8869 [x86 MMX] ICE with const variable optimization and MMX
- builtins
- * [393]9786 ICE in fixup_abnormal_edges with -fnon-call-exceptions
- -O2
- * [394]11689 g++3.3 emits un-assembleable code for k6 architecture
- * [395]12116 [k6] Invalid assembly output values with X-MAME code
- * [396]12070 ICE converting between double and long double with
- -msoft-float
- ia64-specific
- * [397]11184 [ia64 hpux] ICE on __builtin_apply building libobjc
- * [398]11535 __builtin_return_address may not work on ia64
- * [399]11693 [ia64] ICE in gen_nop_type
- * [400]12224 [ia64] Thread-local storage doesn't work
- PowerPC-specific
- * [401]11087 [powerpc64-linux] GCC miscompiles raid1.c from linux
- kernel
- * [402]11319 loop miscompiled on ppc32
- * [403]11949 ICE Compiler segfault with ffmpeg -maltivec code
- SPARC-specific
- * [404]11662 wrong code for expr. with cast to long long and
- exclusive or
- * [405]11965 invalid assembler code for a shift < 32 operation
- * [406]12301 (c++) stack corruption when a returned expression throws
- an exception
- Alpha-specific
- * [407]11717 [alpha-linux] unrecognizable insn compiling for.c of
- kernel 2.4.22-pre8
- HPUX-specific
- * [408]11313 problem with #pragma weak and static inline functions
- * [409]11712 __STDC_EXT__ not defined for C++ by default anymore?
- Solaris specific
- * [410]12166 Profiled programs crash if PROFDIR is set
- Solaris-x86 specific
- * [411]12101 i386 Solaris no longer works with GNU as?
- Miscellaneous embedded target-specific bugs
- * [412]10988 [m32r-elf] wrong blockmove code with -O3
- * [413]11805 [h8300-unknown-coff] [H8300] ICE for simple code with
- -O2
- * [414]11902 [sh4] spec file improperly inserts rpath even when none
- needed
- * [415]11903 [sh4] -pthread fails to link due to error in spec file
- on sh4
- __________________________________________________________________
- GCC 3.3.3
- Minor features
- In addition to the bug fixes documented below, this release contains
- few minor features such as:
- * Support for --with-sysroot
- * Support for automatic detection of executable stacks
- * Support for SSE3 instructions
- * Support for thread local storage debugging under GDB on S390
- Bug Fixes
- This section lists the problem reports (PRs) from GCC's bug tracker
- that are known to be fixed in the 3.3.3 release. This list might not be
- complete (that is, it is possible that some PRs that have been fixed
- are not listed here).
- Bootstrap failures and issues
- * [416]11890 Building cross gcc-3.3.1 for sparc-sun-solaris2.6 fails
- * [417]12399 boehm-gc fails (when building a cross compiler): libtool
- unable to infer tagged configuration
- * [418]13068 mklibgcc.in doesn't handle multi-level multilib
- subdirectories properly
- Internal compiler errors (multi-platform)
- * [419]10060 ICE (stack overflow) on huge file (300k lines) due to
- recursive behaviour of copy_rtx_if_shared, in emit_rtl.c
- * [420]10555 (c++) ICE on undefined template argument
- * [421]10706 (c++) ICE in mangle_class_name_for_template
- * [422]11496 (fortran) error in flow_loops_find when -funroll-loops
- active
- * [423]11741 ICE in pre_insert_copy_insn, in gcse.c
- * [424]12440 GCC crashes during compilation of quicktime4linux 2.0.0
- * [425]12632 (fortran) -fbounds-check ICE
- * [426]12712 (c++) ICE on short legit C++ code fragment with gcc
- 3.3.2
- * [427]12726 (c++) ICE (segfault) on trivial code
- * [428]12890 (c++) ICE on compilation of class with throwing method
- * [429]12900 (c++) ICE in rtl_verify_flow_info_1
- * [430]13060 (fortran) ICE in fixup_var_refs_1, in function.c on
- correct code with -O2 -fno-force-mem
- * [431]13289 (c++) ICE in regenerate_decl_from_template on recursive
- template
- * [432]13318 ICE: floating point exception in the loop optimizer
- * [433]13392 (c++) ICE in convert_from_eh_region_ranges_1, in
- except.c
- * [434]13574 (c++) invalid array default initializer in class lets
- gcc consume all memory and die
- * [435]13475 ICE on SIMD variables with partial value initialization
- * [436]13797 (c++) ICE on invalid template parameter
- * [437]13824 (java) gcj SEGV with simple .java program
- C and optimization bugs
- * [438]8776 loop invariants are not removed (most likely)
- * [439]10339 [sparc,ppc,ppc64] Invalid optimization: replacing
- strncmp by memcmp
- * [440]11350 undefined labels with -Os -fPIC
- * [441]12826 Optimizer removes reference through volatile pointer
- * [442]12500 stabs debug info: void no longer a predefined / builtin
- type
- * [443]12941 builtin-bitops-1.c miscompilation (latent bug)
- * [444]12953 tree inliner bug (in inline_forbidden_p) and fix
- * [445]13041 linux-2.6/sound/core/oss/rate.c miscompiled
- * [446]13507 spurious printf format warning
- * [447]13382 Type information for const pointer disappears during
- optimization.
- * [448]13394 noreturn attribute ignored on recursive invokation
- * [449]13400 Compiled code crashes storing to read-only location
- * [450]13521 Endless loop in calculate_global_regs_live
- C++ compiler and library
- Some of the bug fixes in this list were made to implement decisions
- that the ISO C++ standards committee has made concerning several defect
- reports (DRs). Links in the list below point to detailed discussion of
- the relevant defect report.
- * [451]2094 unimplemented: use of `ptrmem_cst' in template type
- unification
- * [452]2294 using declaration confusion
- * [453]5050 template instantiation depth exceeds limit: recursion
- problem?
- * [454]9371 Bad exception handling in
- i/ostream::operator>>/<<(streambuf*)
- * [455]9546 bad exception handling in ostream members
- * [456]10081 basic_ios::_M_cache_locale leaves NULL members in the
- face of unknown locales
- * [457]10093 [458][DR 61] Setting failbit in exceptions doesn't work
- * [459]10095 istream::operator>>(int&) sets ios::badbit when
- ios::failbit is set.
- * [460]11554 Warning about reordering of initializers doesn't mention
- location of constructor
- * [461]12297 istream::sentry::sentry() handles eof() incorrectly.
- * [462]12352 Exception safety problems in src/localename.cc
- * [463]12438 Memory leak in locale::combine()
- * [464]12540 Memory leak in locale::locale(const char*)
- * [465]12594 DRs [466]60 [TC] and [467]63 [TC] not implemented
- * [468]12657 Resolution of [469]DR 292 (WP) still unimplemented
- * [470]12696 memory eating infinite loop in diagnostics (error
- recovery problem)
- * [471]12815 Code compiled with optimization behaves unexpectedly
- * [472]12862 Conflicts between typedefs/enums and namespace member
- declarations
- * [473]12926 Wrong value after assignment in initialize list using
- bit-fields
- * [474]12967 Resolution of [475]DR 300 [WP] still unimplemented
- * [476]12971 Resolution of [477]DR 328 [WP] still unimplemented
- * [478]13007 basic_streambuf::pubimbue, imbue wrong
- * [479]13009 Implicitly-defined assignment operator writes to wrong
- memory
- * [480]13057 regparm attribute not applied to destructor
- * [481]13070 -Wformat option ignored in g++
- * [482]13081 forward template declarations in <complex> let inlining
- fail
- * [483]13239 Assertion does not seem to work correctly anymore
- * [484]13262 "xxx is private within this context" when initializing a
- self-contained template class
- * [485]13290 simple typo in concept checking for std::generate_n
- * [486]13323 Template code does not compile in presence of typedef
- * [487]13369 __verify_grouping (and __add_grouping?) not correct
- * [488]13371 infinite loop with packed struct and inlining
- * [489]13445 Template argument replacement "dereferences" a typedef
- * [490]13461 Fails to access protected-ctor from public constant
- * [491]13462 Non-standard-conforming type set::pointer
- * [492]13478 gcc uses wrong constructor to initialize a const
- reference
- * [493]13544 "conflicting types" for enums in different scopes
- * [494]13650 string::compare should not (always) use
- traits_type::length()
- * [495]13683 bogus warning about passing non-PODs through ellipsis
- * [496]13688 Derived class is denied access to protected base class
- member class
- * [497]13774 Member variable cleared in virtual multiple inheritance
- class
- * [498]13884 Protect sstream.tcc from extern template use
- Java compiler and library
- * [499]10746 [win32] garbage collection crash in GCJ
- Objective-C compiler and library
- * [500]11433 Crash due to dereferencing null pointer when querying
- protocol
- Fortran compiler and library
- * [501]12633 logical expression gives incorrect result with
- -fugly-logint option
- * [502]13037 [gcse-lm] g77 generates incorrect code
- * [503]13213 Hex constant problem when compiling with -fugly-logint
- and -ftypeless-boz
- x86-specific (Intel/AMD)
- * [504]4490 ICE with -m128bit-long-double
- * [505]12292 [x86_64] ICE: RTL check: expected code `const_int', have
- `reg' in make_field_assignment, in combine.c
- * [506]12441 ICE: can't find a register to spill
- * [507]12943 array static-init failure under -fpic, -fPIC
- * [508]13608 Incorrect code with -O3 -ffast-math
- PowerPC-specific
- * [509]11598 testcase gcc.dg/20020118-1.c fails runtime check of
- __attribute__((aligned(16)))
- * [510]11793 ICE in extract_insn, in recog.c (const_vector's)
- * [511]12467 vmsumubm emitted when vmsummbm appropriate (typo in
- altivec.md)
- * [512]12537 g++ generates writeable text sections
- SPARC-specific
- * [513]12496 wrong result for __atomic_add(&value, -1) when using -O0
- -m64
- * [514]12865 mprotect call to make trampoline executable may fail
- * [515]13354 ICE in sparc_emit_set_const32
- ARM-specific
- * [516]10467 [arm] ICE in pre_insert_copy_insn,
- ia64-specific
- * [517]11226 ICE passing struct arg with two floats
- * [518]11227 ICE for _Complex float, _Complex long double args
- * [519]12644 GCC 3.3.2 fails to compile glibc on ia64
- * [520]13149 build gcc-3.3.2 1305 error:unrecognizable insn
- * Various fixes for libunwind
- Alpha-specific
- * [521]12654 Incorrect comparison code generated for Alpha
- * [522]12965 SEGV+ICE in cc1plus on alpha-linux with -O2
- * [523]13031 ICE (unrecognizable insn) when building gnome-libs-1.4.2
- HPPA-specific
- * [524]11634 [hppa] ICE in verify_local_live_at_start, in flow.c
- * [525]12158 [hppa] compilation does not terminate at -O1
- S390-specific
- * [526]11992 Wrong built-in code for memcmp with length 1<<24: only
- (1<<24)-1 possible for CLCL-Instruction
- SH-specific
- * [527]9365 segfault in gen_far_branch (config/sh/sh.c)
- * [528]10392 optimizer generates faulty array indexing
- * [529]11322 SH profiler outputs multiple definitions of symbol
- * [530]13069 gcc/config/sh/rtems.h broken
- * [531]13302 Putting a va_list in a struct causes seg fault
- * [532]13585 Incorrect optimization of call to sfunc
- * Fix inappropriately exported libgcc functions from the shared
- library
- Other embedded target specific
- * [533]8916 [mcore] unsigned char assign gets hosed.
- * [534]11576 [h8300] ICE in change_address_1, in emit-rtl.c
- * [535]13122 [h8300] local variable gets corrupted by function call
- when -fomit-frame-pointer is given
- * [536]13256 [cris] strict_low_part mistreated in delay slots
- * [537]13373 [mcore] optimization with -frerun-cse-after-loop
- -fexpensive-optimizations produces wrong code on mcore
- GNU HURD-specific
- * [538]12561 gcc/config/t-gnu needs updating to work with
- --with-sysroot
- Tru64 Unix specific
- * [539]6243 testsuite fails almost all tests due to no libintl in
- LD_LIBRARY_PATH during test.
- * [540]11397 weak aliases broken on Tru64 UNIX
- AIX-specific
- * [541]12505 build failure due to defines of uchar in cpphash.h and
- sys/types.h
- * [542]13150 WEAK symbols not exported by collect2
- IRIX-specific
- * [543]12666 fixincludes problem on IRIX 6.5.19m
- Solaris-specific
- * [544]12969 Including sys/byteorder.h breaks configure checks
- Testsuite problems (compiler is not affected)
- * [545]10819 testsuite creates CR+LF on compiler version lines in
- test summary files
- * [546]11612 abi_check not finding correct libgcc_s.so.1
- Miscellaneous
- * [547]13211 using -###, incorrect warnings about unused linker file
- are produced
- __________________________________________________________________
- GCC 3.3.4
- This is the [548]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.3.4 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- __________________________________________________________________
- GCC 3.3.5
- This is the [549]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.3.5 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- __________________________________________________________________
- GCC 3.3.6
- This is the [550]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.3.6 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here).
- For questions related to the use of GCC, please consult these web
- pages and the [551]GCC manuals. If that fails, the
- [552]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [553]gcc@gcc.gnu.org. All of [554]our lists have public
- archives.
- Copyright (C) [555]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [556]maintained by the GCC team. Last modified
- 2014-06-28[557].
- References
- 1. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
- 2. http://gcc.gnu.org/gcc-3.1/changes.html#obsolete_systems
- 3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
- 4. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute
- 5. http://gcc.gnu.org/news/dfa.html
- 6. http://gcc.gnu.org/c99status.html
- 7. https://gcc.gnu.org/onlinedocs/gcc-3.3.6/g77/News.html
- 8. https://gcc.gnu.org/PR10140
- 9. https://gcc.gnu.org/PR10198
- 10. https://gcc.gnu.org/PR10338
- 11. https://gcc.gnu.org/PR3581
- 12. https://gcc.gnu.org/PR4382
- 13. https://gcc.gnu.org/PR5533
- 14. https://gcc.gnu.org/PR6387
- 15. https://gcc.gnu.org/PR6412
- 16. https://gcc.gnu.org/PR6620
- 17. https://gcc.gnu.org/PR6663
- 18. https://gcc.gnu.org/PR7068
- 19. https://gcc.gnu.org/PR7083
- 20. https://gcc.gnu.org/PR7647
- 21. https://gcc.gnu.org/PR7675
- 22. https://gcc.gnu.org/PR7718
- 23. https://gcc.gnu.org/PR8116
- 24. https://gcc.gnu.org/PR8358
- 25. https://gcc.gnu.org/PR8511
- 26. https://gcc.gnu.org/PR8564
- 27. https://gcc.gnu.org/PR8660
- 28. https://gcc.gnu.org/PR8766
- 29. https://gcc.gnu.org/PR8803
- 30. https://gcc.gnu.org/PR8846
- 31. https://gcc.gnu.org/PR8906
- 32. https://gcc.gnu.org/PR9216
- 33. https://gcc.gnu.org/PR9261
- 34. https://gcc.gnu.org/PR9263
- 35. https://gcc.gnu.org/PR9429
- 36. https://gcc.gnu.org/PR9516
- 37. https://gcc.gnu.org/PR9600
- 38. https://gcc.gnu.org/PR9629
- 39. https://gcc.gnu.org/PR9672
- 40. https://gcc.gnu.org/PR9749
- 41. https://gcc.gnu.org/PR9794
- 42. https://gcc.gnu.org/PR9829
- 43. https://gcc.gnu.org/PR9916
- 44. https://gcc.gnu.org/PR9936
- 45. https://gcc.gnu.org/PR10262
- 46. https://gcc.gnu.org/PR10278
- 47. https://gcc.gnu.org/PR10446
- 48. https://gcc.gnu.org/PR10451
- 49. https://gcc.gnu.org/PR10506
- 50. https://gcc.gnu.org/PR10549
- 51. https://gcc.gnu.org/PR2001
- 52. https://gcc.gnu.org/PR2391
- 53. https://gcc.gnu.org/PR2960
- 54. https://gcc.gnu.org/PR4046
- 55. https://gcc.gnu.org/PR6405
- 56. https://gcc.gnu.org/PR6798
- 57. https://gcc.gnu.org/PR6871
- 58. https://gcc.gnu.org/PR6909
- 59. https://gcc.gnu.org/PR7189
- 60. https://gcc.gnu.org/PR7642
- 61. https://gcc.gnu.org/PR8634
- 62. https://gcc.gnu.org/PR8750
- 63. https://gcc.gnu.org/PR2161
- 64. https://gcc.gnu.org/PR4319
- 65. https://gcc.gnu.org/PR8602
- 66. https://gcc.gnu.org/PR9177
- 67. https://gcc.gnu.org/PR9853
- 68. https://gcc.gnu.org/PR45
- 69. https://gcc.gnu.org/PR3784
- 70. https://gcc.gnu.org/PR764
- 71. https://gcc.gnu.org/PR5116
- 72. https://gcc.gnu.org/PR2862
- 73. https://gcc.gnu.org/PR3663
- 74. https://gcc.gnu.org/PR3797
- 75. https://gcc.gnu.org/PR3948
- 76. https://gcc.gnu.org/PR4137
- 77. https://gcc.gnu.org/PR4361
- 78. https://gcc.gnu.org/PR4802
- 79. https://gcc.gnu.org/PR5837
- 80. https://gcc.gnu.org/PR4803
- 81. https://gcc.gnu.org/PR5094
- 82. https://gcc.gnu.org/PR5730
- 83. https://gcc.gnu.org/PR6713
- 84. https://gcc.gnu.org/PR7015
- 85. https://gcc.gnu.org/PR7086
- 86. https://gcc.gnu.org/PR7099
- 87. https://gcc.gnu.org/PR7247
- 88. https://gcc.gnu.org/PR7441
- 89. https://gcc.gnu.org/PR7768
- 90. https://gcc.gnu.org/PR7804
- 91. https://gcc.gnu.org/PR8099
- 92. https://gcc.gnu.org/PR8117
- 93. https://gcc.gnu.org/PR8205
- 94. https://gcc.gnu.org/PR8645
- 95. https://gcc.gnu.org/PR8724
- 96. https://gcc.gnu.org/PR8805
- 97. https://gcc.gnu.org/PR8691
- 98. https://gcc.gnu.org/PR8700
- 99. https://gcc.gnu.org/PR8724
- 100. https://gcc.gnu.org/PR8949
- 101. https://gcc.gnu.org/PR9016
- 102. https://gcc.gnu.org/PR9053
- 103. https://gcc.gnu.org/PR9152
- 104. https://gcc.gnu.org/PR9182
- 105. https://gcc.gnu.org/PR9297
- 106. https://gcc.gnu.org/PR9318
- 107. https://gcc.gnu.org/PR9320
- 108. https://gcc.gnu.org/PR9400
- 109. https://gcc.gnu.org/PR9424
- 110. https://gcc.gnu.org/PR9425
- 111. https://gcc.gnu.org/PR9439
- 112. https://gcc.gnu.org/PR9474
- 113. https://gcc.gnu.org/PR9548
- 114. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#231
- 115. https://gcc.gnu.org/PR9555
- 116. https://gcc.gnu.org/PR9561
- 117. https://gcc.gnu.org/PR9563
- 118. https://gcc.gnu.org/PR9582
- 119. https://gcc.gnu.org/PR9622
- 120. https://gcc.gnu.org/PR9683
- 121. https://gcc.gnu.org/PR9791
- 122. https://gcc.gnu.org/PR9817
- 123. https://gcc.gnu.org/PR9825
- 124. https://gcc.gnu.org/PR9826
- 125. https://gcc.gnu.org/PR9924
- 126. https://gcc.gnu.org/PR9946
- 127. https://gcc.gnu.org/PR9964
- 128. https://gcc.gnu.org/PR9988
- 129. https://gcc.gnu.org/PR10033
- 130. https://gcc.gnu.org/PR10097
- 131. https://gcc.gnu.org/PR10132
- 132. https://gcc.gnu.org/PR10180
- 133. https://gcc.gnu.org/PR10199
- 134. https://gcc.gnu.org/PR10300
- 135. https://gcc.gnu.org/PR10427
- 136. https://gcc.gnu.org/PR10503
- 137. https://gcc.gnu.org/PR5956
- 138. https://gcc.gnu.org/PR1832
- 139. https://gcc.gnu.org/PR3924
- 140. https://gcc.gnu.org/PR5634
- 141. https://gcc.gnu.org/PR6367
- 142. https://gcc.gnu.org/PR6491
- 143. https://gcc.gnu.org/PR6742
- 144. https://gcc.gnu.org/PR7113
- 145. https://gcc.gnu.org/PR7236
- 146. https://gcc.gnu.org/PR7278
- 147. https://gcc.gnu.org/PR7384
- 148. https://gcc.gnu.org/PR7388
- 149. https://gcc.gnu.org/PR8587
- 150. https://gcc.gnu.org/PR9038
- 151. https://gcc.gnu.org/PR10197
- 152. https://gcc.gnu.org/PR6005
- 153. https://gcc.gnu.org/PR6389
- 154. https://gcc.gnu.org/PR6576
- 155. https://gcc.gnu.org/PR6652
- 156. https://gcc.gnu.org/PR7060
- 157. https://gcc.gnu.org/PR7073
- 158. https://gcc.gnu.org/PR7180
- 159. https://gcc.gnu.org/PR7416
- 160. https://gcc.gnu.org/PR7570
- 161. https://gcc.gnu.org/PR7578
- 162. https://gcc.gnu.org/PR7611
- 163. https://gcc.gnu.org/PR7709
- 164. https://gcc.gnu.org/PR7766
- 165. https://gcc.gnu.org/PR7785
- 166. https://gcc.gnu.org/PR7786
- 167. https://gcc.gnu.org/PR8142
- 168. https://gcc.gnu.org/PR8234
- 169. https://gcc.gnu.org/PR8415
- 170. https://gcc.gnu.org/PR8481
- 171. https://gcc.gnu.org/PR8593
- 172. https://gcc.gnu.org/PR8759
- 173. https://gcc.gnu.org/PR8997
- 174. https://gcc.gnu.org/PR9253
- 175. https://gcc.gnu.org/PR9254
- 176. https://gcc.gnu.org/PR9271
- 177. https://gcc.gnu.org/PR6767
- 178. https://gcc.gnu.org/PR9911
- 179. https://gcc.gnu.org/PR10020
- 180. https://gcc.gnu.org/PR10546
- 181. https://gcc.gnu.org/PR7029
- 182. https://gcc.gnu.org/PR2903
- 183. https://gcc.gnu.org/PR7873
- 184. https://gcc.gnu.org/PR7680
- 185. https://gcc.gnu.org/PR8705
- 186. https://gcc.gnu.org/PR9986
- 187. https://gcc.gnu.org/PR10056
- 188. https://gcc.gnu.org/PR6744
- 189. https://gcc.gnu.org/PR7361
- 190. https://gcc.gnu.org/PR9496
- 191. https://gcc.gnu.org/PR7067
- 192. https://gcc.gnu.org/PR8480
- 193. https://gcc.gnu.org/PR8784
- 194. https://gcc.gnu.org/PR10315
- 195. https://gcc.gnu.org/PR10267
- 196. https://gcc.gnu.org/PR7916
- 197. https://gcc.gnu.org/PR7926
- 198. https://gcc.gnu.org/PR8555
- 199. https://gcc.gnu.org/PR8994
- 200. https://gcc.gnu.org/PR9426
- 201. https://gcc.gnu.org/PR9806
- 202. https://gcc.gnu.org/PR10077
- 203. https://gcc.gnu.org/PR10233
- 204. https://gcc.gnu.org/PR10286
- 205. https://gcc.gnu.org/PR10308
- 206. https://gcc.gnu.org/PR11272
- 207. https://gcc.gnu.org/PR5754
- 208. https://gcc.gnu.org/PR6597
- 209. https://gcc.gnu.org/PR6949
- 210. https://gcc.gnu.org/PR7053
- 211. https://gcc.gnu.org/PR8164
- 212. https://gcc.gnu.org/PR8384
- 213. https://gcc.gnu.org/PR9559
- 214. https://gcc.gnu.org/PR9649
- 215. https://gcc.gnu.org/PR9864
- 216. https://gcc.gnu.org/PR10432
- 217. https://gcc.gnu.org/PR10475
- 218. https://gcc.gnu.org/PR10635
- 219. https://gcc.gnu.org/PR10661
- 220. https://gcc.gnu.org/PR10700
- 221. https://gcc.gnu.org/PR10712
- 222. https://gcc.gnu.org/PR10796
- 223. https://gcc.gnu.org/PR10890
- 224. https://gcc.gnu.org/PR10939
- 225. https://gcc.gnu.org/PR10956
- 226. https://gcc.gnu.org/PR11041
- 227. https://gcc.gnu.org/PR11059
- 228. https://gcc.gnu.org/PR11083
- 229. https://gcc.gnu.org/PR11105
- 230. https://gcc.gnu.org/PR11149
- 231. https://gcc.gnu.org/PR11228
- 232. https://gcc.gnu.org/PR11282
- 233. https://gcc.gnu.org/PR11301
- 234. https://gcc.gnu.org/PR11308
- 235. https://gcc.gnu.org/PR11473
- 236. https://gcc.gnu.org/PR11503
- 237. https://gcc.gnu.org/PR11513
- 238. https://gcc.gnu.org/PR11198
- 239. https://gcc.gnu.org/PR11304
- 240. https://gcc.gnu.org/PR11381
- 241. https://gcc.gnu.org/PR11536
- 242. https://gcc.gnu.org/PR11557
- 243. https://gcc.gnu.org/PR5897
- 244. https://gcc.gnu.org/PR11279
- 245. https://gcc.gnu.org/PR11022
- 246. https://gcc.gnu.org/PR2330
- 247. https://gcc.gnu.org/PR5388
- 248. https://gcc.gnu.org/PR5390
- 249. https://gcc.gnu.org/PR7877
- 250. https://gcc.gnu.org/PR9393
- 251. https://gcc.gnu.org/PR10032
- 252. https://gcc.gnu.org/PR10468
- 253. https://gcc.gnu.org/PR10527
- 254. https://gcc.gnu.org/PR10679
- 255. https://gcc.gnu.org/PR10682
- 256. https://gcc.gnu.org/PR10689
- 257. https://gcc.gnu.org/PR10845
- 258. https://gcc.gnu.org/PR10849
- 259. https://gcc.gnu.org/PR10888
- 260. https://gcc.gnu.org/PR10929
- 261. https://gcc.gnu.org/PR10931
- 262. https://gcc.gnu.org/PR10940
- 263. https://gcc.gnu.org/PR10968
- 264. https://gcc.gnu.org/PR10990
- 265. https://gcc.gnu.org/PR11039
- 266. https://gcc.gnu.org/PR11062
- 267. https://gcc.gnu.org/PR11095
- 268. https://gcc.gnu.org/PR11098
- 269. https://gcc.gnu.org/PR11137
- 270. https://gcc.gnu.org/PR11154
- 271. https://gcc.gnu.org/PR11329
- 272. https://gcc.gnu.org/PR11332
- 273. https://gcc.gnu.org/PR11431
- 274. https://gcc.gnu.org/PR11528
- 275. https://gcc.gnu.org/PR11546
- 276. https://gcc.gnu.org/PR11567
- 277. https://gcc.gnu.org/PR11645
- 278. https://gcc.gnu.org/PR5179
- 279. https://gcc.gnu.org/PR8204
- 280. https://gcc.gnu.org/PR10838
- 281. https://gcc.gnu.org/PR10886
- 282. https://gcc.gnu.org/PR11349
- 283. https://gcc.gnu.org/PR4823
- 284. https://gcc.gnu.org/PR8878
- 285. https://gcc.gnu.org/PR9815
- 286. https://gcc.gnu.org/PR10402
- 287. https://gcc.gnu.org/PR10504
- 288. https://gcc.gnu.org/PR10673
- 289. https://gcc.gnu.org/PR11044
- 290. https://gcc.gnu.org/PR11089
- 291. https://gcc.gnu.org/PR11420
- 292. https://gcc.gnu.org/PR9362
- 293. https://gcc.gnu.org/PR10142
- 294. https://gcc.gnu.org/PR10663
- 295. https://gcc.gnu.org/PR10835
- 296. https://gcc.gnu.org/PR10876
- 297. https://gcc.gnu.org/PR10955
- 298. https://gcc.gnu.org/PR11018
- 299. https://gcc.gnu.org/PR11556
- 300. https://gcc.gnu.org/PR10907
- 301. https://gcc.gnu.org/PR11320
- 302. https://gcc.gnu.org/PR11599
- 303. https://gcc.gnu.org/PR9745
- 304. https://gcc.gnu.org/PR10871
- 305. https://gcc.gnu.org/PR11440
- 306. https://gcc.gnu.org/PR7594
- 307. https://gcc.gnu.org/PR10557
- 308. https://gcc.gnu.org/PR11054
- 309. https://gcc.gnu.org/PR10834
- 310. https://gcc.gnu.org/PR10842
- 311. https://gcc.gnu.org/PR11052
- 312. https://gcc.gnu.org/PR11183
- 313. https://gcc.gnu.org/PR11084
- 314. https://gcc.gnu.org/PR10331
- 315. https://gcc.gnu.org/PR10413
- 316. https://gcc.gnu.org/PR11096
- 317. https://gcc.gnu.org/PR2873
- 318. https://gcc.gnu.org/PR3163
- 319. https://gcc.gnu.org/PR5287
- 320. https://gcc.gnu.org/PR10148
- 321. https://gcc.gnu.org/PR8787
- 322. https://gcc.gnu.org/PR10900
- 323. https://gcc.gnu.org/PR1607
- 324. https://gcc.gnu.org/PR4252
- 325. https://gcc.gnu.org/PR4490
- 326. https://gcc.gnu.org/PR10355
- 327. https://gcc.gnu.org/PR10726
- 328. https://gcc.gnu.org/PR10805
- 329. https://gcc.gnu.org/PR10815
- 330. https://gcc.gnu.org/PR10877
- 331. https://gcc.gnu.org/PR11280
- 332. https://gcc.gnu.org/PR11466
- 333. https://gcc.gnu.org/PR10737
- 334. https://gcc.gnu.org/PR10810
- 335. https://gcc.gnu.org/PR8336
- 336. https://gcc.gnu.org/PR9330
- 337. https://gcc.gnu.org/PR9631
- 338. https://gcc.gnu.org/PR9877
- 339. https://gcc.gnu.org/PR11687
- 340. https://gcc.gnu.org/PR12263
- 341. https://gcc.gnu.org/PR12490
- 342. https://gcc.gnu.org/PR7277
- 343. https://gcc.gnu.org/PR7939
- 344. https://gcc.gnu.org/PR11063
- 345. https://gcc.gnu.org/PR11207
- 346. https://gcc.gnu.org/PR11522
- 347. https://gcc.gnu.org/PR11595
- 348. https://gcc.gnu.org/PR11646
- 349. https://gcc.gnu.org/PR11665
- 350. https://gcc.gnu.org/PR11852
- 351. https://gcc.gnu.org/PR11878
- 352. https://gcc.gnu.org/PR11883
- 353. https://gcc.gnu.org/PR11991
- 354. https://gcc.gnu.org/PR12146
- 355. https://gcc.gnu.org/PR12215
- 356. https://gcc.gnu.org/PR12369
- 357. https://gcc.gnu.org/PR12446
- 358. https://gcc.gnu.org/PR12510
- 359. https://gcc.gnu.org/PR12544
- 360. https://gcc.gnu.org/PR9862
- 361. https://gcc.gnu.org/PR10962
- 362. https://gcc.gnu.org/PR11370
- 363. https://gcc.gnu.org/PR11637
- 364. https://gcc.gnu.org/PR11885
- 365. https://gcc.gnu.org/PR12082
- 366. https://gcc.gnu.org/PR12180
- 367. https://gcc.gnu.org/PR12340
- 368. https://gcc.gnu.org/PR3907
- 369. https://gcc.gnu.org/PR5293
- 370. https://gcc.gnu.org/PR5296
- 371. https://gcc.gnu.org/PR7939
- 372. https://gcc.gnu.org/PR8656
- 373. https://gcc.gnu.org/PR10147
- 374. https://gcc.gnu.org/PR11400
- 375. https://gcc.gnu.org/PR11409
- 376. https://gcc.gnu.org/PR11740
- 377. https://gcc.gnu.org/PR11786
- 378. https://gcc.gnu.org/PR11867
- 379. https://gcc.gnu.org/PR11928
- 380. https://gcc.gnu.org/PR12114
- 381. https://gcc.gnu.org/PR12163
- 382. https://gcc.gnu.org/PR12181
- 383. https://gcc.gnu.org/PR12236
- 384. https://gcc.gnu.org/PR12266
- 385. https://gcc.gnu.org/PR12296
- 386. https://gcc.gnu.org/PR12298
- 387. https://gcc.gnu.org/PR12369
- 388. https://gcc.gnu.org/PR12337
- 389. https://gcc.gnu.org/PR12344
- 390. https://gcc.gnu.org/PR12451
- 391. https://gcc.gnu.org/PR12486
- 392. https://gcc.gnu.org/PR8869
- 393. https://gcc.gnu.org/PR9786
- 394. https://gcc.gnu.org/PR11689
- 395. https://gcc.gnu.org/PR12116
- 396. https://gcc.gnu.org/PR12070
- 397. https://gcc.gnu.org/PR11184
- 398. https://gcc.gnu.org/PR11535
- 399. https://gcc.gnu.org/PR11693
- 400. https://gcc.gnu.org/PR12224
- 401. https://gcc.gnu.org/PR11087
- 402. https://gcc.gnu.org/PR11319
- 403. https://gcc.gnu.org/PR11949
- 404. https://gcc.gnu.org/PR11662
- 405. https://gcc.gnu.org/PR11965
- 406. https://gcc.gnu.org/PR12301
- 407. https://gcc.gnu.org/PR11717
- 408. https://gcc.gnu.org/PR11313
- 409. https://gcc.gnu.org/PR11712
- 410. https://gcc.gnu.org/PR12166
- 411. https://gcc.gnu.org/PR12101
- 412. https://gcc.gnu.org/PR10988
- 413. https://gcc.gnu.org/PR11805
- 414. https://gcc.gnu.org/PR11902
- 415. https://gcc.gnu.org/PR11903
- 416. https://gcc.gnu.org/PR11890
- 417. https://gcc.gnu.org/PR12399
- 418. https://gcc.gnu.org/PR13068
- 419. https://gcc.gnu.org/PR10060
- 420. https://gcc.gnu.org/PR10555
- 421. https://gcc.gnu.org/PR10706
- 422. https://gcc.gnu.org/PR11496
- 423. https://gcc.gnu.org/PR11741
- 424. https://gcc.gnu.org/PR12440
- 425. https://gcc.gnu.org/PR12632
- 426. https://gcc.gnu.org/PR12712
- 427. https://gcc.gnu.org/PR12726
- 428. https://gcc.gnu.org/PR12890
- 429. https://gcc.gnu.org/PR12900
- 430. https://gcc.gnu.org/PR13060
- 431. https://gcc.gnu.org/PR13289
- 432. https://gcc.gnu.org/PR13318
- 433. https://gcc.gnu.org/PR13392
- 434. https://gcc.gnu.org/PR13574
- 435. https://gcc.gnu.org/PR13475
- 436. https://gcc.gnu.org/PR13797
- 437. https://gcc.gnu.org/PR13824
- 438. https://gcc.gnu.org/PR8776
- 439. https://gcc.gnu.org/PR10339
- 440. https://gcc.gnu.org/PR11350
- 441. https://gcc.gnu.org/PR12826
- 442. https://gcc.gnu.org/PR12500
- 443. https://gcc.gnu.org/PR12941
- 444. https://gcc.gnu.org/PR12953
- 445. https://gcc.gnu.org/PR13041
- 446. https://gcc.gnu.org/PR13507
- 447. https://gcc.gnu.org/PR13382
- 448. https://gcc.gnu.org/PR13394
- 449. https://gcc.gnu.org/PR13400
- 450. https://gcc.gnu.org/PR13521
- 451. https://gcc.gnu.org/PR2094
- 452. https://gcc.gnu.org/PR2294
- 453. https://gcc.gnu.org/PR5050
- 454. https://gcc.gnu.org/PR9371
- 455. https://gcc.gnu.org/PR9546
- 456. https://gcc.gnu.org/PR10081
- 457. https://gcc.gnu.org/PR10093
- 458. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#61
- 459. https://gcc.gnu.org/PR10095
- 460. https://gcc.gnu.org/PR11554
- 461. https://gcc.gnu.org/PR12297
- 462. https://gcc.gnu.org/PR12352
- 463. https://gcc.gnu.org/PR12438
- 464. https://gcc.gnu.org/PR12540
- 465. https://gcc.gnu.org/PR12594
- 466. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#60
- 467. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#63
- 468. https://gcc.gnu.org/PR12657
- 469. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292
- 470. https://gcc.gnu.org/PR12696
- 471. https://gcc.gnu.org/PR12815
- 472. https://gcc.gnu.org/PR12862
- 473. https://gcc.gnu.org/PR12926
- 474. https://gcc.gnu.org/PR12967
- 475. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html
- 476. https://gcc.gnu.org/PR12971
- 477. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#328
- 478. https://gcc.gnu.org/PR13007
- 479. https://gcc.gnu.org/PR13009
- 480. https://gcc.gnu.org/PR13057
- 481. https://gcc.gnu.org/PR13070
- 482. https://gcc.gnu.org/PR13081
- 483. https://gcc.gnu.org/PR13239
- 484. https://gcc.gnu.org/PR13262
- 485. https://gcc.gnu.org/PR13290
- 486. https://gcc.gnu.org/PR13323
- 487. https://gcc.gnu.org/PR13369
- 488. https://gcc.gnu.org/PR13371
- 489. https://gcc.gnu.org/PR13445
- 490. https://gcc.gnu.org/PR13461
- 491. https://gcc.gnu.org/PR13462
- 492. https://gcc.gnu.org/PR13478
- 493. https://gcc.gnu.org/PR13544
- 494. https://gcc.gnu.org/PR13650
- 495. https://gcc.gnu.org/PR13683
- 496. https://gcc.gnu.org/PR13688
- 497. https://gcc.gnu.org/PR13774
- 498. https://gcc.gnu.org/PR13884
- 499. https://gcc.gnu.org/PR10746
- 500. https://gcc.gnu.org/PR11433
- 501. https://gcc.gnu.org/PR12633
- 502. https://gcc.gnu.org/PR13037
- 503. https://gcc.gnu.org/PR13213
- 504. https://gcc.gnu.org/PR4490
- 505. https://gcc.gnu.org/PR12292
- 506. https://gcc.gnu.org/PR12441
- 507. https://gcc.gnu.org/PR12943
- 508. https://gcc.gnu.org/PR13608
- 509. https://gcc.gnu.org/PR11598
- 510. https://gcc.gnu.org/PR11793
- 511. https://gcc.gnu.org/PR12467
- 512. https://gcc.gnu.org/PR12537
- 513. https://gcc.gnu.org/PR12496
- 514. https://gcc.gnu.org/PR12865
- 515. https://gcc.gnu.org/PR13354
- 516. https://gcc.gnu.org/PR10467
- 517. https://gcc.gnu.org/PR11226
- 518. https://gcc.gnu.org/PR11227
- 519. https://gcc.gnu.org/PR12644
- 520. https://gcc.gnu.org/PR13149
- 521. https://gcc.gnu.org/PR12654
- 522. https://gcc.gnu.org/PR12965
- 523. https://gcc.gnu.org/PR13031
- 524. https://gcc.gnu.org/PR11634
- 525. https://gcc.gnu.org/PR12158
- 526. https://gcc.gnu.org/PR11992
- 527. https://gcc.gnu.org/PR9365
- 528. https://gcc.gnu.org/PR10392
- 529. https://gcc.gnu.org/PR11322
- 530. https://gcc.gnu.org/PR13069
- 531. https://gcc.gnu.org/PR13302
- 532. https://gcc.gnu.org/PR13585
- 533. https://gcc.gnu.org/PR8916
- 534. https://gcc.gnu.org/PR11576
- 535. https://gcc.gnu.org/PR13122
- 536. https://gcc.gnu.org/PR13256
- 537. https://gcc.gnu.org/PR13373
- 538. https://gcc.gnu.org/PR12561
- 539. https://gcc.gnu.org/PR6243
- 540. https://gcc.gnu.org/PR11397
- 541. https://gcc.gnu.org/PR12505
- 542. https://gcc.gnu.org/PR13150
- 543. https://gcc.gnu.org/PR12666
- 544. https://gcc.gnu.org/PR12969
- 545. https://gcc.gnu.org/PR10819
- 546. https://gcc.gnu.org/PR11612
- 547. https://gcc.gnu.org/PR13211
- 548. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.4
- 549. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.5
- 550. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.6
- 551. https://gcc.gnu.org/onlinedocs/
- 552. mailto:gcc-help@gcc.gnu.org
- 553. mailto:gcc@gcc.gnu.org
- 554. https://gcc.gnu.org/lists.html
- 555. http://www.fsf.org/
- 556. https://gcc.gnu.org/about.html
- 557. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.2/index.html
- GCC 3.2 Release Series
- April 25, 2003
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.2.3.
- The purpose of the GCC 3.2 release series is to provide a stable
- platform for OS distributors to use building their next releases. A
- primary objective was to stabilize the C++ ABI; we believe that the
- interface to the compiler and the C++ standard library are now
- relatively stable.
- Be aware that C++ code compiled by GCC 3.2.x will (in general) not
- interoperate with code compiled by GCC 3.1.1 or earlier.
- Please refer to our [2]detailed list of news, caveats, and bug-fixes
- for further information.
- Release History
- GCC 3.2.3
- April 25, 2003 ([3]changes)
- GCC 3.2.2
- February 5, 2003 ([4]changes)
- GCC 3.2.1
- November 19, 2002 ([5]changes)
- GCC 3.2
- August 14, 2002 ([6]changes)
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [7]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes as
- well as test results to GCC. This [8]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [9]GCC project
- web site or contact the [10]GCC development mailing list.
- To obtain GCC please use [11]our mirror sites, or our CVS server.
- For questions related to the use of GCC, please consult these web
- pages and the [12]GCC manuals. If that fails, the
- [13]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [14]gcc@gcc.gnu.org. All of [15]our lists have public
- archives.
- Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [17]maintained by the GCC team. Last modified
- 2014-06-28[18].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-3.2/changes.html
- 3. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
- 4. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.2
- 5. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.1
- 6. http://gcc.gnu.org/gcc-3.2/changes.html#3.2
- 7. http://gcc.gnu.org/gcc-3.2/buildstat.html
- 8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 9. http://gcc.gnu.org/index.html
- 10. mailto:gcc@gcc.gnu.org
- 11. http://gcc.gnu.org/mirrors.html
- 12. https://gcc.gnu.org/onlinedocs/
- 13. mailto:gcc-help@gcc.gnu.org
- 14. mailto:gcc@gcc.gnu.org
- 15. https://gcc.gnu.org/lists.html
- 16. http://www.fsf.org/
- 17. https://gcc.gnu.org/about.html
- 18. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.2/changes.html
- GCC 3.2 Release Series
- Changes, New Features, and Fixes
- The latest release in the 3.2 release series is [1]GCC 3.2.3.
- Caveats and New Features
- Caveats
- * The C++ compiler does not correctly zero-initialize
- pointers-to-data members. You must explicitly initialize them. For
- example: int S::*m(0); will work, but depending on
- default-initialization to zero will not work. This bug cannot be
- fixed in GCC 3.2 without inducing unacceptable risks. It will be
- fixed in GCC 3.3.
- * This GCC release is based on the GCC 3.1 sourcebase, and thus has
- all the [2]changes in the GCC 3.1 series. In addition, GCC 3.2 has
- a number of C++ ABI fixes which make its C++ compiler generate
- binary code which is incompatible with the C++ compilers found in
- earlier GCC releases, including GCC 3.1 and GCC 3.1.1.
- Frontend Enhancements
- C/C++/Objective-C
- * The method of constructing the list of directories to be searched
- for header files has been revised. If a directory named by a -I
- option is a standard system include directory, the option is
- ignored to ensure that the default search order for system
- directories and the special treatment of system header files are
- not defeated.
- * The C and Objective-C compilers no longer accept the "Naming Types"
- extension (typedef foo = bar); it was already unavailable in C++.
- Code which uses it will need to be changed to use the "typeof"
- extension instead: typedef typeof(bar) foo. (We have removed this
- extension without a period of deprecation because it has caused the
- compiler to crash since version 3.0 and no one noticed until very
- recently. Thus we conclude it is not in widespread use.)
- C++
- * GCC 3.2 fixed serveral differences between the C++ ABI implemented
- in GCC and the multi-vendor standard, but more have been found
- since the release. 3.2.1 adds a new warning, -Wabi, to warn about
- code which is affected by these bugs. We will fix these bugs in
- some future release, once we are confident that all have been
- found; until then, it is our intention to make changes to the ABI
- only if they are necessary for correct compilation of C++, as
- opposed to conformance to the ABI documents.
- * For details on how to build an ABI compliant compiler for GNU/Linux
- systems, check the [3]common C++ ABI page.
- New Targets and Target Specific Improvements
- IA-32
- * Fixed a number of bugs in SSE and MMX intrinsics.
- * Fixed common compiler crashes with SSE instruction set enabled
- (implied by -march=pentium3, pentium4, athlon-xp)
- * __m128 and __m128i is not 128bit aligned when used in structures.
- x86-64
- * A bug whereby the compiler could generate bad code for bzero has
- been fixed.
- * ABI fixes (implying ABI incompatibilities with previous version in
- some corner cases)
- * Fixed prefetch code generation
- __________________________________________________________________
- GCC 3.2.3
- 3.2.3 is a bug fix release only; there are no new features that were
- not present in GCC 3.2.2.
- Bug Fixes
- This section lists the problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.2.3 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here), and some of the titles have been changed to
- make them more clear.
- Internal Compiler Errors (multi-platform)
- * [4]3782: (c++) -quiet -fstats produces a segmentation fault in
- cc1plus
- * [5]6440: (c++) template specializations cause ICE
- * [6]7050: (c++) ICE on: (i ? get_string() : throw)
- * [7]7741: ICE on conflicting types (make_decl_rtl in varasm.c)
- * [8]7982: (c++) ICE due to infinite recursion (using STL set)
- * [9]8068: exceedingly high (infinite) memory usage
- * [10]8178: ICE with __builtin_ffs
- * [11]8396: ICE in copy_to_mode_reg, in explow.c
- * [12]8674: (c++) ICE in cp_expr_size, in cp/cp-lang.c
- * [13]9768: ICE when optimizing inline code at -O2
- * [14]9798: (c++) Infinite recursion (segfault) in
- cp/decl.c:push_using_directive with recursive using directives
- * [15]9799: mismatching structure initializer with nested flexible
- array member: ICE
- * [16]9928: ICE on duplicate enum declaration
- * [17]10114: ICE in mem_loc_descriptor, in dwarf2out.c (affects
- sparc, alpha)
- * [18]10352: ICE in find_reloads_toplev
- * [19]10336: ICE with -Wunreachable-code
- C/optimizer bugs:
- * [20]8224: Incorrect joining of signed and unsigned division
- * [21]8613: -O2 produces wrong code with builtin strlen and
- postincrements
- * [22]8828: gcc reports some code is unreachable when it is not
- * [23]9226: GCSE breaking argument passing
- * [24]9853: miscompilation of non-constant structure initializer
- * [25]9797: C99-style struct initializers are miscompiled
- * [26]9967: Some standard C function calls should not be replaced
- when optimizing for size
- * [27]10116: ce2: invalid merge of join_bb in the context of switch
- statements
- * [28]10171: wrong code for inlined function
- * [29]10175: -Wunreachable-code doesn't work for single lines
- C++ compiler and library:
- * [30]8316: Confusing diagnostic for code that misuses conversion
- operators
- * [31]9169: filebuf output fails if codecvt<>::out returns noconv
- * [32]9420: incomplete type incorrectly reported
- * [33]9459: typeof in return type specification of template not
- supported
- * [34]9507: filebuf::open handles ios_base::ate incorrectly
- * [35]9538: Out-of-bounds memory access in streambuf::sputbackc
- * [36]9602: Total confusion about template/friend/virtual/abstract
- * [37]9993: destructor not called for local object created within and
- returned from infinite loop
- * [38]10167: ieee_1003.1-2001 locale specialisations on a glibc-2.3.2
- system
- Java compiler and library:
- * [39]9652: libgcj build fails on irix6.5.1[78]
- * [40]10144: gas on solaris complains about bad .stabs lines for
- java, native as unaffected
- x86-specific (Intel/AMD):
- * [41]8746: gcc miscompiles Linux kernel ppa driver on x86
- * [42]9888: -mcpu=k6 -Os produces out of range loop instructions
- * [43]9638: Cross-build for target i386-elf and i586-pc-linux-gnu
- failed
- * [44]9954: Cross-build for target i586-pc-linux-gnu (--with-newlib)
- failed
- SPARC-specific:
- * [45]7784: [Sparc] ICE in extract_insn, in recog.c
- * [46]7796: sparc extra failure with -m64 on execute/930921-1.c in
- unroll.c
- * [47]8281: ICE when compiling with -O2 -fPIC for Ultrasparc
- * [48]8366: [Sparc] C testsuite failure with -m64 -fpic -O in
- execute/loop-2d.c
- * [49]8726: gcc -O2 miscompiles Samba 2.2.7 on 32-bit sparc
- * [50]9414: Scheduling bug on Ultrasparc
- * [51]10067: GCC-3.2.2 outputs invalid asm on sparc64
- m68k-specific:
- * [52]7248: broken "inclusive or" code
- * [53]8343: m68k-elf/rtems ICE at instantiate_virtual_regs_1
- PowerPC-specific:
- * [54]9732: Wrong code with -O2 -fPIC
- * [55]10073: ICE: powerpc cannot split insn
- Alpha-specific:
- * [56]7702: optimization problem on a DEC alpha under OSF1
- * [57]9671: gcc.3.2.2 does not build on a HP Tru64 Unix v5.1B system
- HP-specific:
- * [58]8694: <string> breaks <ctype.h> on HP-UX 10.20 (DUP: 9275)
- * [59]9953: (ada) gcc 3.2.x can't build 3.3-branch ada on HP-UX 10
- (missing symbol)
- * [60]10271: Floating point args don't get reloaded across function
- calls with -O2
- MIPS specific:
- * [61]6362: mips-irix6 gcc-3.1 C testsuite failure with -mips4 in
- compile/920501-4.c
- CRIS specific:
- * [62]10377: gcc-3.2.2 creates bad assembler code for cris
- Miscellaneous and minor bugs:
- * [63]6955: collect2 says "core dumped" when there is no core
- __________________________________________________________________
- GCC 3.2.2
- Beginning with 3.2.2, GCC's Makefile suite supports redirection of make
- install by means of the DESTDIR variable. Parts of the GCC tree have
- featured that support long before, but now it is available even from
- the top level.
- Other than that, GCC 3.2.2 is a bug fix release only; there are no new
- features that were not present in GCC 3.2.1.
- Bug Fixes
- On the following i386-based systems GCC 3.2.1 broke the C ABI wrt.
- functions returning structures: Cygwin, FreeBSD (GCC 3.2.1 as shipped
- with FreeBSD 5.0 does not have this problem), Interix, a.out-based
- GNU/Linux and NetBSD, OpenBSD, and Darwin. GCC 3.2.2 reverts this ABI
- change, and thus restores ABI-compatibility with previous releases
- (except GCC 3.2.1) on these platforms.
- This section lists the problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.2.2 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here) and some of the titles have been changed to
- make them more clear.
- Internal Compiler Errors (multi-platform)
- * [64]5919: (c++) ICE when passing variable array to template
- function
- * [65]7129: (c++) ICE with min/max assignment operators (<?= and >?=)
- * [66]7507: ICE with -O2 when address of called function is a
- complicated expression
- * [67]7622: ICE with nested inline functions if function's address is
- taken
- * [68]7681: (fortran) ICE in compensate_edge, in reg-stack.c (also PR
- [69]9258)
- * [70]8031: (c++) ICE in code comparing typeids and casting from
- virtual base
- * [71]8275: ICE in simplify_subreg
- * [72]8332: (c++) builtin strlen/template interaction causes ICE
- * [73]8372: (c++) ICE on explicit call of destructor
- * [74]8439: (c, not c++) empty struct causes ICE
- * [75]8442: (c++) ICE with nested template classes
- * [76]8518: ICE when compiling mplayer ("extern inline" issue)
- * [77]8615: (c++) ICE with out-of-range character constant template
- argument
- * [78]8663: (c++) ICE in cp_expr_size, at cp-lang.c:307
- * [79]8799: (c++) ICE: error reporting routines re-entered
- * [80]9328: (c++) ICE with typeof(X) for overloaded X
- * [81]9465: (preprocessor) cpp -traditional ICE on null bytes
- C++ (compiler and library) bugs
- * [82]47: scoping in nested classes is broken
- * [83]6745: problems with iostream rdbuf() member function
- * [84]8214: conversion from const char* const to char* sometimes
- accepted illegally
- * [85]8493: builtin strlen and overload resolution (same bug as
- [86]8332)
- * [87]8503: strange behaviour of function types
- * [88]8727: compiler confused by inheritance from an anonymous struct
- * [89]7445: poor performance of std::locale::classic() in
- multi-threaded applications
- * [90]8230: mishandling of overflow in vector<T>::resize
- * [91]8399: sync_with_stdio(false) breaks unformatted input
- * [92]8662: illegal access of private member of unnamed class is
- accepted
- * [93]8707: "make distclean" fails in libstdc++-v3 directory
- * [94]8708: __USE_MALLOC doesn't work
- * [95]8790: Use of non-thread-safe strtok in src/localename.cc
- * [96]8887: Bug in date formats with --enable-clocale=generic
- * [97]9076: Call Frame Instructions are not handled correctly during
- unwind operation
- * [98]9151: std::setprecision limited to 16 digits when outputting a
- double to a stream
- * [99]9168: codecvt<char, char, mbstate_t> overwrites output buffers
- * [100]9269: libstdc++ headers: explicit specialization of function
- must precede its first use
- * [101]9322: return value of basic_streambuf<>::getloc affected by
- locale::global
- * [102]9433: segfault in runtime support for dynamic_cast
- C and optimizer bugs
- * [103]8032: GCC incorrectly initializes static structs that have
- flexible arrays
- * [104]8639: simple arithmetic expression broken
- * [105]8794: optimization improperly eliminates certain expressions
- * [106]8832: traditional "asm volatile" code is illegally optimized
- * [107]8988: loop optimizer bug: with -O2, code is generated that
- segfaults (found on i386, bug present for all platforms)
- * [108]9492: structure copy clobbers subsequent stores to structure
- Objective-C bugs
- * [109]9267: Objective-C parser won't build with newer bison versions
- (e.g. 1.875)
- Ada bugs
- * [110]8344: Ada build problem due to conflict between gcc/final.o,
- gcc/ada/final.o
- Preprocessor bugs
- * [111]8524: _Pragma within macros is improperly expanded
- * [112]8880: __WCHAR_TYPE__ macro incorrectly set to "long int" with
- -fshort-wchar
- ARM-specific
- * [113]9090: arm ICE with >= -O2; regression from gcc-2.95
- x86-specific (Intel/AMD)
- * [114]8588: ICE in extract_insn, at recog.c:NNNN (shift instruction)
- * [115]8599: loop unroll bug with -march=k6-3
- * [116]9506: ABI breakage in structure return (affects BSD and
- Cygwin, but not GNU/Linux)
- FreeBSD 5.0 specific
- * [117]9484: GCC 3.2.1 Bootstrap failure on FreeBSD 5.0
- RTEMS-specific
- * [118]9292: hppa1.1-rtems configurery problems
- * [119]9293: [m68k-elf/rtems] config/m68k/t-crtstuff bug
- * [120]9295: [mips-rtems] config/mips/rtems.h init/fini issue
- * [121]9296: gthr-rtems regression
- * [122]9316: powerpc-rtems: extending multilibs
- HP-PA specific
- * [123]9493: ICE with -O2 when building a simple function
- Documentation
- * [124]7341: hyperlink to gcov in GCC documentation doesn't work
- * [125]8947: Please add a warning about "-malign-double" in docs
- * [126]7448, [127]8882: typo cleanups
- __________________________________________________________________
- GCC 3.2.1
- 3.2.1 adds a new warning, -Wabi. This option warns when GNU C++
- generates code that is known not to be binary-compatible with the
- vendor-neutral ia32/ia64 ABI. Please consult the GCC manual, included
- in the distribution, for details.
- This release also removes an old GCC extension, "naming types", and the
- documentation now directs users to use a different GCC extension,
- __typeof__, instead. The feature had evidently been broken for a while.
- Otherwise, 3.2.1 is a bug fix release only; other than bug fixes and
- the new warning there are no new features that were not present in GCC
- 3.2.
- In addition, the previous fix for [128]PR 7445 (poor performance of
- std::locale::classic() in multi-threaded applications) was reverted
- ("unfixed"), because the "fix" was not thread-safe.
- Bug Fixes
- This section lists the problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.2.1 release. This list might
- not be complete (that is, it is possible that some PRs that have been
- fixed are not listed here). As you can see, the number of bug fixes is
- quite large, so it is strongly recommended that users of earlier GCC
- 3.x releases upgrade to GCC 3.2.1.
- Internal Compiler Errors (multi-platform)
- * [129]2521: (c++) ICE in build_ptrmemfunc, in cp/typeck.c
- * [130]5661: (c++) ICE instantiating template on array of unknown
- size (bad code)
- * [131]6419: (c++) ICE in make_decl_rtl for "longest" attribute on
- 64-bit platforms
- * [132]6994: (c++) ICE in find_function_data
- * [133]7150: preprocessor: GCC -dM -E gives an ICE
- * [134]7160: ICE when optimizing branches without a return value
- * [135]7228: (c++) ICE when using member template and template
- function
- * [136]7266: (c++) ICE with -pedantic on missing typename
- * [137]7353: ICE from use of "Naming Types" extension, see above
- * [138]7411: ICE in instantiate_virtual_regs_1, in function.c
- * [139]7478: (c++) ICE on static_cast inside template
- * [140]7526: preprocessor core dump when _Pragma implies #pragma
- dependency
- * [141]7721: (c++) ICE on simple (but incorrect) template ([142]7803
- is a duplicate)
- * [143]7754: (c++) ICE on union with template parameter
- * [144]7788: (c++) redeclaring a definition as an incomplete class
- causes ICE
- * [145]8031: (c++) ICE in comptypes, in cp/typeck.c
- * [146]8055: preprocessor dies with SIG11 when building FreeBSD
- kernel
- * [147]8067: (c++) ICE due to mishandling of __FUNCTION__ and related
- variables
- * [148]8134: (c++) ICE in force_store_init_value on legal code
- * [149]8149: (c++) ICE on incomplete type
- * [150]8160: (c++) ICE in build_modify_expr, in cp/typeck.c: array
- initialization
- C++ (compiler and library) bugs
- * [151]5607: No pointer adjustment in covariant return types
- * [152]6579: Infinite loop with statement expressions in member
- initialization
- * [153]6803: Default copy constructor bug in GCC 3.1
- * [154]7176: g++ confused by friend and static member with same name
- * [155]7188: Segfault with template class and recursive (incorrect)
- initializer list
- * [156]7306: Regression: GCC 3.x fails to compile code with virtual
- inheritance if a method has a variable number of arguments
- * [157]7461: ctype<char>::classic_table() returns offset array on
- Cygwin
- * [158]7524: f(const float arg[3]) fails
- * [159]7584: Erroneous ambiguous base error on using declaration
- * [160]7676: Member template overloading problem
- * [161]7679: infinite loop when a right parenthesis is missing
- * [162]7811: default locale not taken from environment
- * [163]7961: compare( char *) implemented incorrectly in
- basic_string<>
- * [164]8071: basic_ostream::operator<<(streambuf*) loops forever if
- streambuf::underflow() leaves gptr() NULL (dups: [165]8127,
- [166]6745)
- * [167]8096: deque::at() throws std::range_error instead of
- std::out_of_range
- * [168]8127: cout << cin.rdbuf() infinite loop
- * [169]8218: Excessively large memory consumed for classes with large
- array members
- * [170]8287: GCC 3.2: Destructor called for non-constructed local
- object
- * [171]8347: empty vector range used in string construction causes
- core dump
- * [172]8348: fail() flag is set in istringstream when eof() flag is
- set
- * [173]8391: regression: infinite loop in cp/decl2.c(finish_file)
- C and optimizer bugs
- * [174]6627: -fno-align-functions doesn't seem to disable function
- alignment
- * [175]6631: life_analysis misoptimizes code to initialize fields of
- a structure
- * [176]7102: unsigned char division results in floating exception
- * [177]7120: Run once loop should *always* be unrolled
- (pessimization)
- * [178]7209: Bug involving array referencing and ?: operator
- * [179]7515: invalid inlining of global function with -O3
- * [180]7814: incorrect scheduling for glibc-2.2.92 strcpy test
- * [181]8467: bug in sibling call optimization
- Preprocessor bugs
- * [182]4890: incorrect line markers from the traditional preprocessor
- * [183]7357: -M option omits system headers files (making it the same
- as -MM)
- * [184]7358: Changes to Sun's make Dependencies
- * [185]7602: C++ header files found in CPLUS_INCLUDE_PATH treated as
- C headers
- * [186]7862: Interrupting GCC -MD removes .d file but not .o
- * [187]8190: Failed compilation deletes -MD dependency file
- * [188]8524: _Pragma within macro is improperly expanded
- x86 specific (Intel/AMD)
- * [189]5351: (i686-only) function pass-by-value structure copy
- corrupts stack ([190]7591 is a duplicate)
- * [191]6845, [192]7034, [193]7124, [194]7174: ICE's with
- -march=pentium3/pentium2/athlon (these are all the same underlying
- bug, in MMX register use)
- * [195]7134, [196]7375, [197]7390: ICE with -march=athlon (maybe same
- as above?)
- * [198]6890: xmmintrin.h, _MM_TRANSPOSE4_PS is broken
- * [199]6981: wrong code in 64-bit manipulation on x86
- * [200]7242: GCC -mcpu=pentium[23] doesn't define __tune_pentiumpro__
- macro
- * [201]7396: ix86: cmpgt_ss, cmpge_ss, cmpngt_ss, and cmpnge_ss SSE
- intrinsics are broken
- * [202]7630: GCC 3.2 breaks on Mozilla 1.0's JS sources with
- -march=pentium4
- * [203]7693: Typo in i386 mmintrin.h header
- * [204]7723: ICE - Pentium3 sse - GCC 3.2
- * [205]7951: ICE on -march=pentium4 -O2 -mfpmath=sse
- * [206]8146: (i686 only) gcc 3.2 miscompiles gcc 2.95.3
- PowerPC specific
- * [207]5967: GCC bug when profiling nested functions on powerpc
- * [208]6984: wrong code generated with -O2, -O3, -Os for do-while
- loop on PowerPC
- * [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5
- * [210]7130: miscompiled code for GCC-3.1 on
- powerpc-unknown-linux-gnu with -funroll-all-loops
- * [211]7133: PowerPC ICE: unrecognizable insn
- * [212]7380: ICE in extract_insn, at recog.c:2148
- * [213]8252: ICE on Altivec code with optimization turned on
- * [214]8451: Altivec ICE in GCC 3.2
- HP/PA specific
- * [215]7250: __ashrdi3 returns wrong value on 32 bit hppa
- SPARC specific
- * [216]6668: when using --disable-multilib, libgcc_s.so is installed
- in the wrong place on sparc-solaris
- * [217]7151: ICE when compiling for UltraSPARC
- * [218]7335: SPARC: ICE in verify_wide_reg (flow.c:557) with long
- double and -O1
- * [219]7842: [REGRESSION] SPARC code gen bug
- ARM specific
- * [220]7856: [arm] invalid offset in constant pool reference
- * [221]7967: optimization produces wrong code (ARM)
- Alpha specific
- * [222]7374: __builtin_fabsl broken on alpha
- IBM s390 specific
- * [223]7370: ICE in fixup_var_refs_1 on s390x
- * [224]7409: loop optimization bug on s390x-linux-gnu
- * [225]8232: s390x: ICE when using bcmp with int length argument
- SCO specific
- * [226]7623: SCO OpenServer build fails with machmode.def: undefined
- symbol: BITS_PER_UNIT
- m68k/Coldfire specific
- * [227]8314: crtbegin, crtend need to be multilib'ed for this
- platform
- Documentation
- * [228]761: Document some undocumented options
- * [229]5610: Fix documentation about invoking SSE instructions
- (-mfpmath=sse)
- * [230]7484: List -Wmissing-declarations as C-only option
- * [231]7531: -mcmodel not documented for x86-64
- * [232]8120: Update documentation of bad use of ##
- __________________________________________________________________
- GCC 3.2
- 3.2 is a small bug fix release, but there is a change to the
- application binary interface (ABI), hence the change to the second part
- of the version number.
- The main purpose of the 3.2 release is to correct a couple of problems
- in the C++ ABI, with the intention of providing a stable interface
- going forward. Accordingly, 3.2 is only a small change to 3.1.1.
- Bug Fixes
- C++
- * [233]7320: g++ 3.2 relocation problem
- * [234]7470: vtable: virtual function pointers not in declaration
- order
- libstdc++
- * [235]6410: Trouble with non-ASCII monetary symbols and wchar_t
- * [236]6503, [237]6642, [238]7186: Problems with comparing or
- subtracting various types of const and non-const iterators
- * [239]7216: ambiguity with basic_iostream::traits_type
- * [240]7220: problem with basic_istream::ignore(0,delimiter)
- * [241]7222: locale::operator==() doesn't work on std::locale("")
- * [242]7286: placement operator delete issue
- * [243]7442: cxxabi.h does not match the C++ ABI
- * [244]7445: poor performance of std::locale::classic() in
- multi-threaded applications
- x86-64 specific
- * [245]7291: off-by-one in generated inline bzero code for x86-64
- For questions related to the use of GCC, please consult these web
- pages and the [246]GCC manuals. If that fails, the
- [247]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [248]gcc@gcc.gnu.org. All of [249]our lists have public
- archives.
- Copyright (C) [250]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [251]maintained by the GCC team. Last modified
- 2014-06-27[252].
- References
- 1. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
- 2. http://gcc.gnu.org/gcc-3.1/changes.html
- 3. http://gcc.gnu.org/gcc-3.2/c++-abi.html
- 4. https://gcc.gnu.org/PR3782
- 5. https://gcc.gnu.org/PR6440
- 6. https://gcc.gnu.org/PR7050
- 7. https://gcc.gnu.org/PR7741
- 8. https://gcc.gnu.org/PR7982
- 9. https://gcc.gnu.org/PR8068
- 10. https://gcc.gnu.org/PR8178
- 11. https://gcc.gnu.org/PR8396
- 12. https://gcc.gnu.org/PR8674
- 13. https://gcc.gnu.org/PR9768
- 14. https://gcc.gnu.org/PR9798
- 15. https://gcc.gnu.org/PR9799
- 16. https://gcc.gnu.org/PR9928
- 17. https://gcc.gnu.org/PR10114
- 18. https://gcc.gnu.org/PR10352
- 19. https://gcc.gnu.org/PR10336
- 20. https://gcc.gnu.org/PR8224
- 21. https://gcc.gnu.org/PR8613
- 22. https://gcc.gnu.org/PR8828
- 23. https://gcc.gnu.org/PR9226
- 24. https://gcc.gnu.org/PR9853
- 25. https://gcc.gnu.org/PR9797
- 26. https://gcc.gnu.org/PR9967
- 27. https://gcc.gnu.org/PR10116
- 28. https://gcc.gnu.org/PR10171
- 29. https://gcc.gnu.org/PR10175
- 30. https://gcc.gnu.org/PR8316
- 31. https://gcc.gnu.org/PR9169
- 32. https://gcc.gnu.org/PR9420
- 33. https://gcc.gnu.org/PR9459
- 34. https://gcc.gnu.org/PR9507
- 35. https://gcc.gnu.org/PR9538
- 36. https://gcc.gnu.org/PR9602
- 37. https://gcc.gnu.org/PR9993
- 38. https://gcc.gnu.org/PR10167
- 39. https://gcc.gnu.org/PR9652
- 40. https://gcc.gnu.org/PR10144
- 41. https://gcc.gnu.org/PR8746
- 42. https://gcc.gnu.org/PR9888
- 43. https://gcc.gnu.org/PR9638
- 44. https://gcc.gnu.org/PR9954
- 45. https://gcc.gnu.org/PR7784
- 46. https://gcc.gnu.org/PR7796
- 47. https://gcc.gnu.org/PR8281
- 48. https://gcc.gnu.org/PR8366
- 49. https://gcc.gnu.org/PR8726
- 50. https://gcc.gnu.org/PR9414
- 51. https://gcc.gnu.org/PR10067
- 52. https://gcc.gnu.org/PR7248
- 53. https://gcc.gnu.org/PR8343
- 54. https://gcc.gnu.org/PR9732
- 55. https://gcc.gnu.org/PR10073
- 56. https://gcc.gnu.org/PR7702
- 57. https://gcc.gnu.org/PR9671
- 58. https://gcc.gnu.org/PR8694
- 59. https://gcc.gnu.org/PR9953
- 60. https://gcc.gnu.org/PR10271
- 61. https://gcc.gnu.org/PR6362
- 62. https://gcc.gnu.org/PR10377
- 63. https://gcc.gnu.org/PR6955
- 64. https://gcc.gnu.org/PR5919
- 65. https://gcc.gnu.org/PR7129
- 66. https://gcc.gnu.org/PR7507
- 67. https://gcc.gnu.org/PR7622
- 68. https://gcc.gnu.org/PR7681
- 69. https://gcc.gnu.org/PR9528
- 70. https://gcc.gnu.org/PR8031
- 71. https://gcc.gnu.org/PR8275
- 72. https://gcc.gnu.org/PR8332
- 73. https://gcc.gnu.org/PR8372
- 74. https://gcc.gnu.org/PR8439
- 75. https://gcc.gnu.org/PR8442
- 76. https://gcc.gnu.org/PR8518
- 77. https://gcc.gnu.org/PR8615
- 78. https://gcc.gnu.org/PR8663
- 79. https://gcc.gnu.org/PR8799
- 80. https://gcc.gnu.org/PR9328
- 81. https://gcc.gnu.org/PR9465
- 82. https://gcc.gnu.org/PR47
- 83. https://gcc.gnu.org/PR6745
- 84. https://gcc.gnu.org/PR8214
- 85. https://gcc.gnu.org/PR8493
- 86. https://gcc.gnu.org/PR8332
- 87. https://gcc.gnu.org/PR8503
- 88. https://gcc.gnu.org/PR8727
- 89. https://gcc.gnu.org/PR7445
- 90. https://gcc.gnu.org/PR8230
- 91. https://gcc.gnu.org/PR8399
- 92. https://gcc.gnu.org/PR8662
- 93. https://gcc.gnu.org/PR8707
- 94. https://gcc.gnu.org/PR8708
- 95. https://gcc.gnu.org/PR8790
- 96. https://gcc.gnu.org/PR8887
- 97. https://gcc.gnu.org/PR9076
- 98. https://gcc.gnu.org/PR9151
- 99. https://gcc.gnu.org/PR9168
- 100. https://gcc.gnu.org/PR9269
- 101. https://gcc.gnu.org/PR9322
- 102. https://gcc.gnu.org/PR9433
- 103. https://gcc.gnu.org/PR8032
- 104. https://gcc.gnu.org/PR8639
- 105. https://gcc.gnu.org/PR8794
- 106. https://gcc.gnu.org/PR8832
- 107. https://gcc.gnu.org/PR8988
- 108. https://gcc.gnu.org/PR9492
- 109. https://gcc.gnu.org/PR9267
- 110. https://gcc.gnu.org/PR8344
- 111. https://gcc.gnu.org/PR8524
- 112. https://gcc.gnu.org/PR8880
- 113. https://gcc.gnu.org/PR9090
- 114. https://gcc.gnu.org/PR8588
- 115. https://gcc.gnu.org/PR8599
- 116. https://gcc.gnu.org/PR9506
- 117. https://gcc.gnu.org/PR9484
- 118. https://gcc.gnu.org/PR9292
- 119. https://gcc.gnu.org/PR9293
- 120. https://gcc.gnu.org/PR9295
- 121. https://gcc.gnu.org/PR9296
- 122. https://gcc.gnu.org/PR9316
- 123. https://gcc.gnu.org/PR9493
- 124. https://gcc.gnu.org/PR7341
- 125. https://gcc.gnu.org/PR8947
- 126. https://gcc.gnu.org/PR7448
- 127. https://gcc.gnu.org/PR8882
- 128. https://gcc.gnu.org/PR7445
- 129. https://gcc.gnu.org/PR2521
- 130. https://gcc.gnu.org/PR5661
- 131. https://gcc.gnu.org/PR6419
- 132. https://gcc.gnu.org/PR6994
- 133. https://gcc.gnu.org/PR7150
- 134. https://gcc.gnu.org/PR7160
- 135. https://gcc.gnu.org/PR7228
- 136. https://gcc.gnu.org/PR7266
- 137. https://gcc.gnu.org/PR7353
- 138. https://gcc.gnu.org/PR7411
- 139. https://gcc.gnu.org/PR7478
- 140. https://gcc.gnu.org/PR7526
- 141. https://gcc.gnu.org/PR7721
- 142. https://gcc.gnu.org/PR7803
- 143. https://gcc.gnu.org/PR7754
- 144. https://gcc.gnu.org/PR7788
- 145. https://gcc.gnu.org/PR8031
- 146. https://gcc.gnu.org/PR8055
- 147. https://gcc.gnu.org/PR8067
- 148. https://gcc.gnu.org/PR8134
- 149. https://gcc.gnu.org/PR8149
- 150. https://gcc.gnu.org/PR8160
- 151. https://gcc.gnu.org/PR5607
- 152. https://gcc.gnu.org/PR6579
- 153. https://gcc.gnu.org/PR6803
- 154. https://gcc.gnu.org/PR7176
- 155. https://gcc.gnu.org/PR7188
- 156. https://gcc.gnu.org/PR7306
- 157. https://gcc.gnu.org/PR7461
- 158. https://gcc.gnu.org/PR7524
- 159. https://gcc.gnu.org/PR7584
- 160. https://gcc.gnu.org/PR7676
- 161. https://gcc.gnu.org/PR7679
- 162. https://gcc.gnu.org/PR7811
- 163. https://gcc.gnu.org/PR7961
- 164. https://gcc.gnu.org/PR8071
- 165. https://gcc.gnu.org/PR8127
- 166. https://gcc.gnu.org/PR6745
- 167. https://gcc.gnu.org/PR8096
- 168. https://gcc.gnu.org/PR8127
- 169. https://gcc.gnu.org/PR8218
- 170. https://gcc.gnu.org/PR8287
- 171. https://gcc.gnu.org/PR8347
- 172. https://gcc.gnu.org/PR8348
- 173. https://gcc.gnu.org/PR8391
- 174. https://gcc.gnu.org/PR6627
- 175. https://gcc.gnu.org/PR6631
- 176. https://gcc.gnu.org/PR7102
- 177. https://gcc.gnu.org/PR7120
- 178. https://gcc.gnu.org/PR7209
- 179. https://gcc.gnu.org/PR7515
- 180. https://gcc.gnu.org/PR7814
- 181. https://gcc.gnu.org/PR8467
- 182. https://gcc.gnu.org/PR4890
- 183. https://gcc.gnu.org/PR7357
- 184. https://gcc.gnu.org/PR7358
- 185. https://gcc.gnu.org/PR7602
- 186. https://gcc.gnu.org/PR7862
- 187. https://gcc.gnu.org/PR8190
- 188. https://gcc.gnu.org/PR8524
- 189. https://gcc.gnu.org/PR5351
- 190. https://gcc.gnu.org/PR7591
- 191. https://gcc.gnu.org/PR6845
- 192. https://gcc.gnu.org/PR7034
- 193. https://gcc.gnu.org/PR7124
- 194. https://gcc.gnu.org/PR7174
- 195. https://gcc.gnu.org/PR7134
- 196. https://gcc.gnu.org/PR7375
- 197. https://gcc.gnu.org/PR7390
- 198. https://gcc.gnu.org/PR6890
- 199. https://gcc.gnu.org/PR6981
- 200. https://gcc.gnu.org/PR7242
- 201. https://gcc.gnu.org/PR7396
- 202. https://gcc.gnu.org/PR7630
- 203. https://gcc.gnu.org/PR7693
- 204. https://gcc.gnu.org/PR7723
- 205. https://gcc.gnu.org/PR7951
- 206. https://gcc.gnu.org/PR8146
- 207. https://gcc.gnu.org/PR5967
- 208. https://gcc.gnu.org/PR6984
- 209. https://gcc.gnu.org/PR7114
- 210. https://gcc.gnu.org/PR7130
- 211. https://gcc.gnu.org/PR7133
- 212. https://gcc.gnu.org/PR7380
- 213. https://gcc.gnu.org/PR8252
- 214. https://gcc.gnu.org/PR8451
- 215. https://gcc.gnu.org/PR7250
- 216. https://gcc.gnu.org/PR6668
- 217. https://gcc.gnu.org/PR7151
- 218. https://gcc.gnu.org/PR7335
- 219. https://gcc.gnu.org/PR7842
- 220. https://gcc.gnu.org/PR7856
- 221. https://gcc.gnu.org/PR7967
- 222. https://gcc.gnu.org/PR7374
- 223. https://gcc.gnu.org/PR7370
- 224. https://gcc.gnu.org/PR7409
- 225. https://gcc.gnu.org/PR8232
- 226. https://gcc.gnu.org/PR7623
- 227. https://gcc.gnu.org/PR8314
- 228. https://gcc.gnu.org/PR761
- 229. https://gcc.gnu.org/PR5610
- 230. https://gcc.gnu.org/PR7484
- 231. https://gcc.gnu.org/PR7531
- 232. https://gcc.gnu.org/PR8120
- 233. https://gcc.gnu.org/PR7320
- 234. https://gcc.gnu.org/PR7470
- 235. https://gcc.gnu.org/PR6410
- 236. https://gcc.gnu.org/PR6503
- 237. https://gcc.gnu.org/PR6642
- 238. https://gcc.gnu.org/PR7186
- 239. https://gcc.gnu.org/PR7216
- 240. https://gcc.gnu.org/PR7220
- 241. https://gcc.gnu.org/PR7222
- 242. https://gcc.gnu.org/PR7286
- 243. https://gcc.gnu.org/PR7442
- 244. https://gcc.gnu.org/PR7445
- 245. https://gcc.gnu.org/PR7291
- 246. https://gcc.gnu.org/onlinedocs/
- 247. mailto:gcc-help@gcc.gnu.org
- 248. mailto:gcc@gcc.gnu.org
- 249. https://gcc.gnu.org/lists.html
- 250. http://www.fsf.org/
- 251. https://gcc.gnu.org/about.html
- 252. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.1/index.html
- GCC 3.1
- July 27, 2002
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.1.1.
- The links below still apply to GCC 3.1.1.
- May 15, 2002
- The [2]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.1.
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- A list of [3]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed [4]new features, improvements, bug fixes, and other changes
- as well as test results to GCC. This [5]amazing group of volunteers is
- what makes GCC successful.
- For additional information about GCC please refer to the [6]GCC project
- web site or contact the [7]GCC development mailing list.
- To obtain GCC please use [8]our mirror sites, or our CVS server.
- __________________________________________________________________
- For questions related to the use of GCC, please consult these web
- pages and the [9]GCC manuals. If that fails, the
- [10]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [11]gcc@gcc.gnu.org. All of [12]our lists have public
- archives.
- Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [14]maintained by the GCC team. Last modified
- 2014-06-28[15].
- References
- 1. http://www.gnu.org/
- 2. http://www.gnu.org/
- 3. http://gcc.gnu.org/gcc-3.1/buildstat.html
- 4. http://gcc.gnu.org/gcc-3.1/changes.html
- 5. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 6. http://gcc.gnu.org/index.html
- 7. mailto:gcc@gcc.gnu.org
- 8. http://gcc.gnu.org/mirrors.html
- 9. https://gcc.gnu.org/onlinedocs/
- 10. mailto:gcc-help@gcc.gnu.org
- 11. mailto:gcc@gcc.gnu.org
- 12. https://gcc.gnu.org/lists.html
- 13. http://www.fsf.org/
- 14. https://gcc.gnu.org/about.html
- 15. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.1/changes.html
- GCC 3.1 Release Series
- Changes, New Features, and Fixes
- Additional changes in GCC 3.1.1
- * A bug related to how structures and unions are returned has been
- fixed for powerpc-*-netbsd*.
- * An important bug in the implementation of -fprefetch-loop-arrays
- has been fixed. Previously the optimization prefetched random
- blocks of memory for most targets except for i386.
- * The Java compiler now compiles Java programs much faster and also
- works with parallel make.
- * Nested functions have been fixed for mips*-*-netbsd*.
- * Some missing floating point support routines have beed added for
- mips*-*-netbsd*.
- * This [1]message gives additional information about the bugs fixed
- in this release.
- Caveats
- * The -traditional C compiler option has been deprecated and will be
- removed in GCC 3.3. (It remains possible to preprocess non-C code
- with the traditional preprocessor.)
- * The default debugging format for most ELF platforms (including
- GNU/Linux and FreeBSD; notable exception is Solaris) has changed
- from stabs to DWARF2. This requires GDB 5.1.1 or later.
- General Optimizer Improvements
- * Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat,
- and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure
- for profile driven optimizations.
- Options -fprofile-arcs and -fbranch-probabilities can now be used
- to improve speed of the generated code by profiling the actual
- program behaviour on typical runs. In the absence of profile info
- the compiler attempts to guess the profile statically.
- * [3]SPEC2000 and SPEC95 benchmark suites are now used daily to
- monitor performance of the generated code.
- According to the SPECInt2000 results on an AMD Athlon CPU, the code
- generated by GCC 3.1 is 6% faster on the average (8.2% faster with
- profile feedback) compared to GCC 3.0. The code produced by GCC 3.0
- is about 2.1% faster compared to 2.95.3. Tests were done using the
- -O2 -march=athlon command-line options.
- * Alexandre Oliva, of Red Hat, has generalized the tree inlining
- infrastructure developed by CodeSourcery, LLC for the C++ front
- end, so that it is now used in the C front end too. Inlining
- functions as trees exposes them earlier to the compiler, giving it
- more opportunities for optimization.
- * Support for data prefetching instructions has been added to the GCC
- back end and several targets. A new __builtin_prefetch intrinsic is
- available to explicitly insert prefetch instructions and
- experimental support for loop array prefetching has been added (see
- -fprefetch-loop-array documentation).
- * Support for emitting debugging information for macros has been
- added for DWARF2. It is activated using -g3.
- New Languages and Language specific improvements
- C/C++
- * A few more [4]ISO C99 features.
- * The preprocessor is 10-50% faster than the preprocessor in GCC 3.0.
- * The preprocessor's symbol table has been merged with the symbol
- table of the C, C++ and Objective-C front ends.
- * The preprocessor consumes less memory than the preprocessor in GCC
- 3.0, often significantly so. On normal input files, it typically
- consumes less memory than pre-3.0 cccp-based GCC, too.
- C++
- * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std
- was a workaround to allow std compliant code to work with the
- non-std compliant libstdc++-v2. libstdc++-v3 is std compliant.
- * The C++ ABI has been fixed so that void (A::*)() const is mangled
- as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only
- affects pointer to cv-qualified member function types.
- * The C++ ABI has been changed to correctly handle this code:
- struct A {
- void operator delete[] (void *, size_t);
- };
- struct B : public A {
- };
- new B[10];
- The amount of storage allocated for the array will be greater than
- it was in 3.0, in order to store the number of elements in the
- array, so that the correct size can be passed to operator delete[]
- when the array is deleted. Previously, the value passed to operator
- delete[] was unpredictable.
- This change will only affect code that declares a two-argument
- operator delete[] with a second parameter of type size_t in a base
- class, and does not override that definition in a derived class.
- * The C++ ABI has been changed so that:
- struct A {
- void operator delete[] (void *, size_t);
- void operator delete[] (void *);
- };
- does not cause unnecessary storage to be allocated when an array of
- A objects is allocated.
- This change will only affect code that declares both of these forms
- of operator delete[], and declared the two-argument form before the
- one-argument form.
- * The C++ ABI has been changed so that when a parameter is passed by
- value, any cleanup for that parameter is performed in the caller,
- as specified by the ia64 C++ ABI, rather than the called function
- as before. As a result, classes with a non-trivial destructor but a
- trivial copy constructor will be passed and returned by invisible
- reference, rather than by bitwise copy as before.
- * G++ now supports the "named return value optimization": for code
- like
- A f () {
- A a;
- ...
- return a;
- }
- G++ will allocate a in the return value slot, so that the return
- becomes a no-op. For this to work, all return statements in the
- function must return the same variable.
- * Improvements to the C++ library are listed in [5]the libstdc++-v3
- FAQ.
- Objective-C
- * Annoying linker warnings (due to incorrect code being generated)
- have been fixed.
- * If a class method cannot be found, the compiler no longer issues a
- warning if a corresponding instance method exists in the root
- class.
- * Forward @protocol declarations have been fixed.
- * Loading of categories has been fixed in certain situations (GNU run
- time only).
- * The class lookup in the run-time library has been rewritten so that
- class method dispatch is more than twice as fast as it used to be
- (GNU run time only).
- Java
- * libgcj now includes RMI, java.lang.ref.*, javax.naming, and
- javax.transaction.
- * Property files and other system resources can be compiled into
- executables which use libgcj using the new gcj --resource feature.
- * libgcj has been ported to more platforms. In particular there is
- now a mostly-functional mingw32 (Windows) target port.
- * JNI and CNI invocation interfaces were implemented, so gcj-compiled
- Java code can now be called from a C/C++ application.
- * gcj can now use builtin functions for certain known methods, for
- instance Math.cos.
- * gcj can now automatically remove redundant array-store checks in
- some common cases.
- * The --no-store-checks optimization option was added. This can be
- used to omit runtime store checks for code which is known not to
- throw ArrayStoreException
- * The following third party interface standards were added to libgcj:
- org.w3c.dom and org.xml.sax.
- * java.security has been merged with GNU Classpath. The new package
- is now JDK 1.2 compliant, and much more complete.
- * A bytecode verifier was added to the libgcj interpreter.
- * java.lang.Character was rewritten to comply with the Unicode 3.0
- standard, and improve performance.
- * Partial support for many more locales was added to libgcj.
- * Socket timeouts have been implemented.
- * libgcj has been merged into a single shared library. There are no
- longer separate shared libraries for the garbage collector and
- zlib.
- * Several performance improvements were made to gcj and libgcj:
- + Hash synchronization (thin locks)
- + A special allocation path for finalizer-free objects
- + Thread-local allocation
- + Parallel GC, and other GC tweaks
- Fortran
- Fortran improvements are listed in [6]the Fortran documentation.
- Ada
- [7]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front
- end and associated tools. The GNAT compiler fully implements the Ada
- language as defined by the ISO/IEC 8652 standard.
- Please note that the integration of the Ada front end is still work in
- progress.
- New Targets and Target Specific Improvements
- * Hans-Peter Nilsson has contributed a port to [8]MMIX, the CPU
- architecture used in new editions of Donald E. Knuth's The Art of
- Computer Programming.
- * [9]Axis Communications has contributed its port to the CRIS CPU
- architecture, used in the ETRAX system-on-a-chip series. See
- [10]Axis' developer site for technical information.
- * Alexandre Oliva, of Red Hat, has contributed a port to the
- [11]SuperH SH5 64-bit RISC microprocessor architecture, extending
- the existing SH port.
- * UltraSPARC is fully supported in 64-bit mode. The option -m64
- enables it.
- * For compatibility with the Sun compiler #pragma redefine_extname
- has been implemented on Solaris.
- * The x86 back end has had some noticeable work done to it.
- + SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
- Jaeger have contributed a port to the AMD x86-64 architecture.
- For more information on x86-64 see [12]http://www.x86-64.org.
- + The compiler now supports MMX, 3DNow!, SSE, and SSE2
- instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
- enable the respective instruction sets. Intel C++ compatible
- MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics
- will be added in next major release.
- + Following those improvements, targets for Pentium MMX, K6-2,
- K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were
- added. Refer to the documentation on -march= and -mcpu=
- options for details.
- + For those targets that support it, -mfpmath=sse will cause the
- compiler to generate SSE/SSE2 instructions for floating point
- math instead of x87 instructions. Usually, this will lead to
- quicker code -- especially on the Pentium 4. Note that only
- scalar floating point instructions are used and GCC does not
- exploit SIMD features yet.
- + Prefetch support has been added to the Pentium III, Pentium 4,
- K6-2, K6-3, and Athlon series.
- + Code generated for floating point to integer conversions has
- been improved leading to better performance of many 3D
- applications.
- * The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
- * C++ support for AIX has been improved.
- * Aldy Hernandez, of Red Hat, Inc, has contributed extensions to the
- PowerPC port supporting the AltiVec programming model (SIMD). The
- support, though presently useful, is experimental and is expected
- to stabilize for 3.2. The support is written to conform to
- Motorola's AltiVec specs. See -maltivec.
- Obsolete Systems
- Support for a number of older systems has been declared obsolete in GCC
- 3.1. Unless there is activity to revive them, the next release of GCC
- will have their sources permanently removed.
- All configurations of the following processor architectures have been
- declared obsolete:
- * MIL-STD-1750A, 1750a-*-*
- * AMD A29k, a29k-*-*
- * Convex, c*-convex-*
- * Clipper, clipper-*-*
- * Elxsi, elxsi-*-*
- * Intel i860, i860-*-*
- * Sun picoJava, pj-*-* and pjl-*-*
- * Western Electric 32000, we32k-*-*
- Most configurations of the following processor architectures have been
- declared obsolete, but we are preserving a few systems which may have
- active developers. It is unlikely that the remaining systems will
- survive much longer unless we see definite signs of port activity.
- * Motorola 88000 except
- + Generic a.out, m88k-*-aout*
- + Generic SVR4, m88k-*-sysv4
- + OpenBSD, m88k-*-openbsd*
- * NS32k except
- + NetBSD, ns32k-*-netbsd*
- + OpenBSD, ns32k-*-openbsd*.
- * ROMP except
- + OpenBSD, romp-*-openbsd*.
- Finally, only some configurations of these processor architectures are
- being obsoleted.
- * Alpha:
- + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka
- alpha*-*-osf[45], are still supported.)
- * ARM:
- + RISCiX, arm-*-riscix*.
- * i386:
- + 386BSD, i?86-*-bsd*
- + Chorus, i?86-*-chorusos*
- + DG/UX, i?86-*-dgux*
- + FreeBSD 1.x, i?86-*-freebsd1.*
- + IBM AIX, i?86-*-aix*
- + ISC UNIX, i?86-*-isc*
- + GNU/Linux with pre-BFD linker, i?86-*-linux*oldld*
- + NEXTstep, i?86-next-*
- + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose*
- + RTEMS/coff, i?86-*-rtemscoff*
- + RTEMS/go32, i?86-go32-rtems*
- + Sequent/BSD, i?86-sequent-bsd*
- + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and
- i?86-sequent-sysv3*
- + SunOS, i?86-*-sunos*
- * Motorola 68000:
- + Altos, m68[k0]*-altos-*
- + Apollo, m68[k0]*-apollo-*
- + Apple A/UX, m68[k0]*-apple-*
- + Bull, m68[k0]*-bull-*
- + Convergent, m68[k0]*-convergent-*
- + Generic SVR3, m68[k0]*-*-sysv3*
- + ISI, m68[k0]*-isi-*
- + LynxOS, m68[k0]*-*-lynxos*
- + NEXT, m68[k0]*-next-*
- + RTEMS/coff, m68[k0]*-*-rtemscoff*
- + Sony, m68[k0]*-sony-*
- * MIPS:
- + DEC Ultrix, mips-*-ultrix* and mips-dec-*
- + Generic BSD, mips-*-bsd*
- + Generic System V, mips-*-sysv*
- + IRIX before version 5, mips-sgi-irix[1234]*
- + RiscOS, mips-*-riscos*
- + Sony, mips-sony-*
- + Tandem, mips-tandem-*
- * SPARC:
- + RTEMS/a.out, sparc-*-rtemsaout*.
- Documentation improvements
- * The old manual ("Using and Porting the GNU Compiler Collection")
- has been replaced by a users manual ("Using the GNU Compiler
- Collection") and a separate internals reference manual ("GNU
- Compiler Collection Internals").
- * More complete and much improved documentation about GCC's internal
- representation used by the C and C++ front ends.
- * Many cleanups and improvements in general.
- For questions related to the use of GCC, please consult these web
- pages and the [13]GCC manuals. If that fails, the
- [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [15]gcc@gcc.gnu.org. All of [16]our lists have public
- archives.
- Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [18]maintained by the GCC team. Last modified
- 2015-06-29[19].
- References
- 1. https://gcc.gnu.org/ml/gcc/2002-07/msg01208.html
- 2. http://gcc.gnu.org/news/profiledriven.html
- 3. http://gcc.gnu.org/benchmarks/
- 4. http://gcc.gnu.org/c99status.html
- 5. https://gcc.gnu.org/onlinedocs/libstdc++/faq.html
- 6. https://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html
- 7. http://www.adacore.com/
- 8. http://www-cs-faculty.stanford.edu/~uno/mmix.html
- 9. http://www.axis.com/
- 10. http://developer.axis.com/
- 11. http://www.superh.com/
- 12. http://www.x86-64.org/
- 13. https://gcc.gnu.org/onlinedocs/
- 14. mailto:gcc-help@gcc.gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. https://gcc.gnu.org/lists.html
- 17. http://www.fsf.org/
- 18. https://gcc.gnu.org/about.html
- 19. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.0/index.html
- GCC 3.0.4
- February 20, 2002
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
- series.
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- GCC 3.0.x has several new optimizations, new targets, new languages and
- many other new features, relative to GCC 2.95.x. See the [2]new
- features page for a more complete list.
- A list of [3]successful builds is updated as new information becomes
- available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bug fixes, etc to GCC. This
- [4]amazing group of volunteers is what makes GCC successful.
- And finally, we can't in good conscience fail to mention some
- [5]caveats to using GCC 3.0.x.
- For additional information about GCC please refer to the [6]GCC project
- web site or contact the [7]GCC development mailing list.
- To obtain GCC please use [8]our mirror sites, or our CVS server.
- __________________________________________________________________
- Previous 3.0.x Releases
- December 20, 2001: GCC 3.0.3 has been released.
- October 25, 2001: GCC 3.0.2 has been released.
- August 20, 2001: GCC 3.0.1 has been released.
- June 18, 2001: GCC 3.0 has been released.
- For questions related to the use of GCC, please consult these web
- pages and the [9]GCC manuals. If that fails, the
- [10]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [11]gcc@gcc.gnu.org. All of [12]our lists have public
- archives.
- Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [14]maintained by the GCC team. Last modified
- 2014-06-28[15].
- References
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-3.0/features.html
- 3. http://gcc.gnu.org/gcc-3.0/buildstat.html
- 4. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 5. http://gcc.gnu.org/gcc-3.0/caveats.html
- 6. http://gcc.gnu.org/index.html
- 7. mailto:gcc@gcc.gnu.org
- 8. http://gcc.gnu.org/mirrors.html
- 9. https://gcc.gnu.org/onlinedocs/
- 10. mailto:gcc-help@gcc.gnu.org
- 11. mailto:gcc@gcc.gnu.org
- 12. https://gcc.gnu.org/lists.html
- 13. http://www.fsf.org/
- 14. https://gcc.gnu.org/about.html
- 15. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.0/features.html
- GCC 3.0 New Features
- Additional changes in GCC 3.0.4
- * GCC 3.0 now supports newer versions of the [1]NetBSD operating
- system, which use the ELF object file format, on x86 processors.
- * Correct debugging information is generated from functions that have
- lines from multiple files (e.g. yacc output).
- * A fix for whitespace handling in the -traditional preprocessor,
- which can affect Fortran.
- * Fixes to the exception handling runtime.
- * More fixes for bad code generation in C++.
- * A fix for shared library generation under AIX 4.3.
- * Documentation updates.
- * Port of GCC to Tensilica's Xtensa processor contributed.
- * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
- Additional changes in GCC 3.0.3
- * A fix to correct an accidental change to the PowerPC ABI.
- * Fixes for bad code generation on a variety of architectures.
- * Improvements to the debugging information generated for C++
- classes.
- * Fixes for bad code generation in C++.
- * A fix to avoid crashes in the C++ demangler.
- * A fix to the C++ standard library to avoid buffer overflows.
- * Miscellaneous improvements for a variety of architectures.
- Additional changes in GCC 3.0.2
- * Fixes for bad code generation during loop unrolling.
- * Fixes for bad code generation by the sibling call optimization.
- * Minor improvements to x86 code generation.
- * Implementation of function descriptors in C++ vtables for IA64.
- * Numerous minor bug-fixes.
- Additional changes in GCC 3.0.1
- * C++ fixes for incorrect code-generation.
- * Improved cross-compiling support for the C++ standard library.
- * Fixes for some embedded targets that worked in GCC 2.95.3, but not
- in GCC 3.0.
- * Fixes for various exception-handling bugs.
- * A port to the S/390 architecture.
- General Optimizer Improvements
- * [2]Basic block reordering pass.
- * New if-conversion pass with support for conditional (predicated)
- execution.
- * New tail call and sibling call elimination optimizations.
- * New register renaming pass.
- * New (experimental) [3]static single assignment (SSA) representation
- support.
- * New dead-code elimination pass implemented using the SSA
- representation.
- * [4]Global null pointer test elimination.
- * [5]Global code hoisting/unification.
- * More builtins and optimizations for stdio.h, string.h and old BSD
- functions, as well as for ISO C99 functions.
- * New builtin __builtin_expect for giving hints to the branch
- predictor.
- New Languages and Language specific improvements
- * The GNU Compiler for the Java(TM) language (GCJ) is now integrated
- and supported, including the run-time library containing most
- common non-GUI Java classes, a bytecode interpreter, and the Boehm
- conservative garbage collector. Many bugs have been fixed. GCJ can
- compile Java source or Java bytecodes to either native code or Java
- class files, and supports native methods written in either the
- standard JNI or the more efficient and convenient CNI.
- * Here is a [6]partial list of C++ improvements, both new features
- and those no longer supported.
- * New C++ ABI. On the IA-64 platform GCC is capable of
- inter-operating with other IA-64 compilers.
- * The new ABI also significantly reduces the size of symbol and debug
- information.
- * New [7]C++ support library and many C++ bug fixes, vastly improving
- our conformance to the ISO C++ standard.
- * New [8]inliner for C++.
- * Rewritten C preprocessor, integrated into the C, C++ and Objective
- C compilers, with very many improvements including ISO C99 support
- and [9]improvements to dependency generation.
- * Support for more [10]ISO C99 features.
- * Many improvements to support for checking calls to format functions
- such as printf and scanf, including support for ISO C99 format
- features, extensions from the Single Unix Specification and GNU
- libc 2.2, checking of strfmon formats and features to assist in
- auditing for format string security bugs.
- * New warnings for C code that may have undefined semantics because
- of violations of sequence point rules in the C standard (such as a
- = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
- * Additional warning option -Wfloat-equal.
- * Improvements to -Wtraditional.
- * Fortran improvements are listed in [11]the Fortran documentation.
- New Targets and Target Specific Improvements
- * New x86 back end, generating much improved code.
- * Support for a generic i386-elf target contributed.
- * New option to emit x86 assembly code using Intel style syntax
- (-mintel-syntax).
- * HPUX 11 support contributed.
- * Improved PowerPC code generation, including scheduled prologue and
- epilogue.
- * Port of GCC to Intel's IA-64 processor contributed.
- * Port of GCC to Motorola's MCore 210 and 340 contributed.
- * New unified back-end for Arm, Thumb and StrongArm contributed.
- * Port of GCC to Intel's XScale processor contributed.
- * Port of GCC to Atmel's AVR microcontrollers contributed.
- * Port of GCC to Mitsubishi's D30V processor contributed.
- * Port of GCC to Matsushita's AM33 processor (a member of the MN10300
- processor family) contributed.
- * Port of GCC to Fujitsu's FR30 processor contributed.
- * Port of GCC to Motorola's 68HC11 and 68HC12 processors contributed.
- * Port of GCC to Sun's picoJava processor core contributed.
- Documentation improvements
- * Substantially rewritten and improved C preprocessor manual.
- * Many improvements to other documentation.
- * Manpages for gcc, cpp and gcov are now generated automatically from
- the master Texinfo manual, eliminating the problem of manpages
- being out of date. (The generated manpages are only extracts from
- the full manual, which is provided in Texinfo form, from which
- info, HTML, other formats and a printed manual can be generated.)
- * Generated info files are included in the release tarballs alongside
- their Texinfo sources, avoiding problems on some platforms with
- building makeinfo as part of the GCC distribution.
- Other significant improvements
- * Garbage collection used internally by the compiler for most memory
- allocation instead of obstacks.
- * Lengauer and Tarjan algorithm used for computing dominators in the
- CFG. This algorithm can be significantly faster and more space
- efficient than our older algorithm.
- * gccbug script provided to assist in submitting bug reports to our
- bug tracking system. (Bug reports previously submitted directly to
- our mailing lists, for which you received no bug tracking number,
- should be submitted again using gccbug if you can reproduce the
- problem with GCC 3.0.)
- * The internal libgcc library is [12]built as a shared library on
- systems that support it.
- * Extensive testsuite included with GCC, with many new tests. In
- addition to tests for GCC bugs that have been fixed, many tests
- have been added for language features, compiler warnings and
- builtin functions.
- * Additional language-independent warning options -Wpacked, -Wpadded,
- -Wunreachable-code and -Wdisabled-optimization.
- * Target-independent options -falign-functions, -falign-loops and
- -falign-jumps.
- Plus a great many bug fixes and almost all the [13]features found in
- GCC 2.95.
- For questions related to the use of GCC, please consult these web
- pages and the [14]GCC manuals. If that fails, the
- [15]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [16]gcc@gcc.gnu.org. All of [17]our lists have public
- archives.
- Copyright (C) [18]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [19]maintained by the GCC team. Last modified
- 2014-06-28[20].
- References
- 1. http://www.netbsd.org/
- 2. http://gcc.gnu.org/news/reorder.html
- 3. http://gcc.gnu.org/news/ssa.html
- 4. http://gcc.gnu.org/news/null.html
- 5. http://gcc.gnu.org/news/unify.html
- 6. http://gcc.gnu.org/gcc-3.0/c++features.html
- 7. http://gcc.gnu.org/libstdc++/
- 8. http://gcc.gnu.org/news/inlining.html
- 9. http://gcc.gnu.org/news/dependencies.html
- 10. http://gcc.gnu.org/c99status.html
- 11. https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
- 12. http://gcc.gnu.org/gcc-3.0/libgcc.html
- 13. http://gcc.gnu.org/gcc-2.95/features.html
- 14. https://gcc.gnu.org/onlinedocs/
- 15. mailto:gcc-help@gcc.gnu.org
- 16. mailto:gcc@gcc.gnu.org
- 17. https://gcc.gnu.org/lists.html
- 18. http://www.fsf.org/
- 19. https://gcc.gnu.org/about.html
- 20. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-3.0/caveats.html
- GCC 3.0 Caveats
- * -fstrict-aliasing is now part of -O2 and higher optimization
- levels. This allows the compiler to assume the strictest aliasing
- rules applicable to the language being compiled. For C and C++,
- this activates optimizations based on the type of expressions. This
- optimization may thus break old, non-compliant code.
- * Enumerations are now properly promoted to int in function
- parameters and function returns. Normally this change is not
- visible, but when using -fshort-enums this is an ABI change.
- * The undocumented extension that allowed C programs to have a label
- at the end of a compound statement has been deprecated and may be
- removed in a future version. Programs that now generate a warning
- about this may be fixed by adding a null statement (a single
- semicolon) after the label.
- * The poorly documented extension that allowed string constants in C,
- C++ and Objective C to contain unescaped newlines has been
- deprecated and may be removed in a future version. Programs using
- this extension may be fixed in several ways: the bare newline may
- be replaced by \n, or preceded by \n\, or string concatenation may
- be used with the bare newline preceded by \n" and " placed at the
- start of the next line.
- * The Chill compiler is not included in GCC 3.0, because of the lack
- of a volunteer to convert it to use garbage collection.
- * Certain non-standard iostream methods from earlier versions of
- libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach,
- ostream::form, and istream::gets.
- * The new C++ ABI is not yet fully supported by current (as of
- 2001-07-01) releases and development versions of GDB, or any
- earlier versions. There is a problem setting breakpoints by line
- number, and other related issues that have been fixed in GCC 3.0
- but not yet handled in GDB:
- [1]https://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
- For questions related to the use of GCC, please consult these web
- pages and the [2]GCC manuals. If that fails, the
- [3]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [4]gcc@gcc.gnu.org. All of [5]our lists have public archives.
- Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [7]maintained by the GCC team. Last modified
- 2014-06-27[8].
- References
- 1. https://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
- 2. https://gcc.gnu.org/onlinedocs/
- 3. mailto:gcc-help@gcc.gnu.org
- 4. mailto:gcc@gcc.gnu.org
- 5. https://gcc.gnu.org/lists.html
- 6. http://www.fsf.org/
- 7. https://gcc.gnu.org/about.html
- 8. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-2.95/index.html
- GCC 2.95
- March 16, 2001: The GNU project and the GCC developers are pleased to
- announce the release of GCC version 2.95.3.
- Release History
- GCC 2.95.3
- March 16, 2001
- GCC 2.95.2
- October 27, 1999
- GCC 2.95.1
- August 19, 1999
- GCC 2.95
- July 31, 1999. This is the first release of GCC since the April
- 1999 GCC/EGCS reunification and includes nearly a year's worth
- of new development and bugfixes.
- References and Acknowledgements
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
- The whole suite has been extensively [1]regression tested and
- [2]package tested. It should be reliable and suitable for widespread
- use.
- The compiler has several new optimizations, new targets, new languages
- and other new features. See the [3]new features page for a more
- complete list of new features found in the GCC 2.95 releases.
- The sources include installation instructions in both HTML and
- plaintext forms in the install directory in the distribution. However,
- the most up to date installation instructions and [4]build/test status
- are on the web pages. We will update those pages as new information
- becomes available.
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc to GCC. This
- [5]amazing group of volunteers is what makes GCC successful.
- And finally, we can't in good conscience fail to mention some
- [6]caveats to using GCC 2.95.
- Download GCC 2.95 from one of our many [7]mirror sites.
- For additional information about GCC please see the [8]GCC project web
- server or contact the [9]GCC development mailing list.
- For questions related to the use of GCC, please consult these web
- pages and the [10]GCC manuals. If that fails, the
- [11]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [12]gcc@gcc.gnu.org. All of [13]our lists have public
- archives.
- Copyright (C) [14]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [15]maintained by the GCC team. Last modified
- 2014-06-28[16].
- References
- 1. http://gcc.gnu.org/gcc-2.95/regress.html
- 2. http://gcc.gnu.org/gcc-2.95/othertest.html
- 3. http://gcc.gnu.org/gcc-2.95/features.html
- 4. http://gcc.gnu.org/gcc-2.95/buildstat.html
- 5. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 6. http://gcc.gnu.org/gcc-2.95/caveats.html
- 7. http://gcc.gnu.org/mirrors.html
- 8. http://gcc.gnu.org/index.html
- 9. mailto:gcc@gcc.gnu.org
- 10. https://gcc.gnu.org/onlinedocs/
- 11. mailto:gcc-help@gcc.gnu.org
- 12. mailto:gcc@gcc.gnu.org
- 13. https://gcc.gnu.org/lists.html
- 14. http://www.fsf.org/
- 15. https://gcc.gnu.org/about.html
- 16. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-2.95/features.html
- GCC 2.95 New Features
- * General Optimizer Improvements:
- + [1]Localized register spilling to improve speed and code
- density especially on small register class machines.
- + [2]Global CSE using lazy code motion algorithms.
- + [3]Improved global constant/copy propagation.
- + [4]Improved control flow graph analysis and manipulation.
- + [5]Local dead store elimination.
- + [6]Memory Load hoisting/store sinking in loops.
- + [7]Type based alias analysis is enabled by default. Note this
- feature will expose bugs in the Linux kernel. Please refer to
- the FAQ (as shipped with GCC 2.95) for additional information
- on this issue.
- + Major revamp of GIV detection, combination and simplification
- to improve loop performance.
- + Major improvements to register allocation and reloading.
- * New Languages and Language specific improvements
- + [8]Many C++ improvements.
- + [9]Many Fortran improvements.
- + [10]Java front-end has been integrated. [11]runtime library is
- available separately.
- + [12]ISO C99 support
- + [13]Chill front-end and runtime has been integrated.
- + Boehm garbage collector support in libobjc.
- + More support for various pragmas which appear in vendor
- include files
- * New Targets and Target Specific Improvements
- + [14]SPARC backend rewrite.
- + -mschedule=8000 will optimize code for PA8000 class
- processors; -mpa-risc-2-0 will generate code for PA2.0
- processors
- + Various micro-optimizations for the ia32 port. K6
- optimizations
- + Compiler will attempt to align doubles in the stack on the
- ia32 port
- + Alpha EV6 support
- + PowerPC 750
- + RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403.
- -mcpu=e603e was added to do -mcpu=603e and -msoft-float.
- + c3x, c4x
- + HyperSPARC
- + SparcLite86x
- + sh4
- + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
- arm-linux)
- + vxWorks targets include support for vxWorks threads
- + StrongARM 110 and ARM9 support added. ARM Scheduling
- parameters rewritten.
- + Various changes to the MIPS port to avoid assembler macros,
- which in turn improves performance
- + Various performance improvements to the i960 port.
- + Major rewrite of ns32k port
- * Other significant improvements
- + [15]Ability to dump cfg information and display it using vcg.
- + The new faster scheme for fixing vendor header files is
- enabled by default.
- + Experimental internationalization support.
- + multibyte character support
- + Some compile-time speedups for pathological problems
- + Better support for complex types
- * Plus the usual mountain of bugfixes
- * Core compiler is based on the gcc2 development tree from Sept 30,
- 1998, so we have all of the [16]features found in GCC 2.8.
- Additional Changes in GCC 2.95.1
- * Generic bugfixes and improvements
- + Various documentation fixes related to the GCC/EGCS merger.
- + Fix memory management bug which could lead to spurious aborts,
- core dumps or random parsing errors in the compiler.
- + Fix a couple bugs in the dwarf1 and dwarf2 debug record
- support.
- + Fix infinite loop in the CSE optimizer.
- + Avoid undefined behavior in compiler FP emulation code
- + Fix install problem when prefix is overridden on the make
- install command.
- + Fix problem with unwanted installation of assert.h on some
- systems.
- + Fix problem with finding the wrong assembler in a single tree
- build.
- + Avoid increasing the known alignment of a register that is
- already known to be a pointer.
- * Platform specific bugfixes and improvements
- + Codegen bugfix for prologue/epilogue for cpu32 target.
- + Fix long long code generation bug for the Coldfire target.
- + Fix various aborts in the SH compiler.
- + Fix bugs in libgcc support library for the SH.
- + Fix alpha ev6 code generation bug.
- + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on
- AIX platforms.
- + Fix -fpic code generation bug for rs6000/ppc svr4 targets.
- + Fix varargs/stdarg code generation bug for rs6000/ppc svr4
- targets.
- + Fix weak symbol handling for rs6000/ppc svr4 targets.
- + Fix various problems with 64bit code generation for the
- rs6000/ppc port.
- + Fix codegen bug which caused tetex to be mis-compiled on the
- x86.
- + Fix compiler abort in new cfg code exposed by x86 port.
- + Fix out of range array reference in code convert flat
- registers to the x87 stacked FP register file.
- + Fix minor vxworks configuration bug.
- + Fix return type of bsearch for SunOS 4.x.
- * Language & Runtime specific fixes.
- + The G++ signature extension has been deprecated. It will be
- removed in the next major release of G++. Use of signatures
- will result in a warning from the compiler.
- + Several bugs relating to templates and namespaces were fixed.
- + A bug that caused crashes when combining templates with -g on
- DWARF1 platforms was fixed.
- + Pointers-to-members, virtual functions, and multiple
- inheritance should now work together correctly.
- + Some code-generation bugs relating to function try blocks were
- fixed.
- + G++ is a little bit more lenient with certain archaic
- constructs than in GCC 2.95.
- + Fix to prevent shared library version #s from bring truncated
- to 1 digit
- + Fix missing std:: in the libstdc++ library.
- + Fix stream locking problems in libio.
- + Fix problem in java compiler driver.
- Additional Changes in GCC 2.95.2
- The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While
- the optimizations performed by -fstrict-aliasing are valid according to
- the C and C++ standards, the optimization have caused some problems,
- particularly with old non-conforming code.
- The GCC developers are experimenting with ways to warn users about code
- which violates the C/C++ standards, but those warnings are not ready
- for widespread use at this time. Rather than wait for those warnings
- the GCC developers have chosen to disable -fstrict-aliasing by default
- for the GCC 2.95.2 release.
- We strongly encourage developers to find and fix code which violates
- the C/C++ standards as -fstrict-aliasing may be enabled by default in
- future releases. Use the option -fstrict-aliasing to re-enable these
- optimizations.
- * Generic bugfixes and improvements
- + Fix incorrectly optimized memory reference in global common
- subexpression elimination (GCSE) optimization pass.
- + Fix code generation bug in regmove.c in which it could
- incorrectly change a "const" value.
- + Fix bug in optimization of conditionals involving volatile
- memory references.
- + Avoid over-allocation of stack space for some procedures.
- + Fixed bug in the compiler which caused incorrect optimization
- of an obscure series of bit manipulations, shifts and
- arithmetic.
- + Fixed register allocator bug which caused teTeX to be
- mis-compiled on SPARC targets.
- + Avoid incorrect optimization of degenerate case statements for
- certain targets such as the ARM.
- + Fix out of range memory reference in the jump optimizer.
- + Avoid dereferencing null pointer in fix-header.
- + Fix test for GCC specific features so that it is possible to
- bootstrap with gcc-2.6.2 and older versions of GCC.
- + Fix typo in scheduler which could potentially cause out of
- range memory accesses.
- + Avoid incorrect loop reversal which caused incorrect code for
- certain loops on PowerPC targets.
- + Avoid incorrect optimization of switch statements on certain
- targets (for example the ARM).
- * Platform specific bugfixes and improvements
- + Work around bug in Sun V5.0 compilers which caused bootstrap
- comparison failures on SPARC targets.
- + Fix SPARC backend bug which caused aborts in final.c.
- + Fix sparc-hal-solaris2* configuration fragments.
- + Fix bug in sparc block profiling.
- + Fix obscure code generation bug for the PARISC targets.
- + Define __STDC_EXT__ for HPUX configurations.
- + Various POWERPC64 code generation bugfixes.
- + Fix abort for PPC targets using ELF (ex GNU/Linux).
- + Fix collect2 problems for AIX targets.
- + Correct handling of .file directive for PPC targets.
- + Fix bug in fix_trunc x86 patterns.
- + Fix x86 port to correctly pop the FP stack for functions that
- return structures in memory.
- + Fix minor bug in strlen x86 pattern.
- + Use stabs debugging instead of dwarf1 for x86-solaris targets.
- + Fix template repository code to handle leading underscore in
- mangled names.
- + Fix weak/weak alias support for OpenBSD.
- + GNU/Linux for the ARM has C++ compatible include files.
- * Language & Runtime specific fixes.
- + Fix handling of constructor attribute in the C front-end which
- caused problems building the Chill runtime library on some
- targets.
- + Fix minor problem merging type qualifiers in the C front-end.
- + Fix aliasing bug for pointers and references (C/C++).
- + Fix incorrect "non-constant initializer bug" when -traditional
- or -fwritable-strings is enabled.
- + Fix build error for Chill front-end on SunOS.
- + Do not complain about duplicate instantiations when using
- -frepo (C++).
- + Fix array bounds handling in C++ front-end which caused
- problems with dwarf debugging information in some
- circumstances.
- + Fix minor namespace problem.
- + Fix problem linking java programs.
- Additional Changes in GCC 2.95.3
- * Generic bugfixes and improvements
- + Fix numerous problems that caused incorrect optimization in
- the register reloading code.
- + Fix numerous problems that caused incorrect optimization in
- the loop optimizer.
- + Fix aborts in the functions build_insn_chain and scan_loops
- under some circumstances.
- + Fix an alias analysis bug.
- + Fix an infinite compilation bug in the combiner.
- + A few problems with complex number support have been fixed.
- + It is no longer possible for gcc to act as a fork bomb when
- installed incorrectly.
- + The -fpack-struct option should be recognized now.
- + Fixed a bug that caused incorrect code to be generated due to
- a lost stack adjustment.
- * Platform specific bugfixes and improvements
- + Support building ARM toolchains hosted on Windows.
- + Fix attribute calculations in ARM toolchains.
- + arm-linux support has been improved.
- + Fix a PIC failure on sparc targets.
- + On ix86 targets, the regparm attribute should now work
- reliably.
- + Several updates for the h8300 port.
- + Fix problem building libio with glibc 2.2.
- For questions related to the use of GCC, please consult these web
- pages and the [17]GCC manuals. If that fails, the
- [18]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [19]gcc@gcc.gnu.org. All of [20]our lists have public
- archives.
- Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [22]maintained by the GCC team. Last modified
- 2014-06-28[23].
- References
- 1. http://gcc.gnu.org/news/spill.html
- 2. http://gcc.gnu.org/news/lcm.html
- 3. http://gcc.gnu.org/news/cprop.html
- 4. http://gcc.gnu.org/news/cfg.html
- 5. http://gcc.gnu.org/news/dse.html
- 6. http://gcc.gnu.org/news/hoist.html
- 7. http://gcc.gnu.org/news/alias.html
- 8. http://gcc.gnu.org/gcc-2.95/c++features.html
- 9. https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
- 10. http://gcc.gnu.org/java/gcj-announce.txt
- 11. http://gcc.gnu.org/news/javaannounce.html
- 12. http://gcc.gnu.org/c99status.html
- 13. http://gcc.gnu.org/news/chill.html
- 14. http://gcc.gnu.org/news/sparc.html
- 15. http://gcc.gnu.org/news/egcs-vcg.html
- 16. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 17. https://gcc.gnu.org/onlinedocs/
- 18. mailto:gcc-help@gcc.gnu.org
- 19. mailto:gcc@gcc.gnu.org
- 20. https://gcc.gnu.org/lists.html
- 21. http://www.fsf.org/
- 22. https://gcc.gnu.org/about.html
- 23. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/gcc-2.95/caveats.html
- GCC 2.95 Caveats
- * GCC 2.95 will issue an error for invalid asm statements that had
- been silently accepted by earlier versions of the compiler. This is
- particularly noticeable when compiling older versions of the Linux
- kernel (2.0.xx). Please refer to the FAQ (as shipped with GCC 2.95)
- for more information on this issue.
- * GCC 2.95 implements type based alias analysis to disambiguate
- memory references. Some programs, particularly the Linux kernel
- violate ANSI/ISO aliasing rules and therefore may not operate
- correctly when compiled with GCC 2.95. Please refer to the FAQ (as
- shipped with GCC 2.95) for more information on this issue.
- * GCC 2.95 has a known bug in its handling of complex variables for
- 64bit targets. Instead of silently generating incorrect code, GCC
- 2.95 will issue a fatal error for situations it can not handle.
- This primarily affects the Fortran community as Fortran makes more
- use of complex variables than C or C++.
- * GCC 2.95 has an integrated libstdc++, but does not have an
- integrated libg++. Furthermore old libg++ releases will not work
- with GCC 2.95. You can retrieve a recent copy of libg++ from the
- [1]GCC ftp server.
- Note most C++ programs only need libstdc++.
- * Exception handling may not work with shared libraries, particularly
- on alphas, hppas, rs6000/powerpc and mips based platforms.
- Exception handling is known to work on x86 GNU/Linux platforms with
- shared libraries.
- * In general, GCC 2.95 is more rigorous about rejecting invalid C++
- code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0,
- or EGCS 1.1. As a result it may be necessary to fix C++ code before
- it will compile with GCC 2.95.
- * G++ is also converting toward the ISO C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of g++) may no longer be accepted. The
- flag -fpermissive may allow some non-conforming code to compile
- with GCC 2.95.
- * GCC 2.95 compiled C++ code is not binary compatible with EGCS
- 1.1.x, EGCS 1.0.x or GCC 2.8.x.
- * GCC 2.95 does not have changes from the GCC 2.8 tree that were made
- between Sept 30, 1998 and April 30, 1999 (the official end of the
- GCC 2.8 project). Future GCC releases will include all the changes
- from the defunct GCC 2.8 sources.
- For questions related to the use of GCC, please consult these web
- pages and the [2]GCC manuals. If that fails, the
- [3]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [4]gcc@gcc.gnu.org. All of [5]our lists have public archives.
- Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [7]maintained by the GCC team. Last modified
- 2014-06-12[8].
- References
- 1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz
- 2. https://gcc.gnu.org/onlinedocs/
- 3. mailto:gcc-help@gcc.gnu.org
- 4. mailto:gcc@gcc.gnu.org
- 5. https://gcc.gnu.org/lists.html
- 6. http://www.fsf.org/
- 7. https://gcc.gnu.org/about.html
- 8. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/egcs-1.1/index.html
- EGCS 1.1
- September 3, 1998: We are pleased to announce the release of EGCS 1.1.
- December 1, 1998: We are pleased to announce the release of EGCS 1.1.1.
- March 15, 1999: We are pleased to announce the release of EGCS 1.1.2.
- EGCS is a free software project to further the development of the GNU
- compilers using an open development environment.
- EGCS 1.1 is a major new release of the EGCS compiler system. It has
- been [1]extensively tested and is believed to be stable and suitable
- for widespread use.
- EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8
- development sources; it contains all of the new features found in GCC
- 2.8.1 as well as all new development from GCC up to June 6, 1998.
- EGCS 1.1 also contains many improvements and features not found in GCC
- or in older versions of EGCS:
- * Global common subexpression elimination and global constant/copy
- propagation (aka [2]gcse)
- * Ongoing improvements to the [3]alias analysis support to allow for
- better optimizations throughout the compiler.
- * Vastly improved [4]C++ compiler and integrated C++ runtime
- libraries.
- * Fixes for the /tmp symlink race security problems.
- * New targets including mips16, arm-thumb and 64 bit PowerPC.
- * Improvements to GNU Fortran (g77) compiler and runtime library made
- since g77 version 0.5.23.
- See the [5]new features page for a more complete list of new features
- found in EGCS 1.1 releases.
- EGCS 1.1.1 is a minor update to fix several serious problems in EGCS
- 1.1:
- * General improvements and fixes
- + Avoid some stack overflows when compiling large functions.
- + Avoid incorrect loop invariant code motions.
- + Fix some core dumps on Linux kernel code.
- + Bring back the imake -Di386 and friends fix from EGCS 1.0.2.
- + Fix code generation problem in gcse.
- + Various documentation related fixes.
- * g++/libstdc++ improvements and fixes
- + MT safe EH fix for setjmp/longjmp based exception handling.
- + Fix a few bad interactions between optimization and exception
- handling.
- + Fixes for demangling of template names starting with "__".
- + Fix a bug that would fail to run destructors in some cases
- with -O2.
- + Fix 'new' of classes with virtual bases.
- + Fix crash building Qt on the Alpha.
- + Fix failure compiling WIFEXITED macro on GNU/Linux.
- + Fix some -frepo failures.
- * g77 and libf2c improvements and fixes
- + Various documentation fixes.
- + Avoid compiler crash on RAND intrinsic.
- + Fix minor bugs in makefiles exposed by BSD make programs.
- + Define _XOPEN_SOURCE for libI77 build to avoid potential
- problems on some 64-bit systems.
- + Fix problem with implicit endfile on rewind.
- + Fix spurious recursive I/O errors.
- * platform specific improvements and fixes
- + Match all versions of UnixWare7.
- + Do not assume x86 SVR4 or UnixWare targets can handle stabs.
- + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion
- from unsigned ints to double precision floats.
- + Fix ARM ABI issue with NetBSD.
- + Fix a few arm code generation bugs.
- + Fixincludes will fix additional broken SCO OpenServer header
- files.
- + Fix a m68k backend bug which caused invalid offsets in reg+d
- addresses.
- + Fix problems with 64bit AIX 4.3 support.
- + Fix handling of long longs for varargs/stdarg functions on the
- ppc.
- + Minor fixes to CPP predefines for Windows.
- + Fix code generation problems with gpr<->fpr copies for 64bit
- ppc.
- + Fix a few coldfire code generation bugs.
- + Fix some more header file problems on SunOS 4.x.
- + Fix assert.h handling for RTEMS.
- + Fix Windows handling of TREE_SYMBOL_REFERENCED.
- + Fix x86 compiler abort in reg-stack pass.
- + Fix cygwin/windows problem with section attributes.
- + Fix Alpha code generation problem exposed by SMP Linux
- kernels.
- + Fix typo in m68k 32->64bit integer conversion.
- + Make sure target libraries build with -fPIC for PPC & Alpha
- targets.
- EGCS 1.1.2 is a minor update to fix several serious problems in EGCS
- 1.1.1:
- * General improvements and fixes
- + Fix bug in loop optimizer which caused the SPARC (and
- potentially other) ports to segfault.
- + Fix infinite recursion in alias analysis and combiner code.
- + Fix bug in regclass preferencing.
- + Fix incorrect loop reversal which caused incorrect code to be
- generated for several targets.
- + Fix return value for builtin memcpy.
- + Reduce compile time for certain loops which exposed quadratic
- behavior in the loop optimizer.
- + Fix bug which caused volatile memory to be written multiple
- times when only one write was needed/desired.
- + Fix compiler abort in caller-save.c
- + Fix combiner bug which caused incorrect code generation for
- certain division by constant operations.
- + Fix incorrect code generation due to a bug in range check
- optimizations.
- + Fix incorrect code generation due to mis-handling of clobbered
- values in CSE.
- + Fix compiler abort/segfault due to incorrect register
- splitting when unrolling loops.
- + Fix code generation involving autoincremented addresses with
- ternary operators.
- + Work around bug in the scheduler which caused qt to be
- mis-compiled on some platforms.
- + Fix code generation problems with -fshort-enums.
- + Tighten security for temporary files.
- + Improve compile time for codes which make heavy use of
- overloaded functions.
- + Fix multiply defined constructor/destructor symbol problems.
- + Avoid setting bogus RPATH environment variable during
- bootstrap.
- + Avoid GNU-make dependencies in the texinfo subdir.
- + Install CPP wrapper script in $(prefix)/bin if --enable-cpp.
- --enable-cpp=<dirname> can be used to specify an additional
- install directory for the cpp wrapper script.
- + Fix CSE bug which caused incorrect label-label refs to appear
- on some platforms.
- + Avoid linking in EH routines from libgcc if they are not
- needed.
- + Avoid obscure bug in aliasing code.
- + Fix bug in weak symbol handling.
- * Platform-specific improvements and fixes
- + Fix detection of PPro/PII on Unixware 7.
- + Fix compiler segfault when building spec99 and other programs
- for SPARC targets.
- + Fix code-generation bugs for integer and floating point
- conditional move instructions on the PPro/PII.
- + Use fixincludes to fix byteorder problems on i?86-*-sysv.
- + Fix build failure for the arc port.
- + Fix floating point format configuration for i?86-gnu port.
- + Fix problems with hppa1.0-hp-hpux10.20 configuration when
- threads are enabled.
- + Fix coldfire code generation bugs.
- + Fix "unrecognized insn" problems for Alpha and PPC ports.
- + Fix h8/300 code generation problem with floating point values
- in memory.
- + Fix unrecognized insn problems for the m68k port.
- + Fix namespace-pollution problem for the x86 port.
- + Fix problems with old assembler on x86 NeXT systems.
- + Fix PIC code-generation problems for the SPARC port.
- + Fix minor bug with LONG_CALLS in PowerPC SVR4 support.
- + Fix minor ISO namespace violation in Alpha varargs/stdarg
- support.
- + Fix incorrect "braf" instruction usage for the SH port.
- + Fix minor bug in va-sh which prevented its use with -ansi.
- + Fix problems recognizing and supporting FreeBSD.
- + Handle OpenBSD systems correctly.
- + Minor fixincludes fix for Digital UNIX 4.0B.
- + Fix problems with ctors/dtors in SCO shared libraries.
- + Abort instead of generating incorrect code for PPro/PII
- floating point conditional moves.
- + Avoid multiply defined symbols on GNU/Linux systems using
- libc-5.4.xx.
- + Fix abort in alpha compiler.
- * Fortran-specific fixes
- + Fix the IDate intrinsic (VXT) (in libg2c) so the returned year
- is in the documented, non-Y2K-compliant range of 0-99, instead
- of being returned as 100 in the year 2000.
- + Fix the `Date_and_Time' intrinsic (in libg2c) to return the
- milliseconds value properly in Values(8).
- + Fix the `LStat' intrinsic (in libg2c) to return device-ID
- information properly in SArray(7).
- Each release includes installation instructions in both HTML and
- plaintext forms (see the INSTALL directory in the toplevel directory of
- the distribution). However, we also keep the most up to date
- installation instructions and [6]build/test status on our web page. We
- will update those pages as new information becomes available.
- The EGCS project would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc. This [7]amazing
- group of volunteers is what makes EGCS successful.
- And finally, we can't in good conscience fail to mention some
- [8]caveats to using EGCS 1.1.
- Download EGCS from egcs.cygnus.com (USA California).
- The EGCS 1.1 release is also available on many mirror sites.
- [9]Goto mirror list to find a closer site.
- For questions related to the use of GCC, please consult these web
- pages and the [10]GCC manuals. If that fails, the
- [11]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [12]gcc@gcc.gnu.org. All of [13]our lists have public
- archives.
- Copyright (C) [14]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [15]maintained by the GCC team. Last modified
- 2014-06-28[16].
- References
- 1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html
- 2. http://gcc.gnu.org/news/gcse.html
- 3. http://gcc.gnu.org/news/alias.html
- 4. http://gcc.gnu.org/egcs-1.1/c++features.html
- 5. http://gcc.gnu.org/egcs-1.1/features.html
- 6. http://gcc.gnu.org/egcs-1.1/buildstat.html
- 7. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 8. http://gcc.gnu.org/egcs-1.1/caveats.html
- 9. http://gcc.gnu.org/mirrors.html
- 10. https://gcc.gnu.org/onlinedocs/
- 11. mailto:gcc-help@gcc.gnu.org
- 12. mailto:gcc@gcc.gnu.org
- 13. https://gcc.gnu.org/lists.html
- 14. http://www.fsf.org/
- 15. https://gcc.gnu.org/about.html
- 16. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/egcs-1.1/features.html
- EGCS 1.1 new features
- * Integrated GNU Fortran (g77) compiler and runtime library with
- improvements, based on g77 version 0.5.23.
- * Vast improvements in the C++ compiler; so many they have [1]page of
- their own!
- * Compiler implements [2]global common subexpression elimination and
- global copy/constant propagation.
- * More major improvements in the [3]alias analysis code.
- * More major improvements in the exception handling code to improve
- performance, lower static overhead and provide the infrastructure
- for future improvements.
- * The infamous /tmp symlink race security problems have been fixed.
- * The regmove optimization pass has been nearly completely rewritten
- to improve performance of generated code.
- * The compiler now recomputes register usage information before local
- register allocation. By providing more accurate information to the
- priority based allocator, we get better register allocation.
- * The register reloading phase of the compiler optimizes spill code
- much better than in previous releases.
- * Some bad interactions between the register allocator and
- instruction scheduler have been fixed, resulting in much better
- code for certain programs. Additionally, we have tuned the
- scheduler in various ways to improve performance of generated code
- for some architectures.
- * The compiler's branch shortening algorithms have been significantly
- improved to work better on targets which align jump targets.
- * The compiler now supports -Os to prefer optimizing for code space
- over optimizing for code speed.
- * The compiler will now totally eliminate library calls which compute
- constant values. This primarily helps targets with no integer
- div/mul support and targets without floating point support.
- * The compiler now supports an extensive "--help" option.
- * cpplib has been greatly improved and may be suitable for limited
- use.
- * Memory footprint for the compiler has been significantly reduced
- for some pathological cases.
- * The time to build EGCS has been improved for certain targets
- (particularly the alpha and mips platforms).
- * Many infrastructure improvements throughout the compiler, plus the
- usual mountain of bugfixes and minor improvements.
- * Target dependent improvements:
- + SPARC port now includes V8 plus and V9 support as well as
- performance tuning for Ultra class machines. The SPARC port
- now uses the Haifa scheduler.
- + Alpha port has been tuned for the EV6 processor and has an
- optimized expansion of memcpy/bzero. The Alpha port now uses
- the Haifa scheduler.
- + RS6000/PowerPC: support for the Power64 architecture and AIX
- 4.3. The RS6000/PowerPC port now uses the Haifa scheduler.
- + x86: Alignment of static store data and jump targets is per
- Intel recommendations now. Various improvements throughout the
- x86 port to improve performance on Pentium processors
- (including improved epilogue sequences for Pentium chips and
- backend improvements which should help register allocation on
- all x86 variants. Conditional move support has been fixed and
- enabled for PPro processors. The x86 port also better supports
- 64bit operations now. Unixware 7, a System V Release 5 target,
- is now supported and SCO OpenServer targets can support GAS.
- + MIPS has improved multiply/multiply-add support and now
- includes mips16 ISA support.
- + M68k has many micro-optimizations and Coldfire fixes.
- * Core compiler is based on the GCC development tree from June 9,
- 1998, so we have all of the [4]features found in GCC 2.8.
- For questions related to the use of GCC, please consult these web
- pages and the [5]GCC manuals. If that fails, the
- [6]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [7]gcc@gcc.gnu.org. All of [8]our lists have public archives.
- Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [10]maintained by the GCC team. Last modified
- 2014-06-12[11].
- References
- 1. http://gcc.gnu.org/egcs-1.1/c++features.html
- 2. http://gcc.gnu.org/news/gcse.html
- 3. http://gcc.gnu.org/news/alias.html
- 4. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 5. https://gcc.gnu.org/onlinedocs/
- 6. mailto:gcc-help@gcc.gnu.org
- 7. mailto:gcc@gcc.gnu.org
- 8. https://gcc.gnu.org/lists.html
- 9. http://www.fsf.org/
- 10. https://gcc.gnu.org/about.html
- 11. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/egcs-1.1/caveats.html
- EGCS 1.1 Caveats
- * EGCS has an integrated libstdc++, but does not have an integrated
- libg++. Furthermore old libg++ releases will not work with EGCS; HJ
- Lu has made a libg++-2.8.1.2 snapshot available which may work with
- EGCS.
- Note most C++ programs only need libstdc++.
- * Exception handling may not work with shared libraries, particularly
- on alphas, hppas, rs6000/powerpc and mips based platforms.
- Exception handling is known to work on x86-linux platforms with
- shared libraries.
- * Some versions of the Linux kernel have bugs which prevent them from
- being compiled or from running when compiled by EGCS. See the FAQ
- (as shipped with EGCS 1.1) for additional information.
- * In general, EGCS is more rigorous about rejecting invalid C++ code
- or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As
- a result it may be necessary to fix C++ code before it will compile
- with EGCS.
- * G++ is also converting toward the ISO C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of g++) may no longer be accepted.
- * EGCS 1.1 compiled C++ code is not binary compatible with EGCS 1.0.x
- or GCC 2.8.x due to changes necessary to support thread safe
- exception handling.
- For questions related to the use of GCC, please consult these web
- pages and the [1]GCC manuals. If that fails, the
- [2]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [3]gcc@gcc.gnu.org. All of [4]our lists have public archives.
- Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [6]maintained by the GCC team. Last modified
- 2014-06-12[7].
- References
- 1. https://gcc.gnu.org/onlinedocs/
- 2. mailto:gcc-help@gcc.gnu.org
- 3. mailto:gcc@gcc.gnu.org
- 4. https://gcc.gnu.org/lists.html
- 5. http://www.fsf.org/
- 6. https://gcc.gnu.org/about.html
- 7. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/egcs-1.0/index.html
- EGCS 1.0
- December 3, 1997: We are pleased to announce the release of EGCS 1.0.
- January 6, 1998: We are pleased to announce the release of EGCS 1.0.1.
- March 16, 1998: We are pleased to announce the release of EGCS 1.0.2.
- May 15, 1998 We are pleased to announce the release of EGCS 1.0.3.
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
- An important goal of EGCS is to allow wide scale testing of
- experimental features and optimizations; therefore, EGCS contains some
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
- EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
- EGCS 1.0 also contains many improvements and features not found in GCC
- 2.7 and even the GCC 2.8 series (which was released after the original
- EGCS 1.0 release).
- * Integrated C++ runtime libraries, including support for most major
- GNU/Linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release.
- * Integrated GNU Fortran compiler.
- * New instruction scheduler.
- * New alias analysis code.
- See the [1]new features page for a more complete list of new features.
- EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few
- critical bugs and add support for Red Hat 5.0 Linux. Changes since the
- EGCS 1.0 release:
- * Add support for Red Hat 5.0 Linux and better support for Linux
- systems using glibc2.
- Many programs failed to link when compiled with EGCS 1.0 on Red Hat
- 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 should
- fix these problems.
- * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception
- handling interfaces.
- To avoid future compatibility problems, we strongly urge anyone who
- is planning on distributing shared libraries that contain C++ code
- to upgrade to EGCS 1.0.1 first.
- Soon after EGCS 1.0 was released, the GCC developers made some
- incompatible changes in libgcc's exception handling interfaces.
- These changes were needed to solve problems on some platforms. This
- means that GCC 2.8.0, when released, will not be seamlessly
- compatible with shared libraries built by EGCS 1.0. The reason is
- that the libgcc.a in GCC 2.8.0 will not contain a function needed
- by the old interface.
- The result of this is that there may be compatibility problems with
- shared libraries built by EGCS 1.0 when used with GCC 2.8.0.
- With EGCS 1.0.1, generated code uses the new (GCC 2.8.0) interface,
- and libgcc.a has the support routines for both the old and the new
- interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be freely mixed,
- and EGCS 1.0.1 and GCC 2.8.0 code can be freely mixed).
- The maintainers of GCC 2.x have decided against including seamless
- support for the old interface in 2.8.0, since it was never
- "official", so to avoid future compatibility problems we recommend
- against distributing any shared libraries built by EGCS 1.0 that
- contain C++ code (upgrade to 1.0.1 and use that).
- * Various bugfixes in the x86, hppa, mips, and rs6000/ppc back ends.
- The x86 changes fix code generation errors exposed when building
- glibc2 and the usual GNU/Linux dynamic linker (ld.so).
- The hppa change fixes a compiler abort when configured for use with
- RTEMS.
- The MIPS changes fix problems with the definition of LONG_MAX on
- newer systems, allow for command line selection of the target ABI,
- and fix one code generation problem.
- The rs6000/ppc change fixes some problems with passing structures
- to varargs/stdarg functions.
- * A few machine independent bugfixes, mostly to fix code generation
- errors when building Linux kernels or glibc.
- * Fix a few critical exception handling and template bugs in the C++
- compiler.
- * Fix Fortran namelist bug on alphas.
- * Fix build problems on x86-solaris systems.
- EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several
- serious problems in EGCS 1.0.1.
- * General improvements and fixes
- + Memory consumption significantly reduced, especially for
- templates and inline functions.
- + Fix various problems with glibc2.1.
- + Fix loop optimization bug exposed by rs6000/ppc port.
- + Fix to avoid potential code generation problems in jump.c.
- + Fix some undefined symbol problems in dwarf1 debug support.
- * g++/libstdc++ improvements and fixes
- + libstdc++ in the EGCS release has been updated and should be
- link compatible with libstdc++-2.8.
- + Various fixes in libio/libstdc++ to work better on GNU/Linux
- systems.
- + Fix problems with duplicate symbols on systems that do not
- support weak symbols.
- + Memory corruption bug and undefined symbols in bastring have
- been fixed.
- + Various exception handling fixes.
- + Fix compiler abort for very long thunk names.
- * g77 improvements and fixes
- + Fix compiler crash for omitted bound in Fortran CASE
- statement.
- + Add missing entries to g77 lang-options.
- + Fix problem with -fpedantic in the g77 compiler.
- + Fix "backspace" problem with g77 on alphas.
- + Fix x86 backend problem with Fortran literals and -fpic.
- + Fix some of the problems with negative subscripts for g77 on
- alphas.
- + Fixes for Fortran builds on cygwin32/mingw32.
- * platform specific improvements and fixes
- + Fix long double problems on x86 (exposed by glibc).
- + x86 ports define i386 again to keep imake happy.
- + Fix exception handling support on NetBSD ports.
- + Several changes to collect2 to fix many problems with AIX.
- + Define __ELF__ for GNU/Linux on rs6000.
- + Fix -mcall-linux problem on GNU/Linux on rs6000.
- + Fix stdarg/vararg problem for GNU/Linux on rs6000.
- + Allow autoconf to select a proper install problem on AIX 3.1.
- + m68k port support includes -mcpu32 option as well as cpu32
- multilibs.
- + Fix stdarg bug for irix6.
- + Allow EGCS to build on irix5 without the gnu assembler.
- + Fix problem with static linking on sco5.
- + Fix bootstrap on sco5 with native compiler.
- + Fix for abort building newlib on H8 target.
- + Fix fixincludes handling of math.h on SunOS.
- + Minor fix for Motorola 3300 m68k systems.
- EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few
- problems reported by Red Hat for builds of Red Hat 5.1.
- * Generic bugfixes:
- + Fix a typo in the libio library which resulted in incorrect
- behavior of istream::get.
- + Fix the Fortran negative array index problem.
- + Fix a major problem with the ObjC runtime thread support
- exposed by glibc2.
- + Reduce memory consumption of the Haifa scheduler.
- * Target specific bugfixes:
- + Fix one x86 floating point code generation bug exposed by
- glibc2 builds.
- + Fix one x86 internal compiler error exposed by glibc2 builds.
- + Fix profiling bugs on the Alpha.
- + Fix ImageMagick & emacs 20.2 build problems on the Alpha.
- + Fix rs6000/ppc bug when converting values from integer types
- to floating point types.
- The EGCS 1.0 releases include installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the distribution). However, we also keep the most up to
- date installation instructions and [2]build/test status on our web
- page. We will update those pages as new information becomes available.
- And, we can't in good conscience fail to mention some [3]caveats to
- using EGCS.
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
- The EGCS 1.0 release is also available many mirror sites.
- [4]Goto mirror list to find a closer site
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- For questions related to the use of GCC, please consult these web
- pages and the [5]GCC manuals. If that fails, the
- [6]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [7]gcc@gcc.gnu.org. All of [8]our lists have public archives.
- Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [10]maintained by the GCC team. Last modified
- 2014-06-28[11].
- References
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 3. http://gcc.gnu.org/egcs-1.0/caveats.html
- 4. http://gcc.gnu.org/mirrors.html
- 5. https://gcc.gnu.org/onlinedocs/
- 6. mailto:gcc-help@gcc.gnu.org
- 7. mailto:gcc@gcc.gnu.org
- 8. https://gcc.gnu.org/lists.html
- 9. http://www.fsf.org/
- 10. https://gcc.gnu.org/about.html
- 11. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/egcs-1.0/features.html
- EGCS 1.0 features
- * Core compiler is based on the gcc2 development tree from Aug 2,
- 1997, so we have most of the [1]features found in GCC 2.8.
- * Integrated GNU Fortran compiler based on g77-0.5.22-19970929.
- * Vast improvements in the C++ compiler; so many they have [2]page of
- their own!
- * Integrated C++ runtime libraries, including support for most major
- GNU/Linux systems!
- * New instruction scheduler from IBM Haifa which includes support for
- function wide instruction scheduling as well as superscalar
- scheduling.
- * Significantly improved alias analysis code.
- * Improved register allocation for two address machines.
- * Significant code generation improvements for Fortran code on
- Alphas.
- * Various optimizations from the g77 project as well as improved loop
- optimizations.
- * Dwarf2 debug format support for some targets.
- * egcs libstdc++ includes the SGI STL implementation without changes.
- * As a result of these and other changes, egcs libstc++ is not binary
- compatible with previous releases of libstdc++.
- * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The SCO
- Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 and
- 1.1), Support for RTEMS on several embedded targets, Support for
- arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
- MN103, NEC V850, Sparclet, Solaris & GNU/Linux on PowerPCs, etc.
- * Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
- * RS6000/PowerPC ports generate code which can run on all
- RS6000/PowerPC variants by default.
- * -mcpu= and -march= switches for the x86 port to allow better
- control over how the x86 port generates code.
- * Includes the template repository patch (aka repo patch); note the
- new template code makes repo obsolete for ELF systems using gnu-ld
- such as GNU/Linux.
- * Plus the usual assortment of bugfixes and improvements.
- For questions related to the use of GCC, please consult these web
- pages and the [3]GCC manuals. If that fails, the
- [4]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [5]gcc@gcc.gnu.org. All of [6]our lists have public archives.
- Copyright (C) [7]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [8]maintained by the GCC team. Last modified
- 2014-06-12[9].
- References
- 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 2. http://gcc.gnu.org/egcs-1.0/c++features.html
- 3. https://gcc.gnu.org/onlinedocs/
- 4. mailto:gcc-help@gcc.gnu.org
- 5. mailto:gcc@gcc.gnu.org
- 6. https://gcc.gnu.org/lists.html
- 7. http://www.fsf.org/
- 8. https://gcc.gnu.org/about.html
- 9. http://validator.w3.org/check/referer
- ======================================================================
- http://gcc.gnu.org/egcs-1.0/caveats.html
- EGCS 1.0 Caveats
- * EGCS has an integrated libstdc++, but does not have an integrated
- libg++. Furthermore old libg++ releases will not work with egc; HJ
- Lu has made a libg++-2.8.1.2 available which may work with EGCS.
- Note most C++ programs only need libstdc++.
- * Note that using -pedantic or -Wreturn-type can cause an explosion
- in the amount of memory needed for template-heavy C++ code, such as
- code that uses STL. Also note that -Wall includes -Wreturn-type, so
- if you use -Wall you will need to specify -Wno-return-type to turn
- it off.
- * Exception handling may not work with shared libraries, particularly
- on alphas, hppas, and mips based platforms. Exception handling is
- known to work on x86-linux platforms with shared libraries.
- * Some versions of the Linux kernel have bugs which prevent them from
- being compiled or from running when compiled by EGCS. See the FAQ
- (as shipped with EGCS 1.0) for additional information.
- * In general, EGCS is more rigorous about rejecting invalid C++ code
- or deprecated C++ constructs than G++ 2.7. As a result it may be
- necessary to fix C++ code before it will compile with EGCS.
- * G++ is also aggressively tracking the C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of G++) may no longer be accepted.
- * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS
- 1.0.x and later releases should work with Red Hat Linux 5.0.
- For questions related to the use of GCC, please consult these web
- pages and the [1]GCC manuals. If that fails, the
- [2]gcc-help@gcc.gnu.org mailing list might help. Comments on these
- web pages and the development of GCC are welcome on our developer
- list at [3]gcc@gcc.gnu.org. All of [4]our lists have public archives.
- Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
- distribution of this entire article is permitted in any medium,
- provided this notice is preserved.
- These pages are [6]maintained by the GCC team. Last modified
- 2014-06-12[7].
- References
- 1. https://gcc.gnu.org/onlinedocs/
- 2. mailto:gcc-help@gcc.gnu.org
- 3. mailto:gcc@gcc.gnu.org
- 4. https://gcc.gnu.org/lists.html
- 5. http://www.fsf.org/
- 6. https://gcc.gnu.org/about.html
- 7. http://validator.w3.org/check/referer
- ======================================================================
|