123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116 |
- //===--- Options.td - Options for clang -----------------------------------===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // This file defines the options accepted by clang.
- //
- //===----------------------------------------------------------------------===//
- // Include the common option parsing interfaces.
- include "llvm/Option/OptParser.td"
- /////////
- // Flags
- // The option is a "driver"-only option, and should not be forwarded to other
- // tools via `-Xarch` options.
- def NoXarchOption : OptionFlag;
- // LinkerInput - The option is a linker input.
- def LinkerInput : OptionFlag;
- // NoArgumentUnused - Don't report argument unused warnings for this option; this
- // is useful for options like -static or -dynamic which a user may always end up
- // passing, even if the platform defaults to (or only supports) that option.
- def NoArgumentUnused : OptionFlag;
- // Unsupported - The option is unsupported, and the driver will reject command
- // lines that use it.
- def Unsupported : OptionFlag;
- // Ignored - The option is unsupported, and the driver will silently ignore it.
- def Ignored : OptionFlag;
- // CoreOption - This is considered a "core" Clang option, available in both
- // clang and clang-cl modes.
- def CoreOption : OptionFlag;
- // CLOption - This is a cl.exe compatibility option. Options with this flag
- // are made available when the driver is running in CL compatibility mode.
- def CLOption : OptionFlag;
- // CC1Option - This option should be accepted by clang -cc1.
- def CC1Option : OptionFlag;
- // CC1AsOption - This option should be accepted by clang -cc1as.
- def CC1AsOption : OptionFlag;
- // DXCOption - This is a dxc.exe compatibility option. Options with this flag
- // are made available when the driver is running in DXC compatibility mode.
- def DXCOption : OptionFlag;
- // CLDXCOption - This is a cl.exe/dxc.exe compatibility option. Options with this flag
- // are made available when the driver is running in CL/DXC compatibility mode.
- def CLDXCOption : OptionFlag;
- // NoDriverOption - This option should not be accepted by the driver.
- def NoDriverOption : OptionFlag;
- // If an option affects linking, but has a primary group (so Link_Group cannot
- // be used), add this flag.
- def LinkOption : OptionFlag;
- // FlangOption - This is considered a "core" Flang option, available in
- // flang mode.
- def FlangOption : OptionFlag;
- // FlangOnlyOption - This option should only be used by Flang (i.e. it is not
- // available for Clang)
- def FlangOnlyOption : OptionFlag;
- // FC1Option - This option should be accepted by flang -fc1.
- def FC1Option : OptionFlag;
- // A short name to show in documentation. The name will be interpreted as rST.
- class DocName<string name> { string DocName = name; }
- // A brief description to show in documentation, interpreted as rST.
- class DocBrief<code descr> { code DocBrief = descr; }
- // Indicates that this group should be flattened into its parent when generating
- // documentation.
- class DocFlatten { bit DocFlatten = 1; }
- // Indicates that this warning is ignored, but accepted with a warning for
- // GCC compatibility.
- class IgnoredGCCCompat : Flags<[HelpHidden]> {}
- /////////
- // Groups
- def Action_Group : OptionGroup<"<action group>">, DocName<"Actions">,
- DocBrief<[{The action to perform on the input.}]>;
- // Meta-group for options which are only used for compilation,
- // and not linking etc.
- def CompileOnly_Group : OptionGroup<"<CompileOnly group>">,
- DocName<"Compilation flags">, DocBrief<[{
- Flags controlling the behavior of Clang during compilation. These flags have
- no effect during actions that do not perform compilation.}]>;
- def Preprocessor_Group : OptionGroup<"<Preprocessor group>">,
- Group<CompileOnly_Group>,
- DocName<"Preprocessor flags">, DocBrief<[{
- Flags controlling the behavior of the Clang preprocessor.}]>;
- def IncludePath_Group : OptionGroup<"<I/i group>">, Group<Preprocessor_Group>,
- DocName<"Include path management">,
- DocBrief<[{
- Flags controlling how ``#include``\s are resolved to files.}]>;
- def I_Group : OptionGroup<"<I group>">, Group<IncludePath_Group>, DocFlatten;
- def i_Group : OptionGroup<"<i group>">, Group<IncludePath_Group>, DocFlatten;
- def clang_i_Group : OptionGroup<"<clang i group>">, Group<i_Group>, DocFlatten;
- def M_Group : OptionGroup<"<M group>">, Group<Preprocessor_Group>,
- DocName<"Dependency file generation">, DocBrief<[{
- Flags controlling generation of a dependency file for ``make``-like build
- systems.}]>;
- def d_Group : OptionGroup<"<d group>">, Group<Preprocessor_Group>,
- DocName<"Dumping preprocessor state">, DocBrief<[{
- Flags allowing the state of the preprocessor to be dumped in various ways.}]>;
- def Diag_Group : OptionGroup<"<W/R group>">, Group<CompileOnly_Group>,
- DocName<"Diagnostic flags">, DocBrief<[{
- Flags controlling which warnings, errors, and remarks Clang will generate.
- See the :doc:`full list of warning and remark flags <DiagnosticsReference>`.}]>;
- def R_Group : OptionGroup<"<R group>">, Group<Diag_Group>, DocFlatten;
- def R_value_Group : OptionGroup<"<R (with value) group>">, Group<R_Group>,
- DocFlatten;
- def W_Group : OptionGroup<"<W group>">, Group<Diag_Group>, DocFlatten;
- def W_value_Group : OptionGroup<"<W (with value) group>">, Group<W_Group>,
- DocFlatten;
- def f_Group : OptionGroup<"<f group>">, Group<CompileOnly_Group>,
- DocName<"Target-independent compilation options">;
- def f_clang_Group : OptionGroup<"<f (clang-only) group>">,
- Group<CompileOnly_Group>, DocFlatten;
- def pedantic_Group : OptionGroup<"<pedantic group>">, Group<f_Group>,
- DocFlatten;
- def opencl_Group : OptionGroup<"<opencl group>">, Group<f_Group>,
- DocName<"OpenCL flags">;
- def sycl_Group : OptionGroup<"<SYCL group>">, Group<f_Group>,
- DocName<"SYCL flags">;
- def m_Group : OptionGroup<"<m group>">, Group<CompileOnly_Group>,
- DocName<"Target-dependent compilation options">;
- // Feature groups - these take command line options that correspond directly to
- // target specific features and can be translated directly from command line
- // options.
- def m_aarch64_Features_Group : OptionGroup<"<aarch64 features group>">,
- Group<m_Group>, DocName<"AARCH64">;
- def m_amdgpu_Features_Group : OptionGroup<"<amdgpu features group>">,
- Group<m_Group>, DocName<"AMDGPU">;
- def m_arm_Features_Group : OptionGroup<"<arm features group>">,
- Group<m_Group>, DocName<"ARM">;
- def m_hexagon_Features_Group : OptionGroup<"<hexagon features group>">,
- Group<m_Group>, DocName<"Hexagon">;
- def m_sparc_Features_Group : OptionGroup<"<sparc features group>">,
- Group<m_Group>, DocName<"SPARC">;
- // The features added by this group will not be added to target features.
- // These are explicitly handled.
- def m_hexagon_Features_HVX_Group : OptionGroup<"<hexagon features group>">,
- Group<m_Group>, DocName<"Hexagon">;
- def m_m68k_Features_Group: OptionGroup<"<m68k features group>">,
- Group<m_Group>, DocName<"M68k">;
- def m_mips_Features_Group : OptionGroup<"<mips features group>">,
- Group<m_Group>, DocName<"MIPS">;
- def m_ppc_Features_Group : OptionGroup<"<ppc features group>">,
- Group<m_Group>, DocName<"PowerPC">;
- def m_wasm_Features_Group : OptionGroup<"<wasm features group>">,
- Group<m_Group>, DocName<"WebAssembly">;
- // The features added by this group will not be added to target features.
- // These are explicitly handled.
- def m_wasm_Features_Driver_Group : OptionGroup<"<wasm driver features group>">,
- Group<m_Group>, DocName<"WebAssembly Driver">;
- def m_x86_Features_Group : OptionGroup<"<x86 features group>">,
- Group<m_Group>, Flags<[CoreOption]>, DocName<"X86">;
- def m_riscv_Features_Group : OptionGroup<"<riscv features group>">,
- Group<m_Group>, DocName<"RISCV">;
- def m_libc_Group : OptionGroup<"<m libc group>">, Group<m_mips_Features_Group>,
- Flags<[HelpHidden]>;
- def O_Group : OptionGroup<"<O group>">, Group<CompileOnly_Group>,
- DocName<"Optimization level">, DocBrief<[{
- Flags controlling how much optimization should be performed.}]>;
- def DebugInfo_Group : OptionGroup<"<g group>">, Group<CompileOnly_Group>,
- DocName<"Debug information generation">, DocBrief<[{
- Flags controlling how much and what kind of debug information should be
- generated.}]>;
- def g_Group : OptionGroup<"<g group>">, Group<DebugInfo_Group>,
- DocName<"Kind and level of debug information">;
- def gN_Group : OptionGroup<"<gN group>">, Group<g_Group>,
- DocName<"Debug level">;
- def ggdbN_Group : OptionGroup<"<ggdbN group>">, Group<gN_Group>, DocFlatten;
- def gTune_Group : OptionGroup<"<gTune group>">, Group<g_Group>,
- DocName<"Debugger to tune debug information for">;
- def g_flags_Group : OptionGroup<"<g flags group>">, Group<DebugInfo_Group>,
- DocName<"Debug information flags">;
- def StaticAnalyzer_Group : OptionGroup<"<Static analyzer group>">,
- DocName<"Static analyzer flags">, DocBrief<[{
- Flags controlling the behavior of the Clang Static Analyzer.}]>;
- // gfortran options that we recognize in the driver and pass along when
- // invoking GCC to compile Fortran code.
- def gfortran_Group : OptionGroup<"<gfortran group>">,
- DocName<"Fortran compilation flags">, DocBrief<[{
- Flags that will be passed onto the ``gfortran`` compiler when Clang is given
- a Fortran input.}]>;
- def Link_Group : OptionGroup<"<T/e/s/t/u group>">, DocName<"Linker flags">,
- DocBrief<[{Flags that are passed on to the linker}]>;
- def T_Group : OptionGroup<"<T group>">, Group<Link_Group>, DocFlatten;
- def u_Group : OptionGroup<"<u group>">, Group<Link_Group>, DocFlatten;
- def reserved_lib_Group : OptionGroup<"<reserved libs group>">,
- Flags<[Unsupported]>;
- // Temporary groups for clang options which we know we don't support,
- // but don't want to verbosely warn the user about.
- def clang_ignored_f_Group : OptionGroup<"<clang ignored f group>">,
- Group<f_Group>, Flags<[Ignored]>;
- def clang_ignored_m_Group : OptionGroup<"<clang ignored m group>">,
- Group<m_Group>, Flags<[Ignored]>;
- // Group for clang options in the process of deprecation.
- // Please include the version that deprecated the flag as comment to allow
- // easier garbage collection.
- def clang_ignored_legacy_options_Group : OptionGroup<"<clang legacy flags>">,
- Group<f_Group>, Flags<[Ignored]>;
- // Retired with clang-5.0
- def : Flag<["-"], "fslp-vectorize-aggressive">, Group<clang_ignored_legacy_options_Group>;
- def : Flag<["-"], "fno-slp-vectorize-aggressive">, Group<clang_ignored_legacy_options_Group>;
- // Retired with clang-10.0. Previously controlled X86 MPX ISA.
- def mmpx : Flag<["-"], "mmpx">, Group<clang_ignored_legacy_options_Group>;
- def mno_mpx : Flag<["-"], "mno-mpx">, Group<clang_ignored_legacy_options_Group>;
- // Retired with clang-16.0, to provide a deprecation period; it should
- // be removed in Clang 18 or later.
- def enable_trivial_var_init_zero : Flag<["-"], "enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang">,
- Flags<[CC1Option, CoreOption, NoArgumentUnused]>,
- Group<clang_ignored_legacy_options_Group>;
- // Group that ignores all gcc optimizations that won't be implemented
- def clang_ignored_gcc_optimization_f_Group : OptionGroup<
- "<clang_ignored_gcc_optimization_f_Group>">, Group<f_Group>, Flags<[Ignored]>;
- class DiagnosticOpts<string base>
- : KeyPathAndMacro<"DiagnosticOpts->", base, "DIAG_"> {}
- class LangOpts<string base>
- : KeyPathAndMacro<"LangOpts->", base, "LANG_"> {}
- class TargetOpts<string base>
- : KeyPathAndMacro<"TargetOpts->", base, "TARGET_"> {}
- class FrontendOpts<string base>
- : KeyPathAndMacro<"FrontendOpts.", base, "FRONTEND_"> {}
- class PreprocessorOutputOpts<string base>
- : KeyPathAndMacro<"PreprocessorOutputOpts.", base, "PREPROCESSOR_OUTPUT_"> {}
- class DependencyOutputOpts<string base>
- : KeyPathAndMacro<"DependencyOutputOpts.", base, "DEPENDENCY_OUTPUT_"> {}
- class CodeGenOpts<string base>
- : KeyPathAndMacro<"CodeGenOpts.", base, "CODEGEN_"> {}
- class HeaderSearchOpts<string base>
- : KeyPathAndMacro<"HeaderSearchOpts->", base, "HEADER_SEARCH_"> {}
- class PreprocessorOpts<string base>
- : KeyPathAndMacro<"PreprocessorOpts->", base, "PREPROCESSOR_"> {}
- class FileSystemOpts<string base>
- : KeyPathAndMacro<"FileSystemOpts.", base, "FILE_SYSTEM_"> {}
- class AnalyzerOpts<string base>
- : KeyPathAndMacro<"AnalyzerOpts->", base, "ANALYZER_"> {}
- class MigratorOpts<string base>
- : KeyPathAndMacro<"MigratorOpts.", base, "MIGRATOR_"> {}
- // A boolean option which is opt-in in CC1. The positive option exists in CC1 and
- // Args.hasArg(OPT_ffoo) can be used to check that the flag is enabled.
- // This is useful if the option is usually disabled.
- // Use this only when the option cannot be declared via BoolFOption.
- multiclass OptInCC1FFlag<string name, string pos_prefix, string neg_prefix="",
- string help="", list<OptionFlag> flags=[]> {
- def f#NAME : Flag<["-"], "f"#name>, Flags<[CC1Option] # flags>,
- Group<f_Group>, HelpText<pos_prefix # help>;
- def fno_#NAME : Flag<["-"], "fno-"#name>, Flags<flags>,
- Group<f_Group>, HelpText<neg_prefix # help>;
- }
- // A boolean option which is opt-out in CC1. The negative option exists in CC1 and
- // Args.hasArg(OPT_fno_foo) can be used to check that the flag is disabled.
- // Use this only when the option cannot be declared via BoolFOption.
- multiclass OptOutCC1FFlag<string name, string pos_prefix, string neg_prefix,
- string help="", list<OptionFlag> flags=[]> {
- def f#NAME : Flag<["-"], "f"#name>, Flags<flags>,
- Group<f_Group>, HelpText<pos_prefix # help>;
- def fno_#NAME : Flag<["-"], "fno-"#name>, Flags<[CC1Option] # flags>,
- Group<f_Group>, HelpText<neg_prefix # help>;
- }
- // A boolean option which is opt-in in FC1. The positive option exists in FC1 and
- // Args.hasArg(OPT_ffoo) can be used to check that the flag is enabled.
- // This is useful if the option is usually disabled.
- multiclass OptInFC1FFlag<string name, string pos_prefix, string neg_prefix="",
- string help="", list<OptionFlag> flags=[]> {
- def f#NAME : Flag<["-"], "f"#name>, Flags<[FC1Option] # flags>,
- Group<f_Group>, HelpText<pos_prefix # help>;
- def fno_#NAME : Flag<["-"], "fno-"#name>, Flags<flags>,
- Group<f_Group>, HelpText<neg_prefix # help>;
- }
- // A boolean option which is opt-out in FC1. The negative option exists in FC1 and
- // Args.hasArg(OPT_fno_foo) can be used to check that the flag is disabled.
- multiclass OptOutFC1FFlag<string name, string pos_prefix, string neg_prefix,
- string help="", list<OptionFlag> flags=[]> {
- def f#NAME : Flag<["-"], "f"#name>, Flags<flags>,
- Group<f_Group>, HelpText<pos_prefix # help>;
- def fno_#NAME : Flag<["-"], "fno-"#name>, Flags<[FC1Option] # flags>,
- Group<f_Group>, HelpText<neg_prefix # help>;
- }
- // Creates a positive and negative flags where both of them are prefixed with
- // "m", have help text specified for positive and negative option, and a Group
- // optionally specified by the opt_group argument, otherwise Group<m_Group>.
- multiclass SimpleMFlag<string name, string pos_prefix, string neg_prefix,
- string help, OptionGroup opt_group = m_Group> {
- def m#NAME : Flag<["-"], "m"#name>, Group<opt_group>,
- HelpText<pos_prefix # help>;
- def mno_#NAME : Flag<["-"], "mno-"#name>, Group<opt_group>,
- HelpText<neg_prefix # help>;
- }
- //===----------------------------------------------------------------------===//
- // BoolOption
- //===----------------------------------------------------------------------===//
- // The default value of a marshalled key path.
- class Default<code value> { code Value = value; }
- // Convenience variables for boolean defaults.
- def DefaultTrue : Default<"true"> {}
- def DefaultFalse : Default<"false"> {}
- // The value set to the key path when the flag is present on the command line.
- class Set<bit value> { bit Value = value; }
- def SetTrue : Set<true> {}
- def SetFalse : Set<false> {}
- // Definition of single command line flag. This is an implementation detail, use
- // SetTrueBy or SetFalseBy instead.
- class FlagDef<bit polarity, bit value, list<OptionFlag> option_flags,
- string help, list<code> implied_by_expressions = []> {
- // The polarity. Besides spelling, this also decides whether the TableGen
- // record will be prefixed with "no_".
- bit Polarity = polarity;
- // The value assigned to key path when the flag is present on command line.
- bit Value = value;
- // OptionFlags that control visibility of the flag in different tools.
- list<OptionFlag> OptionFlags = option_flags;
- // The help text associated with the flag.
- string Help = help;
- // List of expressions that, when true, imply this flag.
- list<code> ImpliedBy = implied_by_expressions;
- }
- // Additional information to be appended to both positive and negative flag.
- class BothFlags<list<OptionFlag> option_flags, string help = ""> {
- list<OptionFlag> OptionFlags = option_flags;
- string Help = help;
- }
- // Functor that appends the suffix to the base flag definition.
- class ApplySuffix<FlagDef flag, BothFlags suffix> {
- FlagDef Result
- = FlagDef<flag.Polarity, flag.Value,
- flag.OptionFlags # suffix.OptionFlags,
- flag.Help # suffix.Help, flag.ImpliedBy>;
- }
- // Definition of the command line flag with positive spelling, e.g. "-ffoo".
- class PosFlag<Set value, list<OptionFlag> flags = [], string help = "",
- list<code> implied_by_expressions = []>
- : FlagDef<true, value.Value, flags, help, implied_by_expressions> {}
- // Definition of the command line flag with negative spelling, e.g. "-fno-foo".
- class NegFlag<Set value, list<OptionFlag> flags = [], string help = "",
- list<code> implied_by_expressions = []>
- : FlagDef<false, value.Value, flags, help, implied_by_expressions> {}
- // Expanded FlagDef that's convenient for creation of TableGen records.
- class FlagDefExpanded<FlagDef flag, string prefix, string name, string spelling>
- : FlagDef<flag.Polarity, flag.Value, flag.OptionFlags, flag.Help,
- flag.ImpliedBy> {
- // Name of the TableGen record.
- string RecordName = prefix # !if(flag.Polarity, "", "no_") # name;
- // Spelling of the flag.
- string Spelling = prefix # !if(flag.Polarity, "", "no-") # spelling;
- // Can the flag be implied by another flag?
- bit CanBeImplied = !not(!empty(flag.ImpliedBy));
- // C++ code that will be assigned to the keypath when the flag is present.
- code ValueAsCode = !if(flag.Value, "true", "false");
- }
- // TableGen record for a single marshalled flag.
- class MarshalledFlagRec<FlagDefExpanded flag, FlagDefExpanded other,
- FlagDefExpanded implied, KeyPathAndMacro kpm,
- Default default>
- : Flag<["-"], flag.Spelling>, Flags<flag.OptionFlags>, HelpText<flag.Help>,
- MarshallingInfoBooleanFlag<kpm, default.Value, flag.ValueAsCode,
- other.ValueAsCode, other.RecordName>,
- ImpliedByAnyOf<implied.ImpliedBy, implied.ValueAsCode> {}
- // Generates TableGen records for two command line flags that control the same
- // key path via the marshalling infrastructure.
- // Names of the records consist of the specified prefix, "no_" for the negative
- // flag, and NAME.
- // Used for -cc1 frontend options. Driver-only options do not map to
- // CompilerInvocation.
- multiclass BoolOption<string prefix = "", string spelling_base,
- KeyPathAndMacro kpm, Default default,
- FlagDef flag1_base, FlagDef flag2_base,
- BothFlags suffix = BothFlags<[], "">> {
- defvar flag1 = FlagDefExpanded<ApplySuffix<flag1_base, suffix>.Result, prefix,
- NAME, spelling_base>;
- defvar flag2 = FlagDefExpanded<ApplySuffix<flag2_base, suffix>.Result, prefix,
- NAME, spelling_base>;
- // The flags must have different polarity, different values, and only
- // one can be implied.
- assert !xor(flag1.Polarity, flag2.Polarity),
- "the flags must have different polarity: flag1: " #
- flag1.Polarity # ", flag2: " # flag2.Polarity;
- assert !ne(flag1.Value, flag2.Value),
- "the flags must have different values: flag1: " #
- flag1.Value # ", flag2: " # flag2.Value;
- assert !not(!and(flag1.CanBeImplied, flag2.CanBeImplied)),
- "only one of the flags can be implied: flag1: " #
- flag1.CanBeImplied # ", flag2: " # flag2.CanBeImplied;
- defvar implied = !if(flag1.CanBeImplied, flag1, flag2);
- def flag1.RecordName : MarshalledFlagRec<flag1, flag2, implied, kpm, default>;
- def flag2.RecordName : MarshalledFlagRec<flag2, flag1, implied, kpm, default>;
- }
- /// Creates a BoolOption where both of the flags are prefixed with "f", are in
- /// the Group<f_Group>.
- /// Used for -cc1 frontend options. Driver-only options do not map to
- /// CompilerInvocation.
- multiclass BoolFOption<string flag_base, KeyPathAndMacro kpm,
- Default default, FlagDef flag1, FlagDef flag2,
- BothFlags both = BothFlags<[], "">> {
- defm NAME : BoolOption<"f", flag_base, kpm, default, flag1, flag2, both>,
- Group<f_Group>;
- }
- // Creates a BoolOption where both of the flags are prefixed with "g" and have
- // the Group<g_Group>.
- // Used for -cc1 frontend options. Driver-only options do not map to
- // CompilerInvocation.
- multiclass BoolGOption<string flag_base, KeyPathAndMacro kpm,
- Default default, FlagDef flag1, FlagDef flag2,
- BothFlags both = BothFlags<[], "">> {
- defm NAME : BoolOption<"g", flag_base, kpm, default, flag1, flag2, both>,
- Group<g_Group>;
- }
- // FIXME: Diagnose if target does not support protected visibility.
- class MarshallingInfoVisibility<KeyPathAndMacro kpm, code default>
- : MarshallingInfoEnum<kpm, default>,
- Values<"default,hidden,internal,protected">,
- NormalizedValues<["DefaultVisibility", "HiddenVisibility",
- "HiddenVisibility", "ProtectedVisibility"]> {}
- // Key paths that are constant during parsing of options with the same key path prefix.
- defvar cplusplus = LangOpts<"CPlusPlus">;
- defvar cpp11 = LangOpts<"CPlusPlus11">;
- defvar cpp17 = LangOpts<"CPlusPlus17">;
- defvar cpp20 = LangOpts<"CPlusPlus20">;
- defvar c99 = LangOpts<"C99">;
- defvar c2x = LangOpts<"C2x">;
- defvar lang_std = LangOpts<"LangStd">;
- defvar open_cl = LangOpts<"OpenCL">;
- defvar cuda = LangOpts<"CUDA">;
- defvar render_script = LangOpts<"RenderScript">;
- defvar hip = LangOpts<"HIP">;
- defvar gnu_mode = LangOpts<"GNUMode">;
- defvar asm_preprocessor = LangOpts<"AsmPreprocessor">;
- defvar hlsl = LangOpts<"HLSL">;
- defvar std = !strconcat("LangStandard::getLangStandardForKind(", lang_std.KeyPath, ")");
- /////////
- // Options
- // The internal option ID must be a valid C++ identifier and results in a
- // clang::driver::options::OPT_XX enum constant for XX.
- //
- // We want to unambiguously be able to refer to options from the driver source
- // code, for this reason the option name is mangled into an ID. This mangling
- // isn't guaranteed to have an inverse, but for practical purposes it does.
- //
- // The mangling scheme is to ignore the leading '-', and perform the following
- // substitutions:
- // _ => __
- // - => _
- // / => _SLASH
- // # => _HASH
- // ? => _QUESTION
- // , => _COMMA
- // = => _EQ
- // C++ => CXX
- // . => _
- // Developer Driver Options
- def internal_Group : OptionGroup<"<clang internal options>">, Flags<[HelpHidden]>;
- def internal_driver_Group : OptionGroup<"<clang driver internal options>">,
- Group<internal_Group>, HelpText<"DRIVER OPTIONS">;
- def internal_debug_Group :
- OptionGroup<"<clang debug/development internal options>">,
- Group<internal_Group>, HelpText<"DEBUG/DEVELOPMENT OPTIONS">;
- class InternalDriverOpt : Group<internal_driver_Group>,
- Flags<[NoXarchOption, HelpHidden]>;
- def driver_mode : Joined<["--"], "driver-mode=">, Group<internal_driver_Group>,
- Flags<[CoreOption, NoXarchOption, HelpHidden]>,
- HelpText<"Set the driver mode to either 'gcc', 'g++', 'cpp', or 'cl'">;
- def rsp_quoting : Joined<["--"], "rsp-quoting=">, Group<internal_driver_Group>,
- Flags<[CoreOption, NoXarchOption, HelpHidden]>,
- HelpText<"Set the rsp quoting to either 'posix', or 'windows'">;
- def ccc_gcc_name : Separate<["-"], "ccc-gcc-name">, InternalDriverOpt,
- HelpText<"Name for native GCC compiler">,
- MetaVarName<"<gcc-path>">;
- class InternalDebugOpt : Group<internal_debug_Group>,
- Flags<[NoXarchOption, HelpHidden, CoreOption]>;
- def ccc_install_dir : Separate<["-"], "ccc-install-dir">, InternalDebugOpt,
- HelpText<"Simulate installation in the given directory">;
- def ccc_print_phases : Flag<["-"], "ccc-print-phases">, InternalDebugOpt,
- HelpText<"Dump list of actions to perform">;
- def ccc_print_bindings : Flag<["-"], "ccc-print-bindings">, InternalDebugOpt,
- HelpText<"Show bindings of tools to actions">;
- def ccc_arcmt_check : Flag<["-"], "ccc-arcmt-check">, InternalDriverOpt,
- HelpText<"Check for ARC migration issues that need manual handling">;
- def ccc_arcmt_modify : Flag<["-"], "ccc-arcmt-modify">, InternalDriverOpt,
- HelpText<"Apply modifications to files to conform to ARC">;
- def ccc_arcmt_migrate : Separate<["-"], "ccc-arcmt-migrate">, InternalDriverOpt,
- HelpText<"Apply modifications and produces temporary files that conform to ARC">;
- def arcmt_migrate_report_output : Separate<["-"], "arcmt-migrate-report-output">,
- HelpText<"Output path for the plist report">, Flags<[CC1Option]>,
- MarshallingInfoString<FrontendOpts<"ARCMTMigrateReportOut">>;
- def arcmt_migrate_emit_arc_errors : Flag<["-"], "arcmt-migrate-emit-errors">,
- HelpText<"Emit ARC errors even if the migrator can fix them">, Flags<[CC1Option]>,
- MarshallingInfoFlag<FrontendOpts<"ARCMTMigrateEmitARCErrors">>;
- def gen_reproducer_eq: Joined<["-"], "gen-reproducer=">, Flags<[NoArgumentUnused, CoreOption]>,
- HelpText<"Emit reproducer on (option: off, crash (default), error, always)">;
- def gen_reproducer: Flag<["-"], "gen-reproducer">, InternalDebugOpt,
- Alias<gen_reproducer_eq>, AliasArgs<["always"]>,
- HelpText<"Auto-generates preprocessed source files and a reproduction script">;
- def gen_cdb_fragment_path: Separate<["-"], "gen-cdb-fragment-path">, InternalDebugOpt,
- HelpText<"Emit a compilation database fragment to the specified directory">;
- def round_trip_args : Flag<["-"], "round-trip-args">, Flags<[CC1Option, NoDriverOption]>,
- HelpText<"Enable command line arguments round-trip.">;
- def no_round_trip_args : Flag<["-"], "no-round-trip-args">, Flags<[CC1Option, NoDriverOption]>,
- HelpText<"Disable command line arguments round-trip.">;
- def _migrate : Flag<["--"], "migrate">, Flags<[NoXarchOption]>,
- HelpText<"Run the migrator">;
- def ccc_objcmt_migrate : Separate<["-"], "ccc-objcmt-migrate">,
- InternalDriverOpt,
- HelpText<"Apply modifications and produces temporary files to migrate to "
- "modern ObjC syntax">;
- def objcmt_migrate_literals : Flag<["-"], "objcmt-migrate-literals">, Flags<[CC1Option]>,
- HelpText<"Enable migration to modern ObjC literals">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_Literals">;
- def objcmt_migrate_subscripting : Flag<["-"], "objcmt-migrate-subscripting">, Flags<[CC1Option]>,
- HelpText<"Enable migration to modern ObjC subscripting">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_Subscripting">;
- def objcmt_migrate_property : Flag<["-"], "objcmt-migrate-property">, Flags<[CC1Option]>,
- HelpText<"Enable migration to modern ObjC property">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_Property">;
- def objcmt_migrate_all : Flag<["-"], "objcmt-migrate-all">, Flags<[CC1Option]>,
- HelpText<"Enable migration to modern ObjC">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_MigrateDecls">;
- def objcmt_migrate_readonly_property : Flag<["-"], "objcmt-migrate-readonly-property">, Flags<[CC1Option]>,
- HelpText<"Enable migration to modern ObjC readonly property">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_ReadonlyProperty">;
- def objcmt_migrate_readwrite_property : Flag<["-"], "objcmt-migrate-readwrite-property">, Flags<[CC1Option]>,
- HelpText<"Enable migration to modern ObjC readwrite property">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_ReadwriteProperty">;
- def objcmt_migrate_property_dot_syntax : Flag<["-"], "objcmt-migrate-property-dot-syntax">, Flags<[CC1Option]>,
- HelpText<"Enable migration of setter/getter messages to property-dot syntax">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_PropertyDotSyntax">;
- def objcmt_migrate_annotation : Flag<["-"], "objcmt-migrate-annotation">, Flags<[CC1Option]>,
- HelpText<"Enable migration to property and method annotations">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_Annotation">;
- def objcmt_migrate_instancetype : Flag<["-"], "objcmt-migrate-instancetype">, Flags<[CC1Option]>,
- HelpText<"Enable migration to infer instancetype for method result type">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_Instancetype">;
- def objcmt_migrate_nsmacros : Flag<["-"], "objcmt-migrate-ns-macros">, Flags<[CC1Option]>,
- HelpText<"Enable migration to NS_ENUM/NS_OPTIONS macros">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_NsMacros">;
- def objcmt_migrate_protocol_conformance : Flag<["-"], "objcmt-migrate-protocol-conformance">, Flags<[CC1Option]>,
- HelpText<"Enable migration to add protocol conformance on classes">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_ProtocolConformance">;
- def objcmt_atomic_property : Flag<["-"], "objcmt-atomic-property">, Flags<[CC1Option]>,
- HelpText<"Make migration to 'atomic' properties">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_AtomicProperty">;
- def objcmt_returns_innerpointer_property : Flag<["-"], "objcmt-returns-innerpointer-property">, Flags<[CC1Option]>,
- HelpText<"Enable migration to annotate property with NS_RETURNS_INNER_POINTER">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_ReturnsInnerPointerProperty">;
- def objcmt_ns_nonatomic_iosonly: Flag<["-"], "objcmt-ns-nonatomic-iosonly">, Flags<[CC1Option]>,
- HelpText<"Enable migration to use NS_NONATOMIC_IOSONLY macro for setting property's 'atomic' attribute">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_NsAtomicIOSOnlyProperty">;
- def objcmt_migrate_designated_init : Flag<["-"], "objcmt-migrate-designated-init">, Flags<[CC1Option]>,
- HelpText<"Enable migration to infer NS_DESIGNATED_INITIALIZER for initializer methods">,
- MarshallingInfoBitfieldFlag<FrontendOpts<"ObjCMTAction">, "FrontendOptions::ObjCMT_DesignatedInitializer">;
- def objcmt_allowlist_dir_path: Joined<["-"], "objcmt-allowlist-dir-path=">, Flags<[CC1Option]>,
- HelpText<"Only modify files with a filename contained in the provided directory path">,
- MarshallingInfoString<FrontendOpts<"ObjCMTAllowListPath">>;
- def : Joined<["-"], "objcmt-whitelist-dir-path=">, Flags<[CC1Option]>,
- HelpText<"Alias for -objcmt-allowlist-dir-path">,
- Alias<objcmt_allowlist_dir_path>;
- // The misspelt "white-list" [sic] alias is due for removal.
- def : Joined<["-"], "objcmt-white-list-dir-path=">, Flags<[CC1Option]>,
- Alias<objcmt_allowlist_dir_path>;
- // Make sure all other -ccc- options are rejected.
- def ccc_ : Joined<["-"], "ccc-">, Group<internal_Group>, Flags<[Unsupported]>;
- // Standard Options
- def _HASH_HASH_HASH : Flag<["-"], "###">, Flags<[NoXarchOption, CoreOption, FlangOption]>,
- HelpText<"Print (but do not run) the commands to run for this compilation">;
- def _DASH_DASH : Option<["--"], "", KIND_REMAINING_ARGS>,
- Flags<[NoXarchOption, CoreOption]>;
- def A : JoinedOrSeparate<["-"], "A">, Flags<[RenderJoined]>, Group<gfortran_Group>;
- def B : JoinedOrSeparate<["-"], "B">, MetaVarName<"<prefix>">,
- HelpText<"Search $prefix$file for executables, libraries, and data files. "
- "If $prefix is a directory, search $prefix/$file">;
- def gcc_install_dir_EQ : Joined<["--"], "gcc-install-dir=">,
- HelpText<"Use GCC installation in the specified directory. The directory ends with path components like 'lib{,32,64}/gcc{,-cross}/$triple/$version'. "
- "Note: executables (e.g. ld) used by the compiler are not overridden by the selected GCC installation">;
- def gcc_toolchain : Joined<["--"], "gcc-toolchain=">, Flags<[NoXarchOption]>,
- HelpText<"Specify a directory where Clang can find 'include' and 'lib{,32,64}/gcc{,-cross}/$triple/$version'. "
- "Clang will use the GCC installation with the largest version">;
- def CC : Flag<["-"], "CC">, Flags<[CC1Option]>, Group<Preprocessor_Group>,
- HelpText<"Include comments from within macros in preprocessed output">,
- MarshallingInfoFlag<PreprocessorOutputOpts<"ShowMacroComments">>;
- def C : Flag<["-"], "C">, Flags<[CC1Option]>, Group<Preprocessor_Group>,
- HelpText<"Include comments in preprocessed output">,
- MarshallingInfoFlag<PreprocessorOutputOpts<"ShowComments">>;
- def D : JoinedOrSeparate<["-"], "D">, Group<Preprocessor_Group>,
- Flags<[CC1Option, FlangOption, FC1Option]>, MetaVarName<"<macro>=<value>">,
- HelpText<"Define <macro> to <value> (or 1 if <value> omitted)">;
- def E : Flag<["-"], "E">, Flags<[NoXarchOption,CC1Option, FlangOption, FC1Option]>, Group<Action_Group>,
- HelpText<"Only run the preprocessor">;
- def F : JoinedOrSeparate<["-"], "F">, Flags<[RenderJoined,CC1Option]>,
- HelpText<"Add directory to framework include search path">;
- def G : JoinedOrSeparate<["-"], "G">, Flags<[NoXarchOption]>, Group<m_Group>,
- MetaVarName<"<size>">, HelpText<"Put objects of at most <size> bytes "
- "into small data section (MIPS / Hexagon)">;
- def G_EQ : Joined<["-"], "G=">, Flags<[NoXarchOption]>, Group<m_Group>, Alias<G>;
- def H : Flag<["-"], "H">, Flags<[CC1Option]>, Group<Preprocessor_Group>,
- HelpText<"Show header includes and nesting depth">,
- MarshallingInfoFlag<DependencyOutputOpts<"ShowHeaderIncludes">>;
- def fshow_skipped_includes : Flag<["-"], "fshow-skipped-includes">,
- Flags<[CC1Option]>, HelpText<"Show skipped includes in -H output.">,
- DocBrief<[{#include files may be "skipped" due to include guard optimization
- or #pragma once. This flag makes -H show also such includes.}]>,
- MarshallingInfoFlag<DependencyOutputOpts<"ShowSkippedHeaderIncludes">>;
- def I_ : Flag<["-"], "I-">, Group<I_Group>,
- HelpText<"Restrict all prior -I flags to double-quoted inclusion and "
- "remove current directory from include path">;
- def I : JoinedOrSeparate<["-"], "I">, Group<I_Group>,
- Flags<[CC1Option,CC1AsOption,FlangOption,FC1Option]>, MetaVarName<"<dir>">,
- HelpText<"Add directory to the end of the list of include search paths">,
- DocBrief<[{Add directory to include search path. For C++ inputs, if
- there are multiple -I options, these directories are searched
- in the order they are given before the standard system directories
- are searched. If the same directory is in the SYSTEM include search
- paths, for example if also specified with -isystem, the -I option
- will be ignored}]>;
- def L : JoinedOrSeparate<["-"], "L">, Flags<[RenderJoined]>, Group<Link_Group>,
- MetaVarName<"<dir>">, HelpText<"Add directory to library search path">;
- def MD : Flag<["-"], "MD">, Group<M_Group>,
- HelpText<"Write a depfile containing user and system headers">;
- def MMD : Flag<["-"], "MMD">, Group<M_Group>,
- HelpText<"Write a depfile containing user headers">;
- def M : Flag<["-"], "M">, Group<M_Group>,
- HelpText<"Like -MD, but also implies -E and writes to stdout by default">;
- def MM : Flag<["-"], "MM">, Group<M_Group>,
- HelpText<"Like -MMD, but also implies -E and writes to stdout by default">;
- def MF : JoinedOrSeparate<["-"], "MF">, Group<M_Group>,
- HelpText<"Write depfile output from -MMD, -MD, -MM, or -M to <file>">,
- MetaVarName<"<file>">;
- def MG : Flag<["-"], "MG">, Group<M_Group>, Flags<[CC1Option]>,
- HelpText<"Add missing headers to depfile">,
- MarshallingInfoFlag<DependencyOutputOpts<"AddMissingHeaderDeps">>;
- def MJ : JoinedOrSeparate<["-"], "MJ">, Group<M_Group>,
- HelpText<"Write a compilation database entry per input">;
- def MP : Flag<["-"], "MP">, Group<M_Group>, Flags<[CC1Option]>,
- HelpText<"Create phony target for each dependency (other than main file)">,
- MarshallingInfoFlag<DependencyOutputOpts<"UsePhonyTargets">>;
- def MQ : JoinedOrSeparate<["-"], "MQ">, Group<M_Group>, Flags<[CC1Option]>,
- HelpText<"Specify name of main file output to quote in depfile">;
- def MT : JoinedOrSeparate<["-"], "MT">, Group<M_Group>, Flags<[CC1Option]>,
- HelpText<"Specify name of main file output in depfile">,
- MarshallingInfoStringVector<DependencyOutputOpts<"Targets">>;
- def MV : Flag<["-"], "MV">, Group<M_Group>, Flags<[CC1Option]>,
- HelpText<"Use NMake/Jom format for the depfile">,
- MarshallingInfoFlag<DependencyOutputOpts<"OutputFormat">, "DependencyOutputFormat::Make">,
- Normalizer<"makeFlagToValueNormalizer(DependencyOutputFormat::NMake)">;
- def Mach : Flag<["-"], "Mach">, Group<Link_Group>;
- def O0 : Flag<["-"], "O0">, Group<O_Group>, Flags<[CC1Option, FC1Option, HelpHidden]>;
- def O4 : Flag<["-"], "O4">, Group<O_Group>, Flags<[CC1Option, FC1Option, HelpHidden]>;
- def ObjCXX : Flag<["-"], "ObjC++">, Flags<[NoXarchOption]>,
- HelpText<"Treat source input files as Objective-C++ inputs">;
- def ObjC : Flag<["-"], "ObjC">, Flags<[NoXarchOption]>,
- HelpText<"Treat source input files as Objective-C inputs">;
- def O : Joined<["-"], "O">, Group<O_Group>, Flags<[CC1Option,FC1Option]>;
- def O_flag : Flag<["-"], "O">, Flags<[CC1Option,FC1Option]>, Alias<O>, AliasArgs<["1"]>;
- def Ofast : Joined<["-"], "Ofast">, Group<O_Group>, Flags<[CC1Option, FlangOption]>;
- def P : Flag<["-"], "P">, Flags<[CC1Option,FlangOption,FC1Option]>, Group<Preprocessor_Group>,
- HelpText<"Disable linemarker output in -E mode">,
- MarshallingInfoNegativeFlag<PreprocessorOutputOpts<"ShowLineMarkers">>;
- def Qy : Flag<["-"], "Qy">, Flags<[CC1Option]>,
- HelpText<"Emit metadata containing compiler name and version">;
- def Qn : Flag<["-"], "Qn">, Flags<[CC1Option]>,
- HelpText<"Do not emit metadata containing compiler name and version">;
- def : Flag<["-"], "fident">, Group<f_Group>, Alias<Qy>,
- Flags<[CoreOption, CC1Option]>;
- def : Flag<["-"], "fno-ident">, Group<f_Group>, Alias<Qn>,
- Flags<[CoreOption, CC1Option]>;
- def Qunused_arguments : Flag<["-"], "Qunused-arguments">, Flags<[NoXarchOption, CoreOption]>,
- HelpText<"Don't emit warning for unused driver arguments">;
- def Q : Flag<["-"], "Q">, IgnoredGCCCompat;
- def Rpass_EQ : Joined<["-"], "Rpass=">, Group<R_value_Group>, Flags<[CC1Option]>,
- HelpText<"Report transformations performed by optimization passes whose "
- "name matches the given POSIX regular expression">;
- def Rpass_missed_EQ : Joined<["-"], "Rpass-missed=">, Group<R_value_Group>,
- Flags<[CC1Option]>,
- HelpText<"Report missed transformations by optimization passes whose "
- "name matches the given POSIX regular expression">;
- def Rpass_analysis_EQ : Joined<["-"], "Rpass-analysis=">, Group<R_value_Group>,
- Flags<[CC1Option]>,
- HelpText<"Report transformation analysis from optimization passes whose "
- "name matches the given POSIX regular expression">;
- def R_Joined : Joined<["-"], "R">, Group<R_Group>, Flags<[CC1Option, CoreOption]>,
- MetaVarName<"<remark>">, HelpText<"Enable the specified remark">;
- def S : Flag<["-"], "S">, Flags<[NoXarchOption,CC1Option,FlangOption,FC1Option]>, Group<Action_Group>,
- HelpText<"Only run preprocess and compilation steps">;
- def T : JoinedOrSeparate<["-"], "T">, Group<T_Group>,
- MetaVarName<"<script>">, HelpText<"Specify <script> as linker script">;
- def U : JoinedOrSeparate<["-"], "U">, Group<Preprocessor_Group>,
- Flags<[CC1Option, FlangOption, FC1Option]>, MetaVarName<"<macro>">, HelpText<"Undefine macro <macro>">;
- def V : JoinedOrSeparate<["-"], "V">, Flags<[NoXarchOption, Unsupported]>;
- def Wa_COMMA : CommaJoined<["-"], "Wa,">,
- HelpText<"Pass the comma separated arguments in <arg> to the assembler">,
- MetaVarName<"<arg>">;
- def Wall : Flag<["-"], "Wall">, Group<W_Group>, Flags<[CC1Option, HelpHidden]>;
- def WCL4 : Flag<["-"], "WCL4">, Group<W_Group>, Flags<[CC1Option, HelpHidden]>;
- def Wsystem_headers : Flag<["-"], "Wsystem-headers">, Group<W_Group>, Flags<[CC1Option, HelpHidden]>;
- def Wno_system_headers : Flag<["-"], "Wno-system-headers">, Group<W_Group>, Flags<[CC1Option, HelpHidden]>;
- def Wdeprecated : Flag<["-"], "Wdeprecated">, Group<W_Group>, Flags<[CC1Option]>,
- HelpText<"Enable warnings for deprecated constructs and define __DEPRECATED">;
- def Wno_deprecated : Flag<["-"], "Wno-deprecated">, Group<W_Group>, Flags<[CC1Option]>;
- def Wl_COMMA : CommaJoined<["-"], "Wl,">, Flags<[LinkerInput, RenderAsInput]>,
- HelpText<"Pass the comma separated arguments in <arg> to the linker">,
- MetaVarName<"<arg>">, Group<Link_Group>;
- // FIXME: This is broken; these should not be Joined arguments.
- def Wno_nonportable_cfstrings : Joined<["-"], "Wno-nonportable-cfstrings">, Group<W_Group>,
- Flags<[CC1Option]>;
- def Wnonportable_cfstrings : Joined<["-"], "Wnonportable-cfstrings">, Group<W_Group>,
- Flags<[CC1Option]>;
- def Wp_COMMA : CommaJoined<["-"], "Wp,">,
- HelpText<"Pass the comma separated arguments in <arg> to the preprocessor">,
- MetaVarName<"<arg>">, Group<Preprocessor_Group>;
- def Wundef_prefix_EQ : CommaJoined<["-"], "Wundef-prefix=">, Group<W_value_Group>,
- Flags<[CC1Option, CoreOption, HelpHidden]>, MetaVarName<"<arg>">,
- HelpText<"Enable warnings for undefined macros with a prefix in the comma separated list <arg>">,
- MarshallingInfoStringVector<DiagnosticOpts<"UndefPrefixes">>;
- def Wwrite_strings : Flag<["-"], "Wwrite-strings">, Group<W_Group>, Flags<[CC1Option, HelpHidden]>;
- def Wno_write_strings : Flag<["-"], "Wno-write-strings">, Group<W_Group>, Flags<[CC1Option, HelpHidden]>;
- def W_Joined : Joined<["-"], "W">, Group<W_Group>, Flags<[CC1Option, CoreOption, FC1Option, FlangOption]>,
- MetaVarName<"<warning>">, HelpText<"Enable the specified warning">;
- def Xanalyzer : Separate<["-"], "Xanalyzer">,
- HelpText<"Pass <arg> to the static analyzer">, MetaVarName<"<arg>">,
- Group<StaticAnalyzer_Group>;
- def Xarch__ : JoinedAndSeparate<["-"], "Xarch_">, Flags<[NoXarchOption]>;
- def Xarch_host : Separate<["-"], "Xarch_host">, Flags<[NoXarchOption]>,
- HelpText<"Pass <arg> to the CUDA/HIP host compilation">, MetaVarName<"<arg>">;
- def Xarch_device : Separate<["-"], "Xarch_device">, Flags<[NoXarchOption]>,
- HelpText<"Pass <arg> to the CUDA/HIP device compilation">, MetaVarName<"<arg>">;
- def Xassembler : Separate<["-"], "Xassembler">,
- HelpText<"Pass <arg> to the assembler">, MetaVarName<"<arg>">,
- Group<CompileOnly_Group>;
- def Xclang : Separate<["-"], "Xclang">,
- HelpText<"Pass <arg> to clang -cc1">, MetaVarName<"<arg>">,
- Flags<[NoXarchOption, CoreOption]>, Group<CompileOnly_Group>;
- def : Joined<["-"], "Xclang=">, Group<CompileOnly_Group>, Flags<[NoXarchOption, CoreOption]>, Alias<Xclang>,
- HelpText<"Alias for -Xclang">, MetaVarName<"<arg>">;
- def Xcuda_fatbinary : Separate<["-"], "Xcuda-fatbinary">,
- HelpText<"Pass <arg> to fatbinary invocation">, MetaVarName<"<arg>">;
- def Xcuda_ptxas : Separate<["-"], "Xcuda-ptxas">,
- HelpText<"Pass <arg> to the ptxas assembler">, MetaVarName<"<arg>">;
- def Xopenmp_target : Separate<["-"], "Xopenmp-target">, Group<CompileOnly_Group>,
- HelpText<"Pass <arg> to the target offloading toolchain.">, MetaVarName<"<arg>">;
- def Xopenmp_target_EQ : JoinedAndSeparate<["-"], "Xopenmp-target=">, Group<CompileOnly_Group>,
- HelpText<"Pass <arg> to the target offloading toolchain identified by <triple>.">,
- MetaVarName<"<triple> <arg>">;
- def z : Separate<["-"], "z">, Flags<[LinkerInput]>,
- HelpText<"Pass -z <arg> to the linker">, MetaVarName<"<arg>">,
- Group<Link_Group>;
- def offload_link : Flag<["--"], "offload-link">, Group<Link_Group>,
- HelpText<"Use the new offloading linker to perform the link job.">;
- def Xlinker : Separate<["-"], "Xlinker">, Flags<[LinkerInput, RenderAsInput]>,
- HelpText<"Pass <arg> to the linker">, MetaVarName<"<arg>">,
- Group<Link_Group>;
- def Xoffload_linker : JoinedAndSeparate<["-"], "Xoffload-linker">,
- HelpText<"Pass <arg> to the offload linkers or the ones idenfied by -<triple>">,
- MetaVarName<"<triple> <arg>">, Group<Link_Group>;
- def Xpreprocessor : Separate<["-"], "Xpreprocessor">, Group<Preprocessor_Group>,
- HelpText<"Pass <arg> to the preprocessor">, MetaVarName<"<arg>">;
- def X_Flag : Flag<["-"], "X">, Group<Link_Group>;
- // Used by some macOS projects. IgnoredGCCCompat is a misnomer since GCC doesn't allow it.
- def : Flag<["-"], "Xparser">, IgnoredGCCCompat;
- // FIXME -Xcompiler is misused by some ChromeOS packages. Remove it after a while.
- def : Flag<["-"], "Xcompiler">, IgnoredGCCCompat;
- def Z_Flag : Flag<["-"], "Z">, Group<Link_Group>;
- def all__load : Flag<["-"], "all_load">;
- def allowable__client : Separate<["-"], "allowable_client">;
- def ansi : Flag<["-", "--"], "ansi">, Group<CompileOnly_Group>;
- def arch__errors__fatal : Flag<["-"], "arch_errors_fatal">;
- def arch : Separate<["-"], "arch">, Flags<[NoXarchOption]>;
- def arch__only : Separate<["-"], "arch_only">;
- def autocomplete : Joined<["--"], "autocomplete=">;
- def bind__at__load : Flag<["-"], "bind_at_load">;
- def bundle__loader : Separate<["-"], "bundle_loader">;
- def bundle : Flag<["-"], "bundle">;
- def b : JoinedOrSeparate<["-"], "b">, Flags<[LinkerInput]>,
- HelpText<"Pass -b <arg> to the linker on AIX">, MetaVarName<"<arg>">,
- Group<Link_Group>;
- // OpenCL-only Options
- def cl_opt_disable : Flag<["-"], "cl-opt-disable">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. This option disables all optimizations. By default optimizations are enabled.">;
- def cl_strict_aliasing : Flag<["-"], "cl-strict-aliasing">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. This option is added for compatibility with OpenCL 1.0.">;
- def cl_single_precision_constant : Flag<["-"], "cl-single-precision-constant">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. Treat double precision floating-point constant as single precision constant.">,
- MarshallingInfoFlag<LangOpts<"SinglePrecisionConstants">>;
- def cl_finite_math_only : Flag<["-"], "cl-finite-math-only">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. Allow floating-point optimizations that assume arguments and results are not NaNs or +-Inf.">,
- MarshallingInfoFlag<LangOpts<"CLFiniteMathOnly">>;
- def cl_kernel_arg_info : Flag<["-"], "cl-kernel-arg-info">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. Generate kernel argument metadata.">,
- MarshallingInfoFlag<CodeGenOpts<"EmitOpenCLArgMetadata">>;
- def cl_unsafe_math_optimizations : Flag<["-"], "cl-unsafe-math-optimizations">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. Allow unsafe floating-point optimizations. Also implies -cl-no-signed-zeros and -cl-mad-enable.">,
- MarshallingInfoFlag<LangOpts<"CLUnsafeMath">>;
- def cl_fast_relaxed_math : Flag<["-"], "cl-fast-relaxed-math">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. Sets -cl-finite-math-only and -cl-unsafe-math-optimizations, and defines __FAST_RELAXED_MATH__.">,
- MarshallingInfoFlag<LangOpts<"FastRelaxedMath">>;
- def cl_mad_enable : Flag<["-"], "cl-mad-enable">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. Allow use of less precise MAD computations in the generated binary.">,
- MarshallingInfoFlag<CodeGenOpts<"LessPreciseFPMAD">>,
- ImpliedByAnyOf<[cl_unsafe_math_optimizations.KeyPath, cl_fast_relaxed_math.KeyPath]>;
- def cl_no_signed_zeros : Flag<["-"], "cl-no-signed-zeros">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. Allow use of less precise no signed zeros computations in the generated binary.">,
- MarshallingInfoFlag<LangOpts<"CLNoSignedZero">>;
- def cl_std_EQ : Joined<["-"], "cl-std=">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL language standard to compile for.">,
- Values<"cl,CL,cl1.0,CL1.0,cl1.1,CL1.1,cl1.2,CL1.2,cl2.0,CL2.0,cl3.0,CL3.0,clc++,CLC++,clc++1.0,CLC++1.0,clc++2021,CLC++2021">;
- def cl_denorms_are_zero : Flag<["-"], "cl-denorms-are-zero">, Group<opencl_Group>,
- HelpText<"OpenCL only. Allow denormals to be flushed to zero.">;
- def cl_fp32_correctly_rounded_divide_sqrt : Flag<["-"], "cl-fp32-correctly-rounded-divide-sqrt">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded.">,
- MarshallingInfoFlag<CodeGenOpts<"OpenCLCorrectlyRoundedDivSqrt">>;
- def cl_uniform_work_group_size : Flag<["-"], "cl-uniform-work-group-size">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. Defines that the global work-size be a multiple of the work-group size specified to clEnqueueNDRangeKernel">,
- MarshallingInfoFlag<CodeGenOpts<"UniformWGSize">>;
- def cl_no_stdinc : Flag<["-"], "cl-no-stdinc">, Group<opencl_Group>,
- HelpText<"OpenCL only. Disables all standard includes containing non-native compiler types and functions.">;
- def cl_ext_EQ : CommaJoined<["-"], "cl-ext=">, Group<opencl_Group>, Flags<[CC1Option]>,
- HelpText<"OpenCL only. Enable or disable OpenCL extensions/optional features. The argument is a comma-separated "
- "sequence of one or more extension names, each prefixed by '+' or '-'.">,
- MarshallingInfoStringVector<TargetOpts<"OpenCLExtensionsAsWritten">>;
- def client__name : JoinedOrSeparate<["-"], "client_name">;
- def combine : Flag<["-", "--"], "combine">, Flags<[NoXarchOption, Unsupported]>;
- def compatibility__version : JoinedOrSeparate<["-"], "compatibility_version">;
- def config : Joined<["--"], "config=">, Flags<[NoXarchOption, CoreOption]>, MetaVarName<"<file>">,
- HelpText<"Specify configuration file">;
- def : Separate<["--"], "config">, Alias<config>;
- def no_default_config : Flag<["--"], "no-default-config">, Flags<[NoXarchOption, CoreOption]>,
- HelpText<"Disable loading default configuration files">;
- def config_system_dir_EQ : Joined<["--"], "config-system-dir=">, Flags<[NoXarchOption, CoreOption, HelpHidden]>,
- HelpText<"System directory for configuration files">;
- def config_user_dir_EQ : Joined<["--"], "config-user-dir=">, Flags<[NoXarchOption, CoreOption, HelpHidden]>,
- HelpText<"User directory for configuration files">;
- def coverage : Flag<["-", "--"], "coverage">, Group<Link_Group>, Flags<[CoreOption]>;
- def cpp_precomp : Flag<["-"], "cpp-precomp">, Group<clang_ignored_f_Group>;
- def current__version : JoinedOrSeparate<["-"], "current_version">;
- def cxx_isystem : JoinedOrSeparate<["-"], "cxx-isystem">, Group<clang_i_Group>,
- HelpText<"Add directory to the C++ SYSTEM include search path">, Flags<[CC1Option]>,
- MetaVarName<"<directory>">;
- def c : Flag<["-"], "c">, Flags<[NoXarchOption, FlangOption]>, Group<Action_Group>,
- HelpText<"Only run preprocess, compile, and assemble steps">;
- def fconvergent_functions : Flag<["-"], "fconvergent-functions">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Assume functions may be convergent">;
- def gpu_use_aux_triple_only : Flag<["--"], "gpu-use-aux-triple-only">,
- InternalDriverOpt, HelpText<"Prepare '-aux-triple' only without populating "
- "'-aux-target-cpu' and '-aux-target-feature'.">;
- def cuda_include_ptx_EQ : Joined<["--"], "cuda-include-ptx=">, Flags<[NoXarchOption]>,
- HelpText<"Include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.">;
- def no_cuda_include_ptx_EQ : Joined<["--"], "no-cuda-include-ptx=">, Flags<[NoXarchOption]>,
- HelpText<"Do not include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.">;
- def offload_arch_EQ : Joined<["--"], "offload-arch=">, Flags<[NoXarchOption]>,
- HelpText<"Specify an offloading device architecture for CUDA, HIP, or OpenMP. (e.g. sm_35). "
- "If 'native' is used the compiler will detect locally installed architectures. "
- "For HIP offloading, the device architecture can be followed by target ID features "
- "delimited by a colon (e.g. gfx908:xnack+:sramecc-). May be specified more than once.">;
- def cuda_gpu_arch_EQ : Joined<["--"], "cuda-gpu-arch=">, Flags<[NoXarchOption]>,
- Alias<offload_arch_EQ>;
- def cuda_feature_EQ : Joined<["--"], "cuda-feature=">, HelpText<"Manually specify the CUDA feature to use">;
- def hip_link : Flag<["--"], "hip-link">,
- HelpText<"Link clang-offload-bundler bundles for HIP">;
- def no_hip_rt: Flag<["-"], "no-hip-rt">,
- HelpText<"Do not link against HIP runtime libraries">;
- def no_offload_arch_EQ : Joined<["--"], "no-offload-arch=">, Flags<[NoXarchOption]>,
- HelpText<"Remove CUDA/HIP offloading device architecture (e.g. sm_35, gfx906) from the list of devices to compile for. "
- "'all' resets the list to its default value.">;
- def emit_static_lib : Flag<["--"], "emit-static-lib">,
- HelpText<"Enable linker job to emit a static library.">;
- def no_cuda_gpu_arch_EQ : Joined<["--"], "no-cuda-gpu-arch=">, Flags<[NoXarchOption]>,
- Alias<no_offload_arch_EQ>;
- def cuda_noopt_device_debug : Flag<["--"], "cuda-noopt-device-debug">,
- HelpText<"Enable device-side debug info generation. Disables ptxas optimizations.">;
- def no_cuda_version_check : Flag<["--"], "no-cuda-version-check">,
- HelpText<"Don't error out if the detected version of the CUDA install is "
- "too low for the requested CUDA gpu architecture.">;
- def no_cuda_noopt_device_debug : Flag<["--"], "no-cuda-noopt-device-debug">;
- def cuda_path_EQ : Joined<["--"], "cuda-path=">, Group<i_Group>,
- HelpText<"CUDA installation path">;
- def cuda_path_ignore_env : Flag<["--"], "cuda-path-ignore-env">, Group<i_Group>,
- HelpText<"Ignore environment variables to detect CUDA installation">;
- def ptxas_path_EQ : Joined<["--"], "ptxas-path=">, Group<i_Group>,
- HelpText<"Path to ptxas (used for compiling CUDA code)">;
- def fgpu_flush_denormals_to_zero : Flag<["-"], "fgpu-flush-denormals-to-zero">,
- HelpText<"Flush denormal floating point values to zero in CUDA/HIP device mode.">;
- def fno_gpu_flush_denormals_to_zero : Flag<["-"], "fno-gpu-flush-denormals-to-zero">;
- def fcuda_flush_denormals_to_zero : Flag<["-"], "fcuda-flush-denormals-to-zero">,
- Alias<fgpu_flush_denormals_to_zero>;
- def fno_cuda_flush_denormals_to_zero : Flag<["-"], "fno-cuda-flush-denormals-to-zero">,
- Alias<fno_gpu_flush_denormals_to_zero>;
- defm gpu_rdc : BoolFOption<"gpu-rdc",
- LangOpts<"GPURelocatableDeviceCode">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Generate relocatable device code, also known as separate compilation mode">,
- NegFlag<SetFalse>>;
- def : Flag<["-"], "fcuda-rdc">, Alias<fgpu_rdc>;
- def : Flag<["-"], "fno-cuda-rdc">, Alias<fno_gpu_rdc>;
- defm cuda_short_ptr : BoolFOption<"cuda-short-ptr",
- TargetOpts<"NVPTXUseShortPointers">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Use 32-bit pointers for accessing const/local/shared address spaces">,
- NegFlag<SetFalse>>;
- def fgpu_default_stream_EQ : Joined<["-"], "fgpu-default-stream=">,
- HelpText<"Specify default stream. The default value is 'legacy'. (HIP only)">,
- Flags<[CC1Option]>,
- Values<"legacy,per-thread">,
- NormalizedValuesScope<"LangOptions::GPUDefaultStreamKind">,
- NormalizedValues<["Legacy", "PerThread"]>,
- MarshallingInfoEnum<LangOpts<"GPUDefaultStream">, "Legacy">;
- def rocm_path_EQ : Joined<["--"], "rocm-path=">, Group<i_Group>,
- HelpText<"ROCm installation path, used for finding and automatically linking required bitcode libraries.">;
- def hip_path_EQ : Joined<["--"], "hip-path=">, Group<i_Group>,
- HelpText<"HIP runtime installation path, used for finding HIP version and adding HIP include path.">;
- def amdgpu_arch_tool_EQ : Joined<["--"], "amdgpu-arch-tool=">, Group<i_Group>,
- HelpText<"Tool used for detecting AMD GPU arch in the system.">;
- def nvptx_arch_tool_EQ : Joined<["--"], "nvptx-arch-tool=">, Group<i_Group>,
- HelpText<"Tool used for detecting NVIDIA GPU arch in the system.">;
- def rocm_device_lib_path_EQ : Joined<["--"], "rocm-device-lib-path=">, Group<Link_Group>,
- HelpText<"ROCm device library path. Alternative to rocm-path.">;
- def : Joined<["--"], "hip-device-lib-path=">, Alias<rocm_device_lib_path_EQ>;
- def hip_device_lib_EQ : Joined<["--"], "hip-device-lib=">, Group<Link_Group>,
- HelpText<"HIP device library">;
- def hip_version_EQ : Joined<["--"], "hip-version=">,
- HelpText<"HIP version in the format of major.minor.patch">;
- def fhip_dump_offload_linker_script : Flag<["-"], "fhip-dump-offload-linker-script">,
- Group<f_Group>, Flags<[NoArgumentUnused, HelpHidden]>;
- defm hip_new_launch_api : BoolFOption<"hip-new-launch-api",
- LangOpts<"HIPUseNewLaunchAPI">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Use">, NegFlag<SetFalse, [], "Don't use">,
- BothFlags<[], " new kernel launching API for HIP">>;
- defm hip_fp32_correctly_rounded_divide_sqrt : BoolFOption<"hip-fp32-correctly-rounded-divide-sqrt",
- CodeGenOpts<"HIPCorrectlyRoundedDivSqrt">, DefaultTrue,
- PosFlag<SetTrue, [], "Specify">,
- NegFlag<SetFalse, [CC1Option], "Don't specify">,
- BothFlags<[], " that single precision floating-point divide and sqrt used in "
- "the program source are correctly rounded (HIP device compilation only)">>,
- ShouldParseIf<hip.KeyPath>;
- defm hip_kernel_arg_name : BoolFOption<"hip-kernel-arg-name",
- CodeGenOpts<"HIPSaveKernelArgName">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Specify">,
- NegFlag<SetFalse, [], "Don't specify">,
- BothFlags<[], " that kernel argument names are preserved (HIP only)">>,
- ShouldParseIf<hip.KeyPath>;
- def hipspv_pass_plugin_EQ : Joined<["--"], "hipspv-pass-plugin=">,
- Group<Link_Group>, MetaVarName<"<dsopath>">,
- HelpText<"path to a pass plugin for HIP to SPIR-V passes.">;
- defm gpu_allow_device_init : BoolFOption<"gpu-allow-device-init",
- LangOpts<"GPUAllowDeviceInit">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Allow">, NegFlag<SetFalse, [], "Don't allow">,
- BothFlags<[], " device side init function in HIP (experimental)">>,
- ShouldParseIf<hip.KeyPath>;
- defm gpu_defer_diag : BoolFOption<"gpu-defer-diag",
- LangOpts<"GPUDeferDiag">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Defer">, NegFlag<SetFalse, [], "Don't defer">,
- BothFlags<[], " host/device related diagnostic messages for CUDA/HIP">>;
- defm gpu_exclude_wrong_side_overloads : BoolFOption<"gpu-exclude-wrong-side-overloads",
- LangOpts<"GPUExcludeWrongSideOverloads">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Always exclude wrong side overloads">,
- NegFlag<SetFalse, [], "Exclude wrong side overloads only if there are same side overloads">,
- BothFlags<[HelpHidden], " in overloading resolution for CUDA/HIP">>;
- def gpu_max_threads_per_block_EQ : Joined<["--"], "gpu-max-threads-per-block=">,
- Flags<[CC1Option]>,
- HelpText<"Default max threads per block for kernel launch bounds for HIP">,
- MarshallingInfoInt<LangOpts<"GPUMaxThreadsPerBlock">, "1024">,
- ShouldParseIf<hip.KeyPath>;
- def fgpu_inline_threshold_EQ : Joined<["-"], "fgpu-inline-threshold=">,
- Flags<[HelpHidden]>,
- HelpText<"Inline threshold for device compilation for CUDA/HIP">;
- def gpu_instrument_lib_EQ : Joined<["--"], "gpu-instrument-lib=">,
- HelpText<"Instrument device library for HIP, which is a LLVM bitcode containing "
- "__cyg_profile_func_enter and __cyg_profile_func_exit">;
- def fgpu_sanitize : Flag<["-"], "fgpu-sanitize">, Group<f_Group>,
- HelpText<"Enable sanitizer for AMDGPU target">;
- def fno_gpu_sanitize : Flag<["-"], "fno-gpu-sanitize">, Group<f_Group>;
- def gpu_bundle_output : Flag<["--"], "gpu-bundle-output">,
- Group<f_Group>, HelpText<"Bundle output files of HIP device compilation">;
- def no_gpu_bundle_output : Flag<["--"], "no-gpu-bundle-output">,
- Group<f_Group>, HelpText<"Do not bundle output files of HIP device compilation">;
- def cuid_EQ : Joined<["-"], "cuid=">, Flags<[CC1Option]>,
- HelpText<"An ID for compilation unit, which should be the same for the same "
- "compilation unit but different for different compilation units. "
- "It is used to externalize device-side static variables for single "
- "source offloading languages CUDA and HIP so that they can be "
- "accessed by the host code of the same compilation unit.">,
- MarshallingInfoString<LangOpts<"CUID">>;
- def fuse_cuid_EQ : Joined<["-"], "fuse-cuid=">,
- HelpText<"Method to generate ID's for compilation units for single source "
- "offloading languages CUDA and HIP: 'hash' (ID's generated by hashing "
- "file path and command line options) | 'random' (ID's generated as "
- "random numbers) | 'none' (disabled). Default is 'hash'. This option "
- "will be overridden by option '-cuid=[ID]' if it is specified." >;
- def libomptarget_amdgpu_bc_path_EQ : Joined<["--"], "libomptarget-amdgpu-bc-path=">, Group<i_Group>,
- HelpText<"Path to libomptarget-amdgcn bitcode library">;
- def libomptarget_amdgcn_bc_path_EQ : Joined<["--"], "libomptarget-amdgcn-bc-path=">, Group<i_Group>,
- HelpText<"Path to libomptarget-amdgcn bitcode library">, Alias<libomptarget_amdgpu_bc_path_EQ>;
- def libomptarget_nvptx_bc_path_EQ : Joined<["--"], "libomptarget-nvptx-bc-path=">, Group<i_Group>,
- HelpText<"Path to libomptarget-nvptx bitcode library">;
- def dD : Flag<["-"], "dD">, Group<d_Group>, Flags<[CC1Option]>,
- HelpText<"Print macro definitions in -E mode in addition to normal output">;
- def dI : Flag<["-"], "dI">, Group<d_Group>, Flags<[CC1Option]>,
- HelpText<"Print include directives in -E mode in addition to normal output">,
- MarshallingInfoFlag<PreprocessorOutputOpts<"ShowIncludeDirectives">>;
- def dM : Flag<["-"], "dM">, Group<d_Group>, Flags<[CC1Option]>,
- HelpText<"Print macro definitions in -E mode instead of normal output">;
- def dead__strip : Flag<["-"], "dead_strip">;
- def dependency_file : Separate<["-"], "dependency-file">, Flags<[CC1Option]>,
- HelpText<"Filename (or -) to write dependency output to">,
- MarshallingInfoString<DependencyOutputOpts<"OutputFile">>;
- def dependency_dot : Separate<["-"], "dependency-dot">, Flags<[CC1Option]>,
- HelpText<"Filename to write DOT-formatted header dependencies to">,
- MarshallingInfoString<DependencyOutputOpts<"DOTOutputFile">>;
- def module_dependency_dir : Separate<["-"], "module-dependency-dir">,
- Flags<[CC1Option]>, HelpText<"Directory to dump module dependencies to">,
- MarshallingInfoString<DependencyOutputOpts<"ModuleDependencyOutputDir">>;
- def dsym_dir : JoinedOrSeparate<["-"], "dsym-dir">,
- Flags<[NoXarchOption, RenderAsInput]>,
- HelpText<"Directory to output dSYM's (if any) to">, MetaVarName<"<dir>">;
- def dumpmachine : Flag<["-"], "dumpmachine">;
- def dumpspecs : Flag<["-"], "dumpspecs">, Flags<[Unsupported]>;
- def dumpversion : Flag<["-"], "dumpversion">;
- def dylib__file : Separate<["-"], "dylib_file">;
- def dylinker__install__name : JoinedOrSeparate<["-"], "dylinker_install_name">;
- def dylinker : Flag<["-"], "dylinker">;
- def dynamiclib : Flag<["-"], "dynamiclib">;
- def dynamic : Flag<["-"], "dynamic">, Flags<[NoArgumentUnused]>;
- def d_Flag : Flag<["-"], "d">, Group<d_Group>;
- def d_Joined : Joined<["-"], "d">, Group<d_Group>;
- def emit_ast : Flag<["-"], "emit-ast">, Flags<[CoreOption]>,
- HelpText<"Emit Clang AST files for source inputs">;
- def emit_llvm : Flag<["-"], "emit-llvm">, Flags<[CC1Option, FC1Option, FlangOption]>, Group<Action_Group>,
- HelpText<"Use the LLVM representation for assembler and object files">;
- def emit_interface_stubs : Flag<["-"], "emit-interface-stubs">, Flags<[CC1Option]>, Group<Action_Group>,
- HelpText<"Generate Interface Stub Files.">;
- def emit_merged_ifs : Flag<["-"], "emit-merged-ifs">,
- Flags<[CC1Option]>, Group<Action_Group>,
- HelpText<"Generate Interface Stub Files, emit merged text not binary.">;
- def end_no_unused_arguments : Flag<["--"], "end-no-unused-arguments">, Flags<[CoreOption]>,
- HelpText<"Start emitting warnings for unused driver arguments">;
- def interface_stub_version_EQ : JoinedOrSeparate<["-"], "interface-stub-version=">, Flags<[CC1Option]>;
- def exported__symbols__list : Separate<["-"], "exported_symbols_list">;
- def extract_api : Flag<["-"], "extract-api">, Flags<[CC1Option]>, Group<Action_Group>,
- HelpText<"Extract API information">;
- def product_name_EQ: Joined<["--"], "product-name=">, Flags<[CC1Option]>,
- MarshallingInfoString<FrontendOpts<"ProductName">>;
- def extract_api_ignores_EQ: Joined<["--"], "extract-api-ignores=">, Flags<[CC1Option]>,
- HelpText<"File containing a new line separated list of API symbols to ignore when extracting API information.">,
- MarshallingInfoString<FrontendOpts<"ExtractAPIIgnoresFile">>;
- def e : JoinedOrSeparate<["-"], "e">, Flags<[LinkerInput]>, Group<Link_Group>;
- def fmax_tokens_EQ : Joined<["-"], "fmax-tokens=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Max total number of preprocessed tokens for -Wmax-tokens.">,
- MarshallingInfoInt<LangOpts<"MaxTokens">>;
- def fPIC : Flag<["-"], "fPIC">, Group<f_Group>;
- def fno_PIC : Flag<["-"], "fno-PIC">, Group<f_Group>;
- def fPIE : Flag<["-"], "fPIE">, Group<f_Group>;
- def fno_PIE : Flag<["-"], "fno-PIE">, Group<f_Group>;
- defm access_control : BoolFOption<"access-control",
- LangOpts<"AccessControl">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Disable C++ access control">,
- PosFlag<SetTrue>>;
- def falign_functions : Flag<["-"], "falign-functions">, Group<f_Group>;
- def falign_functions_EQ : Joined<["-"], "falign-functions=">, Group<f_Group>;
- def falign_loops_EQ : Joined<["-"], "falign-loops=">, Group<f_Group>, Flags<[CC1Option]>, MetaVarName<"<N>">,
- HelpText<"N must be a power of two. Align loops to the boundary">,
- MarshallingInfoInt<CodeGenOpts<"LoopAlignment">>;
- def fno_align_functions: Flag<["-"], "fno-align-functions">, Group<f_Group>;
- defm allow_editor_placeholders : BoolFOption<"allow-editor-placeholders",
- LangOpts<"AllowEditorPlaceholders">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Treat editor placeholders as valid source code">,
- NegFlag<SetFalse>>;
- def fallow_unsupported : Flag<["-"], "fallow-unsupported">, Group<f_Group>;
- def fapple_kext : Flag<["-"], "fapple-kext">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Use Apple's kernel extensions ABI">,
- MarshallingInfoFlag<LangOpts<"AppleKext">>;
- def fstrict_flex_arrays_EQ : Joined<["-"], "fstrict-flex-arrays=">, Group<f_Group>,
- MetaVarName<"<n>">, Values<"0,1,2,3">,
- LangOpts<"StrictFlexArraysLevel">,
- Flags<[CC1Option]>,
- NormalizedValuesScope<"LangOptions::StrictFlexArraysLevelKind">,
- NormalizedValues<["Default", "OneZeroOrIncomplete", "ZeroOrIncomplete", "IncompleteOnly"]>,
- HelpText<"Enable optimizations based on the strict definition of flexible arrays">,
- MarshallingInfoEnum<LangOpts<"StrictFlexArraysLevel">, "Default">;
- defm apple_pragma_pack : BoolFOption<"apple-pragma-pack",
- LangOpts<"ApplePragmaPack">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable Apple gcc-compatible #pragma pack handling">,
- NegFlag<SetFalse>>;
- defm xl_pragma_pack : BoolFOption<"xl-pragma-pack",
- LangOpts<"XLPragmaPack">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable IBM XL #pragma pack handling">,
- NegFlag<SetFalse>>;
- def shared_libsan : Flag<["-"], "shared-libsan">,
- HelpText<"Dynamically link the sanitizer runtime">;
- def static_libsan : Flag<["-"], "static-libsan">,
- HelpText<"Statically link the sanitizer runtime">;
- def : Flag<["-"], "shared-libasan">, Alias<shared_libsan>;
- def fasm : Flag<["-"], "fasm">, Group<f_Group>;
- def fassume_sane_operator_new : Flag<["-"], "fassume-sane-operator-new">, Group<f_Group>;
- def fastcp : Flag<["-"], "fastcp">, Group<f_Group>;
- def fastf : Flag<["-"], "fastf">, Group<f_Group>;
- def fast : Flag<["-"], "fast">, Group<f_Group>;
- def fasynchronous_unwind_tables : Flag<["-"], "fasynchronous-unwind-tables">, Group<f_Group>;
- defm double_square_bracket_attributes : BoolFOption<"double-square-bracket-attributes",
- LangOpts<"DoubleSquareBracketAttributes">, Default<!strconcat(cpp11.KeyPath, "||", c2x.KeyPath)>,
- PosFlag<SetTrue, [], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[NoXarchOption, CC1Option], " '[[]]' attributes in all C and C++ language modes">>;
- defm autolink : BoolFOption<"autolink",
- CodeGenOpts<"Autolink">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Disable generation of linker directives for automatic library linking">,
- PosFlag<SetTrue>>;
- // In the future this option will be supported by other offloading
- // languages and accept other values such as CPU/GPU architectures,
- // offload kinds and target aliases.
- def offload_EQ : CommaJoined<["--"], "offload=">, Flags<[NoXarchOption]>,
- HelpText<"Specify comma-separated list of offloading target triples (CUDA and HIP only)">;
- // C++ Coroutines TS
- defm coroutines_ts : BoolFOption<"coroutines-ts",
- LangOpts<"Coroutines">, Default<cpp20.KeyPath>,
- PosFlag<SetTrue, [CC1Option], "Enable support for the C++ Coroutines TS">,
- NegFlag<SetFalse>>;
- defm coro_aligned_allocation : BoolFOption<"coro-aligned-allocation",
- LangOpts<"CoroAlignedAllocation">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Prefer aligned allocation for C++ Coroutines">,
- NegFlag<SetFalse>>;
- defm experimental_library : BoolFOption<"experimental-library",
- LangOpts<"ExperimentalLibrary">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option, CoreOption], "Control whether unstable and experimental library features are enabled. "
- "This option enables various library features that are either experimental (also known as TSes), or have been "
- "but are not stable yet in the selected Standard Library implementation. It is not recommended to use this option "
- "in production code, since neither ABI nor API stability are guaranteed. This is intended to provide a preview "
- "of features that will ship in the future for experimentation purposes">,
- NegFlag<SetFalse>>;
- def fembed_offload_object_EQ : Joined<["-"], "fembed-offload-object=">,
- Group<f_Group>, Flags<[NoXarchOption, CC1Option]>,
- HelpText<"Embed Offloading device-side binary into host object file as a section.">,
- MarshallingInfoStringVector<CodeGenOpts<"OffloadObjects">>;
- def fembed_bitcode_EQ : Joined<["-"], "fembed-bitcode=">,
- Group<f_Group>, Flags<[NoXarchOption, CC1Option, CC1AsOption]>, MetaVarName<"<option>">,
- HelpText<"Embed LLVM bitcode">,
- Values<"off,all,bitcode,marker">, NormalizedValuesScope<"CodeGenOptions">,
- NormalizedValues<["Embed_Off", "Embed_All", "Embed_Bitcode", "Embed_Marker"]>,
- MarshallingInfoEnum<CodeGenOpts<"EmbedBitcode">, "Embed_Off">;
- def fembed_bitcode : Flag<["-"], "fembed-bitcode">, Group<f_Group>,
- Alias<fembed_bitcode_EQ>, AliasArgs<["all"]>,
- HelpText<"Embed LLVM IR bitcode as data">;
- def fembed_bitcode_marker : Flag<["-"], "fembed-bitcode-marker">,
- Alias<fembed_bitcode_EQ>, AliasArgs<["marker"]>,
- HelpText<"Embed placeholder LLVM IR data as a marker">;
- defm gnu_inline_asm : BoolFOption<"gnu-inline-asm",
- LangOpts<"GNUAsm">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Disable GNU style inline asm">, PosFlag<SetTrue>>;
- def fprofile_sample_use : Flag<["-"], "fprofile-sample-use">, Group<f_Group>,
- Flags<[CoreOption]>;
- def fno_profile_sample_use : Flag<["-"], "fno-profile-sample-use">, Group<f_Group>,
- Flags<[CoreOption]>;
- def fprofile_sample_use_EQ : Joined<["-"], "fprofile-sample-use=">,
- Group<f_Group>, Flags<[NoXarchOption, CC1Option]>,
- HelpText<"Enable sample-based profile guided optimizations">,
- MarshallingInfoString<CodeGenOpts<"SampleProfileFile">>;
- def fprofile_sample_accurate : Flag<["-"], "fprofile-sample-accurate">,
- Group<f_Group>, Flags<[NoXarchOption, CC1Option]>,
- HelpText<"Specifies that the sample profile is accurate">,
- DocBrief<[{Specifies that the sample profile is accurate. If the sample
- profile is accurate, callsites without profile samples are marked
- as cold. Otherwise, treat callsites without profile samples as if
- we have no profile}]>,
- MarshallingInfoFlag<CodeGenOpts<"ProfileSampleAccurate">>;
- def fsample_profile_use_profi : Flag<["-"], "fsample-profile-use-profi">,
- Flags<[NoXarchOption, CC1Option]>, Group<f_Group>,
- HelpText<"Use profi to infer block and edge counts">,
- DocBrief<[{Infer block and edge counts. If the profiles have errors or missing
- blocks caused by sampling, profile inference (profi) can convert
- basic block counts to branch probabilites to fix them by extended
- and re-engineered classic MCMF (min-cost max-flow) approach.}]>;
- def fno_profile_sample_accurate : Flag<["-"], "fno-profile-sample-accurate">,
- Group<f_Group>, Flags<[NoXarchOption]>;
- def fauto_profile : Flag<["-"], "fauto-profile">, Group<f_Group>,
- Alias<fprofile_sample_use>;
- def fno_auto_profile : Flag<["-"], "fno-auto-profile">, Group<f_Group>,
- Alias<fno_profile_sample_use>;
- def fauto_profile_EQ : Joined<["-"], "fauto-profile=">,
- Alias<fprofile_sample_use_EQ>;
- def fauto_profile_accurate : Flag<["-"], "fauto-profile-accurate">,
- Group<f_Group>, Alias<fprofile_sample_accurate>;
- def fno_auto_profile_accurate : Flag<["-"], "fno-auto-profile-accurate">,
- Group<f_Group>, Alias<fno_profile_sample_accurate>;
- def fdebug_compilation_dir_EQ : Joined<["-"], "fdebug-compilation-dir=">,
- Group<f_Group>, Flags<[CC1Option, CC1AsOption, CoreOption]>,
- HelpText<"The compilation directory to embed in the debug info">,
- MarshallingInfoString<CodeGenOpts<"DebugCompilationDir">>;
- def fdebug_compilation_dir : Separate<["-"], "fdebug-compilation-dir">,
- Group<f_Group>, Flags<[CC1Option, CC1AsOption, CoreOption]>,
- Alias<fdebug_compilation_dir_EQ>;
- def fcoverage_compilation_dir_EQ : Joined<["-"], "fcoverage-compilation-dir=">,
- Group<f_Group>, Flags<[CC1Option, CC1AsOption, CoreOption]>,
- HelpText<"The compilation directory to embed in the coverage mapping.">,
- MarshallingInfoString<CodeGenOpts<"CoverageCompilationDir">>;
- def ffile_compilation_dir_EQ : Joined<["-"], "ffile-compilation-dir=">, Group<f_Group>,
- Flags<[CoreOption]>,
- HelpText<"The compilation directory to embed in the debug info and coverage mapping.">;
- defm debug_info_for_profiling : BoolFOption<"debug-info-for-profiling",
- CodeGenOpts<"DebugInfoForProfiling">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Emit extra debug info to make sample profile more accurate">,
- NegFlag<SetFalse>>;
- def fprofile_instr_generate : Flag<["-"], "fprofile-instr-generate">,
- Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Generate instrumented code to collect execution counts into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)">;
- def fprofile_instr_generate_EQ : Joined<["-"], "fprofile-instr-generate=">,
- Group<f_Group>, Flags<[CoreOption]>, MetaVarName<"<file>">,
- HelpText<"Generate instrumented code to collect execution counts into <file> (overridden by LLVM_PROFILE_FILE env var)">;
- def fprofile_instr_use : Flag<["-"], "fprofile-instr-use">, Group<f_Group>,
- Flags<[CoreOption]>;
- def fprofile_instr_use_EQ : Joined<["-"], "fprofile-instr-use=">,
- Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Use instrumentation data for profile-guided optimization">;
- def fprofile_remapping_file_EQ : Joined<["-"], "fprofile-remapping-file=">,
- Group<f_Group>, Flags<[CC1Option, CoreOption]>, MetaVarName<"<file>">,
- HelpText<"Use the remappings described in <file> to match the profile data against names in the program">,
- MarshallingInfoString<CodeGenOpts<"ProfileRemappingFile">>;
- defm coverage_mapping : BoolFOption<"coverage-mapping",
- CodeGenOpts<"CoverageMapping">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Generate coverage mapping to enable code coverage analysis">,
- NegFlag<SetFalse, [], "Disable code coverage analysis">, BothFlags<[CoreOption]>>;
- def fprofile_generate : Flag<["-"], "fprofile-generate">,
- Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Generate instrumented code to collect execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)">;
- def fprofile_generate_EQ : Joined<["-"], "fprofile-generate=">,
- Group<f_Group>, Flags<[CoreOption]>, MetaVarName<"<directory>">,
- HelpText<"Generate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)">;
- def fcs_profile_generate : Flag<["-"], "fcs-profile-generate">,
- Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Generate instrumented code to collect context sensitive execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)">;
- def fcs_profile_generate_EQ : Joined<["-"], "fcs-profile-generate=">,
- Group<f_Group>, Flags<[CoreOption]>, MetaVarName<"<directory>">,
- HelpText<"Generate instrumented code to collect context sensitive execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)">;
- def fprofile_use : Flag<["-"], "fprofile-use">, Group<f_Group>,
- Flags<[CoreOption]>, Alias<fprofile_instr_use>;
- def fprofile_use_EQ : Joined<["-"], "fprofile-use=">,
- Group<f_Group>, Flags<[NoXarchOption, CoreOption]>,
- MetaVarName<"<pathname>">,
- HelpText<"Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from <pathname>/default.profdata. Otherwise, it reads from file <pathname>.">;
- def fno_profile_instr_generate : Flag<["-"], "fno-profile-instr-generate">,
- Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Disable generation of profile instrumentation.">;
- def fno_profile_generate : Flag<["-"], "fno-profile-generate">,
- Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Disable generation of profile instrumentation.">;
- def fno_profile_instr_use : Flag<["-"], "fno-profile-instr-use">,
- Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Disable using instrumentation data for profile-guided optimization">;
- def fno_profile_use : Flag<["-"], "fno-profile-use">,
- Alias<fno_profile_instr_use>;
- defm profile_arcs : BoolFOption<"profile-arcs",
- CodeGenOpts<"EmitGcovArcs">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option, LinkOption]>, NegFlag<SetFalse>>;
- defm test_coverage : BoolFOption<"test-coverage",
- CodeGenOpts<"EmitGcovNotes">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>>;
- def fprofile_filter_files_EQ : Joined<["-"], "fprofile-filter-files=">,
- Group<f_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Instrument only functions from files where names match any regex separated by a semi-colon">,
- MarshallingInfoString<CodeGenOpts<"ProfileFilterFiles">>,
- ShouldParseIf<!strconcat(fprofile_arcs.KeyPath, "||", ftest_coverage.KeyPath)>;
- def fprofile_exclude_files_EQ : Joined<["-"], "fprofile-exclude-files=">,
- Group<f_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Instrument only functions from files where names don't match all the regexes separated by a semi-colon">,
- MarshallingInfoString<CodeGenOpts<"ProfileExcludeFiles">>,
- ShouldParseIf<!strconcat(fprofile_arcs.KeyPath, "||", ftest_coverage.KeyPath)>;
- def fprofile_update_EQ : Joined<["-"], "fprofile-update=">,
- Group<f_Group>, Flags<[CC1Option, CoreOption]>, Values<"atomic,prefer-atomic,single">,
- MetaVarName<"<method>">, HelpText<"Set update method of profile counters">,
- MarshallingInfoFlag<CodeGenOpts<"AtomicProfileUpdate">>;
- defm pseudo_probe_for_profiling : BoolFOption<"pseudo-probe-for-profiling",
- CodeGenOpts<"PseudoProbeForProfiling">, DefaultFalse,
- PosFlag<SetTrue, [], "Emit">, NegFlag<SetFalse, [], "Do not emit">,
- BothFlags<[NoXarchOption, CC1Option], " pseudo probes for sample profiling">>;
- def forder_file_instrumentation : Flag<["-"], "forder-file-instrumentation">,
- Group<f_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Generate instrumented code to collect order file into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)">;
- def fprofile_list_EQ : Joined<["-"], "fprofile-list=">,
- Group<f_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Filename defining the list of functions/files to instrument">,
- MarshallingInfoStringVector<LangOpts<"ProfileListFiles">>;
- def fprofile_function_groups : Joined<["-"], "fprofile-function-groups=">,
- Group<f_Group>, Flags<[CC1Option]>, MetaVarName<"<N>">,
- HelpText<"Partition functions into N groups and select only functions in group i to be instrumented using -fprofile-selected-function-group">,
- MarshallingInfoInt<CodeGenOpts<"ProfileTotalFunctionGroups">, "1">;
- def fprofile_selected_function_group :
- Joined<["-"], "fprofile-selected-function-group=">, Group<f_Group>,
- Flags<[CC1Option]>, MetaVarName<"<i>">,
- HelpText<"Partition functions into N groups using -fprofile-function-groups and select only functions in group i to be instrumented. The valid range is 0 to N-1 inclusive">,
- MarshallingInfoInt<CodeGenOpts<"ProfileSelectedFunctionGroup">>;
- def fswift_async_fp_EQ : Joined<["-"], "fswift-async-fp=">,
- Group<f_Group>, Flags<[CC1Option, CC1AsOption, CoreOption]>, MetaVarName<"<option>">,
- HelpText<"Control emission of Swift async extended frame info">,
- Values<"auto,always,never">,
- NormalizedValuesScope<"CodeGenOptions::SwiftAsyncFramePointerKind">,
- NormalizedValues<["Auto", "Always", "Never"]>,
- MarshallingInfoEnum<CodeGenOpts<"SwiftAsyncFramePointer">, "Always">;
- defm addrsig : BoolFOption<"addrsig",
- CodeGenOpts<"Addrsig">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Emit">, NegFlag<SetFalse, [], "Don't emit">,
- BothFlags<[CoreOption], " an address-significance table">>;
- defm blocks : OptInCC1FFlag<"blocks", "Enable the 'blocks' language feature", "", "", [CoreOption]>;
- def fbootclasspath_EQ : Joined<["-"], "fbootclasspath=">, Group<f_Group>;
- defm borland_extensions : BoolFOption<"borland-extensions",
- LangOpts<"Borland">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Accept non-standard constructs supported by the Borland compiler">,
- NegFlag<SetFalse>>;
- def fbuiltin : Flag<["-"], "fbuiltin">, Group<f_Group>, Flags<[CoreOption]>;
- def fbuiltin_module_map : Flag <["-"], "fbuiltin-module-map">, Group<f_Group>,
- Flags<[NoXarchOption]>, HelpText<"Load the clang builtins module map file.">;
- defm caret_diagnostics : BoolFOption<"caret-diagnostics",
- DiagnosticOpts<"ShowCarets">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option]>, PosFlag<SetTrue>>;
- def fclang_abi_compat_EQ : Joined<["-"], "fclang-abi-compat=">, Group<f_clang_Group>,
- Flags<[CC1Option]>, MetaVarName<"<version>">, Values<"<major>.<minor>,latest">,
- HelpText<"Attempt to match the ABI of Clang <version>">;
- def fclasspath_EQ : Joined<["-"], "fclasspath=">, Group<f_Group>;
- def fcolor_diagnostics : Flag<["-"], "fcolor-diagnostics">, Group<f_Group>,
- Flags<[CoreOption, CC1Option, FlangOption, FC1Option]>,
- HelpText<"Enable colors in diagnostics">;
- def fno_color_diagnostics : Flag<["-"], "fno-color-diagnostics">, Group<f_Group>,
- Flags<[CoreOption, FlangOption]>, HelpText<"Disable colors in diagnostics">;
- def : Flag<["-"], "fdiagnostics-color">, Group<f_Group>, Flags<[CoreOption]>, Alias<fcolor_diagnostics>;
- def : Flag<["-"], "fno-diagnostics-color">, Group<f_Group>, Flags<[CoreOption]>, Alias<fno_color_diagnostics>;
- def fdiagnostics_color_EQ : Joined<["-"], "fdiagnostics-color=">, Group<f_Group>;
- def fansi_escape_codes : Flag<["-"], "fansi-escape-codes">, Group<f_Group>,
- Flags<[CoreOption, CC1Option]>, HelpText<"Use ANSI escape codes for diagnostics">,
- MarshallingInfoFlag<DiagnosticOpts<"UseANSIEscapeCodes">>;
- def fcase_insensitive_paths : Flag<["-"], "fcase-insensitive-paths">, Group<f_Group>,
- Flags<[CC1Option, CoreOption]>, HelpText<"Treat file paths as case-insensitive">;
- def fcomment_block_commands : CommaJoined<["-"], "fcomment-block-commands=">, Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Treat each comma separated argument in <arg> as a documentation comment block command">,
- MetaVarName<"<arg>">, MarshallingInfoStringVector<LangOpts<"CommentOpts.BlockCommandNames">>;
- def fparse_all_comments : Flag<["-"], "fparse-all-comments">, Group<f_clang_Group>, Flags<[CC1Option]>,
- MarshallingInfoFlag<LangOpts<"CommentOpts.ParseAllComments">>;
- def frecord_command_line : Flag<["-"], "frecord-command-line">,
- Group<f_clang_Group>;
- def fno_record_command_line : Flag<["-"], "fno-record-command-line">,
- Group<f_clang_Group>;
- def : Flag<["-"], "frecord-gcc-switches">, Alias<frecord_command_line>;
- def : Flag<["-"], "fno-record-gcc-switches">, Alias<fno_record_command_line>;
- def fcommon : Flag<["-"], "fcommon">, Group<f_Group>,
- Flags<[CoreOption, CC1Option]>, HelpText<"Place uninitialized global variables in a common block">,
- MarshallingInfoNegativeFlag<CodeGenOpts<"NoCommon">>;
- def fcompile_resource_EQ : Joined<["-"], "fcompile-resource=">, Group<f_Group>;
- defm complete_member_pointers : BoolOption<"f", "complete-member-pointers",
- LangOpts<"CompleteMemberPointers">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Require">, NegFlag<SetFalse, [], "Do not require">,
- BothFlags<[CoreOption], " member pointer base types to be complete if they"
- " would be significant under the Microsoft ABI">>,
- Group<f_clang_Group>;
- def fcf_runtime_abi_EQ : Joined<["-"], "fcf-runtime-abi=">, Group<f_Group>,
- Flags<[CC1Option]>, Values<"unspecified,standalone,objc,swift,swift-5.0,swift-4.2,swift-4.1">,
- NormalizedValuesScope<"LangOptions::CoreFoundationABI">,
- NormalizedValues<["ObjectiveC", "ObjectiveC", "ObjectiveC", "Swift5_0", "Swift5_0", "Swift4_2", "Swift4_1"]>,
- MarshallingInfoEnum<LangOpts<"CFRuntime">, "ObjectiveC">;
- defm constant_cfstrings : BoolFOption<"constant-cfstrings",
- LangOpts<"NoConstantCFStrings">, DefaultFalse,
- NegFlag<SetTrue, [CC1Option], "Disable creation of CodeFoundation-type constant strings">,
- PosFlag<SetFalse>>;
- def fconstant_string_class_EQ : Joined<["-"], "fconstant-string-class=">, Group<f_Group>;
- def fconstexpr_depth_EQ : Joined<["-"], "fconstexpr-depth=">, Group<f_Group>;
- def fconstexpr_steps_EQ : Joined<["-"], "fconstexpr-steps=">, Group<f_Group>;
- def fexperimental_new_constant_interpreter : Flag<["-"], "fexperimental-new-constant-interpreter">, Group<f_Group>,
- HelpText<"Enable the experimental new constant interpreter">, Flags<[CC1Option]>,
- MarshallingInfoFlag<LangOpts<"EnableNewConstInterp">>;
- def fconstexpr_backtrace_limit_EQ : Joined<["-"], "fconstexpr-backtrace-limit=">,
- Group<f_Group>;
- def fcrash_diagnostics_EQ : Joined<["-"], "fcrash-diagnostics=">, Group<f_clang_Group>, Flags<[NoArgumentUnused, CoreOption]>,
- HelpText<"Set level of crash diagnostic reporting, (option: off, compiler, all)">;
- def fcrash_diagnostics : Flag<["-"], "fcrash-diagnostics">, Group<f_clang_Group>, Flags<[NoArgumentUnused, CoreOption]>,
- HelpText<"Enable crash diagnostic reporting (default)">, Alias<fcrash_diagnostics_EQ>, AliasArgs<["compiler"]>;
- def fno_crash_diagnostics : Flag<["-"], "fno-crash-diagnostics">, Group<f_clang_Group>, Flags<[NoArgumentUnused, CoreOption]>,
- Alias<gen_reproducer_eq>, AliasArgs<["off"]>,
- HelpText<"Disable auto-generation of preprocessed source files and a script for reproduction during a clang crash">;
- def fcrash_diagnostics_dir : Joined<["-"], "fcrash-diagnostics-dir=">,
- Group<f_clang_Group>, Flags<[NoArgumentUnused, CoreOption]>,
- HelpText<"Put crash-report files in <dir>">, MetaVarName<"<dir>">;
- def fcreate_profile : Flag<["-"], "fcreate-profile">, Group<f_Group>;
- defm cxx_exceptions: BoolFOption<"cxx-exceptions",
- LangOpts<"CXXExceptions">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable C++ exceptions">, NegFlag<SetFalse>>;
- defm async_exceptions: BoolFOption<"async-exceptions",
- LangOpts<"EHAsynch">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable EH Asynchronous exceptions">, NegFlag<SetFalse>>;
- defm cxx_modules : BoolFOption<"cxx-modules",
- LangOpts<"CPlusPlusModules">, Default<cpp20.KeyPath>,
- NegFlag<SetFalse, [CC1Option], "Disable">, PosFlag<SetTrue, [], "Enable">,
- BothFlags<[NoXarchOption], " modules for C++">>,
- ShouldParseIf<cplusplus.KeyPath>;
- def fdebug_pass_arguments : Flag<["-"], "fdebug-pass-arguments">, Group<f_Group>;
- def fdebug_pass_structure : Flag<["-"], "fdebug-pass-structure">, Group<f_Group>;
- def fdepfile_entry : Joined<["-"], "fdepfile-entry=">,
- Group<f_clang_Group>, Flags<[CC1Option]>;
- def fdiagnostics_fixit_info : Flag<["-"], "fdiagnostics-fixit-info">, Group<f_clang_Group>;
- def fno_diagnostics_fixit_info : Flag<["-"], "fno-diagnostics-fixit-info">, Group<f_Group>,
- Flags<[CC1Option]>, HelpText<"Do not include fixit information in diagnostics">,
- MarshallingInfoNegativeFlag<DiagnosticOpts<"ShowFixits">>;
- def fdiagnostics_parseable_fixits : Flag<["-"], "fdiagnostics-parseable-fixits">, Group<f_clang_Group>,
- Flags<[CoreOption, CC1Option]>, HelpText<"Print fix-its in machine parseable form">,
- MarshallingInfoFlag<DiagnosticOpts<"ShowParseableFixits">>;
- def fdiagnostics_print_source_range_info : Flag<["-"], "fdiagnostics-print-source-range-info">,
- Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Print source range spans in numeric form">,
- MarshallingInfoFlag<DiagnosticOpts<"ShowSourceRanges">>;
- defm diagnostics_show_hotness : BoolFOption<"diagnostics-show-hotness",
- CodeGenOpts<"DiagnosticsWithHotness">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable profile hotness information in diagnostic line">,
- NegFlag<SetFalse>>;
- def fdiagnostics_hotness_threshold_EQ : Joined<["-"], "fdiagnostics-hotness-threshold=">,
- Group<f_Group>, Flags<[CC1Option]>, MetaVarName<"<value>">,
- HelpText<"Prevent optimization remarks from being output if they do not have at least this profile count. "
- "Use 'auto' to apply the threshold from profile summary">;
- def fdiagnostics_misexpect_tolerance_EQ : Joined<["-"], "fdiagnostics-misexpect-tolerance=">,
- Group<f_Group>, Flags<[CC1Option]>, MetaVarName<"<value>">,
- HelpText<"Prevent misexpect diagnostics from being output if the profile counts are within N% of the expected. ">;
- defm diagnostics_show_option : BoolFOption<"diagnostics-show-option",
- DiagnosticOpts<"ShowOptionNames">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option]>, PosFlag<SetTrue, [], "Print option name with mappable diagnostics">>;
- defm diagnostics_show_note_include_stack : BoolFOption<"diagnostics-show-note-include-stack",
- DiagnosticOpts<"ShowNoteIncludeStack">, DefaultFalse,
- PosFlag<SetTrue, [], "Display include stacks for diagnostic notes">,
- NegFlag<SetFalse>, BothFlags<[CC1Option]>>;
- def fdiagnostics_format_EQ : Joined<["-"], "fdiagnostics-format=">, Group<f_clang_Group>;
- def fdiagnostics_show_category_EQ : Joined<["-"], "fdiagnostics-show-category=">, Group<f_clang_Group>;
- def fdiagnostics_show_template_tree : Flag<["-"], "fdiagnostics-show-template-tree">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Print a template comparison tree for differing templates">,
- MarshallingInfoFlag<DiagnosticOpts<"ShowTemplateTree">>;
- def fdiscard_value_names : Flag<["-"], "fdiscard-value-names">, Group<f_clang_Group>,
- HelpText<"Discard value names in LLVM IR">, Flags<[NoXarchOption]>;
- def fno_discard_value_names : Flag<["-"], "fno-discard-value-names">, Group<f_clang_Group>,
- HelpText<"Do not discard value names in LLVM IR">, Flags<[NoXarchOption]>;
- defm dollars_in_identifiers : BoolFOption<"dollars-in-identifiers",
- LangOpts<"DollarIdents">, Default<!strconcat("!", asm_preprocessor.KeyPath)>,
- PosFlag<SetTrue, [], "Allow">, NegFlag<SetFalse, [], "Disallow">,
- BothFlags<[CC1Option], " '$' in identifiers">>;
- def fdwarf2_cfi_asm : Flag<["-"], "fdwarf2-cfi-asm">, Group<clang_ignored_f_Group>;
- def fno_dwarf2_cfi_asm : Flag<["-"], "fno-dwarf2-cfi-asm">, Group<clang_ignored_f_Group>;
- defm dwarf_directory_asm : BoolFOption<"dwarf-directory-asm",
- CodeGenOpts<"NoDwarfDirectoryAsm">, DefaultFalse,
- NegFlag<SetTrue, [CC1Option]>, PosFlag<SetFalse>>;
- defm elide_constructors : BoolFOption<"elide-constructors",
- LangOpts<"ElideConstructors">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Disable C++ copy constructor elision">,
- PosFlag<SetTrue>>;
- def fno_elide_type : Flag<["-"], "fno-elide-type">, Group<f_Group>,
- Flags<[CC1Option]>,
- HelpText<"Do not elide types when printing diagnostics">,
- MarshallingInfoNegativeFlag<DiagnosticOpts<"ElideType">>;
- def feliminate_unused_debug_symbols : Flag<["-"], "feliminate-unused-debug-symbols">, Group<f_Group>;
- defm eliminate_unused_debug_types : OptOutCC1FFlag<"eliminate-unused-debug-types",
- "Do not emit ", "Emit ", " debug info for defined but unused types">;
- def femit_all_decls : Flag<["-"], "femit-all-decls">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Emit all declarations, even if unused">,
- MarshallingInfoFlag<LangOpts<"EmitAllDecls">>;
- defm emulated_tls : BoolFOption<"emulated-tls",
- CodeGenOpts<"EmulatedTLS">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Use emutls functions to access thread_local variables">,
- NegFlag<SetFalse>, BothFlags<[CC1Option]>>;
- def fencoding_EQ : Joined<["-"], "fencoding=">, Group<f_Group>;
- def ferror_limit_EQ : Joined<["-"], "ferror-limit=">, Group<f_Group>, Flags<[CoreOption]>;
- defm exceptions : BoolFOption<"exceptions",
- LangOpts<"Exceptions">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[], " support for exception handling">>;
- def fdwarf_exceptions : Flag<["-"], "fdwarf-exceptions">, Group<f_Group>,
- HelpText<"Use DWARF style exceptions">;
- def fsjlj_exceptions : Flag<["-"], "fsjlj-exceptions">, Group<f_Group>,
- HelpText<"Use SjLj style exceptions">;
- def fseh_exceptions : Flag<["-"], "fseh-exceptions">, Group<f_Group>,
- HelpText<"Use SEH style exceptions">;
- def fwasm_exceptions : Flag<["-"], "fwasm-exceptions">, Group<f_Group>,
- HelpText<"Use WebAssembly style exceptions">;
- def exception_model : Separate<["-"], "exception-model">,
- Flags<[CC1Option, NoDriverOption]>, HelpText<"The exception model">,
- Values<"dwarf,sjlj,seh,wasm">,
- NormalizedValuesScope<"LangOptions::ExceptionHandlingKind">,
- NormalizedValues<["DwarfCFI", "SjLj", "WinEH", "Wasm"]>,
- MarshallingInfoEnum<LangOpts<"ExceptionHandling">, "None">;
- def exception_model_EQ : Joined<["-"], "exception-model=">,
- Flags<[CC1Option, NoDriverOption]>, Alias<exception_model>;
- def fignore_exceptions : Flag<["-"], "fignore-exceptions">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Enable support for ignoring exception handling constructs">,
- MarshallingInfoFlag<LangOpts<"IgnoreExceptions">>;
- def fexcess_precision_EQ : Joined<["-"], "fexcess-precision=">, Group<f_Group>,
- Flags<[CoreOption]>,
- HelpText<"Allows control over excess precision on targets where native "
- "support for the precision types is not available. By default, excess "
- "precision is used to calculate intermediate results following the "
- "rules specified in ISO C99.">,
- Values<"standard,fast,none">, NormalizedValuesScope<"LangOptions">,
- NormalizedValues<["FPP_Standard", "FPP_Fast", "FPP_None"]>;
- def ffloat16_excess_precision_EQ : Joined<["-"], "ffloat16-excess-precision=">,
- Group<f_Group>, Flags<[CC1Option, NoDriverOption]>,
- HelpText<"Allows control over excess precision on targets where native "
- "support for Float16 precision types is not available. By default, excess "
- "precision is used to calculate intermediate results following the "
- "rules specified in ISO C99.">,
- Values<"standard,fast,none">, NormalizedValuesScope<"LangOptions">,
- NormalizedValues<["FPP_Standard", "FPP_Fast", "FPP_None"]>,
- MarshallingInfoEnum<LangOpts<"Float16ExcessPrecision">, "FPP_Standard">;
- def : Flag<["-"], "fexpensive-optimizations">, Group<clang_ignored_gcc_optimization_f_Group>;
- def : Flag<["-"], "fno-expensive-optimizations">, Group<clang_ignored_gcc_optimization_f_Group>;
- def fextdirs_EQ : Joined<["-"], "fextdirs=">, Group<f_Group>;
- def : Flag<["-"], "fdefer-pop">, Group<clang_ignored_gcc_optimization_f_Group>;
- def : Flag<["-"], "fno-defer-pop">, Group<clang_ignored_gcc_optimization_f_Group>;
- def : Flag<["-"], "fextended-identifiers">, Group<clang_ignored_f_Group>;
- def : Flag<["-"], "fno-extended-identifiers">, Group<f_Group>, Flags<[Unsupported]>;
- def fhosted : Flag<["-"], "fhosted">, Group<f_Group>;
- def fdenormal_fp_math_EQ : Joined<["-"], "fdenormal-fp-math=">, Group<f_Group>, Flags<[CC1Option]>;
- def ffile_reproducible : Flag<["-"], "ffile-reproducible">, Group<f_Group>,
- Flags<[CoreOption, CC1Option]>,
- HelpText<"Use the target's platform-specific path separator character when "
- "expanding the __FILE__ macro">;
- def fno_file_reproducible : Flag<["-"], "fno-file-reproducible">,
- Group<f_Group>, Flags<[CoreOption, CC1Option]>,
- HelpText<"Use the host's platform-specific path separator character when "
- "expanding the __FILE__ macro">;
- def ffp_eval_method_EQ : Joined<["-"], "ffp-eval-method=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Specifies the evaluation method to use for floating-point arithmetic.">,
- Values<"source,double,extended">, NormalizedValuesScope<"LangOptions">,
- NormalizedValues<["FEM_Source", "FEM_Double", "FEM_Extended"]>,
- MarshallingInfoEnum<LangOpts<"FPEvalMethod">, "FEM_UnsetOnCommandLine">;
- def ffp_model_EQ : Joined<["-"], "ffp-model=">, Group<f_Group>, Flags<[NoXarchOption]>,
- HelpText<"Controls the semantics of floating-point calculations.">;
- def ffp_exception_behavior_EQ : Joined<["-"], "ffp-exception-behavior=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Specifies the exception behavior of floating-point operations.">,
- Values<"ignore,maytrap,strict">, NormalizedValuesScope<"LangOptions">,
- NormalizedValues<["FPE_Ignore", "FPE_MayTrap", "FPE_Strict"]>,
- MarshallingInfoEnum<LangOpts<"FPExceptionMode">, "FPE_Default">;
- defm fast_math : BoolFOption<"fast-math",
- LangOpts<"FastMath">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option, FC1Option, FlangOption], "Allow aggressive, lossy floating-point optimizations",
- [cl_fast_relaxed_math.KeyPath]>,
- NegFlag<SetFalse>>;
- defm math_errno : BoolFOption<"math-errno",
- LangOpts<"MathErrno">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Require math functions to indicate errors by setting errno">,
- NegFlag<SetFalse>>,
- ShouldParseIf<!strconcat("!", open_cl.KeyPath)>;
- def fextend_args_EQ : Joined<["-"], "fextend-arguments=">, Group<f_Group>,
- Flags<[CC1Option, NoArgumentUnused]>,
- HelpText<"Controls how scalar integer arguments are extended in calls "
- "to unprototyped and varargs functions">,
- Values<"32,64">,
- NormalizedValues<["ExtendTo32", "ExtendTo64"]>,
- NormalizedValuesScope<"LangOptions::ExtendArgsKind">,
- MarshallingInfoEnum<LangOpts<"ExtendIntArgs">,"ExtendTo32">;
- def fbracket_depth_EQ : Joined<["-"], "fbracket-depth=">, Group<f_Group>, Flags<[CoreOption]>;
- def fsignaling_math : Flag<["-"], "fsignaling-math">, Group<f_Group>;
- def fno_signaling_math : Flag<["-"], "fno-signaling-math">, Group<f_Group>;
- defm jump_tables : BoolFOption<"jump-tables",
- CodeGenOpts<"NoUseJumpTables">, DefaultFalse,
- NegFlag<SetTrue, [CC1Option], "Do not use">, PosFlag<SetFalse, [], "Use">,
- BothFlags<[], " jump tables for lowering switches">>;
- defm force_enable_int128 : BoolFOption<"force-enable-int128",
- TargetOpts<"ForceEnableInt128">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[], " support for int128_t type">>;
- defm keep_static_consts : BoolFOption<"keep-static-consts",
- CodeGenOpts<"KeepStaticConsts">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Keep">, NegFlag<SetFalse, [], "Don't keep">,
- BothFlags<[NoXarchOption], " static const variables if unused">>;
- defm fixed_point : BoolFOption<"fixed-point",
- LangOpts<"FixedPoint">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[], " fixed point types">>, ShouldParseIf<!strconcat("!", cplusplus.KeyPath)>;
- defm cxx_static_destructors : BoolFOption<"c++-static-destructors",
- LangOpts<"RegisterStaticDestructors">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Disable C++ static destructor registration">,
- PosFlag<SetTrue>>;
- def fsymbol_partition_EQ : Joined<["-"], "fsymbol-partition=">, Group<f_Group>,
- Flags<[CC1Option]>, MarshallingInfoString<CodeGenOpts<"SymbolPartition">>;
- defm memory_profile : OptInCC1FFlag<"memory-profile", "Enable", "Disable", " heap memory profiling">;
- def fmemory_profile_EQ : Joined<["-"], "fmemory-profile=">,
- Group<f_Group>, Flags<[CC1Option]>, MetaVarName<"<directory>">,
- HelpText<"Enable heap memory profiling and dump results into <directory>">;
- // Begin sanitizer flags. These should all be core options exposed in all driver
- // modes.
- let Flags = [CC1Option, CoreOption] in {
- def fsanitize_EQ : CommaJoined<["-"], "fsanitize=">, Group<f_clang_Group>,
- MetaVarName<"<check>">,
- HelpText<"Turn on runtime checks for various forms of undefined "
- "or suspicious behavior. See user manual for available checks">;
- def fno_sanitize_EQ : CommaJoined<["-"], "fno-sanitize=">, Group<f_clang_Group>,
- Flags<[CoreOption, NoXarchOption]>;
- def fsanitize_ignorelist_EQ : Joined<["-"], "fsanitize-ignorelist=">,
- Group<f_clang_Group>, HelpText<"Path to ignorelist file for sanitizers">;
- def : Joined<["-"], "fsanitize-blacklist=">,
- Group<f_clang_Group>, Flags<[HelpHidden]>, Alias<fsanitize_ignorelist_EQ>,
- HelpText<"Alias for -fsanitize-ignorelist=">;
- def fsanitize_system_ignorelist_EQ : Joined<["-"], "fsanitize-system-ignorelist=">,
- HelpText<"Path to system ignorelist file for sanitizers">, Flags<[CC1Option]>;
- def : Joined<["-"], "fsanitize-system-blacklist=">,
- HelpText<"Alias for -fsanitize-system-ignorelist=">,
- Flags<[CC1Option, HelpHidden]>, Alias<fsanitize_system_ignorelist_EQ>;
- def fno_sanitize_ignorelist : Flag<["-"], "fno-sanitize-ignorelist">,
- Group<f_clang_Group>, HelpText<"Don't use ignorelist file for sanitizers">;
- def : Flag<["-"], "fno-sanitize-blacklist">,
- Group<f_clang_Group>, Flags<[HelpHidden]>, Alias<fno_sanitize_ignorelist>;
- def fsanitize_coverage : CommaJoined<["-"], "fsanitize-coverage=">,
- Group<f_clang_Group>,
- HelpText<"Specify the type of coverage instrumentation for Sanitizers">;
- def fno_sanitize_coverage : CommaJoined<["-"], "fno-sanitize-coverage=">,
- Group<f_clang_Group>, Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable features of coverage instrumentation for Sanitizers">,
- Values<"func,bb,edge,indirect-calls,trace-bb,trace-cmp,trace-div,trace-gep,"
- "8bit-counters,trace-pc,trace-pc-guard,no-prune,inline-8bit-counters,"
- "inline-bool-flag">;
- def fsanitize_coverage_allowlist : Joined<["-"], "fsanitize-coverage-allowlist=">,
- Group<f_clang_Group>, Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Restrict sanitizer coverage instrumentation exclusively to modules and functions that match the provided special case list, except the blocked ones">,
- MarshallingInfoStringVector<CodeGenOpts<"SanitizeCoverageAllowlistFiles">>;
- def fsanitize_coverage_ignorelist : Joined<["-"], "fsanitize-coverage-ignorelist=">,
- Group<f_clang_Group>, Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable sanitizer coverage instrumentation for modules and functions "
- "that match the provided special case list, even the allowed ones">,
- MarshallingInfoStringVector<CodeGenOpts<"SanitizeCoverageIgnorelistFiles">>;
- def fexperimental_sanitize_metadata_EQ : CommaJoined<["-"], "fexperimental-sanitize-metadata=">,
- Group<f_Group>,
- HelpText<"Specify the type of metadata to emit for binary analysis sanitizers">;
- def fno_experimental_sanitize_metadata_EQ : CommaJoined<["-"], "fno-experimental-sanitize-metadata=">,
- Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Disable emitting metadata for binary analysis sanitizers">;
- def fsanitize_memory_track_origins_EQ : Joined<["-"], "fsanitize-memory-track-origins=">,
- Group<f_clang_Group>,
- HelpText<"Enable origins tracking in MemorySanitizer">,
- MarshallingInfoInt<CodeGenOpts<"SanitizeMemoryTrackOrigins">>;
- def fsanitize_memory_track_origins : Flag<["-"], "fsanitize-memory-track-origins">,
- Group<f_clang_Group>,
- Alias<fsanitize_memory_track_origins_EQ>, AliasArgs<["2"]>,
- HelpText<"Enable origins tracking in MemorySanitizer">;
- def fno_sanitize_memory_track_origins : Flag<["-"], "fno-sanitize-memory-track-origins">,
- Group<f_clang_Group>,
- Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable origins tracking in MemorySanitizer">;
- def fsanitize_address_outline_instrumentation : Flag<["-"], "fsanitize-address-outline-instrumentation">,
- Group<f_clang_Group>,
- HelpText<"Always generate function calls for address sanitizer instrumentation">;
- def fno_sanitize_address_outline_instrumentation : Flag<["-"], "fno-sanitize-address-outline-instrumentation">,
- Group<f_clang_Group>,
- HelpText<"Use default code inlining logic for the address sanitizer">;
- def fsanitize_memtag_mode_EQ : Joined<["-"], "fsanitize-memtag-mode=">,
- Group<f_clang_Group>,
- HelpText<"Set default MTE mode to 'sync' (default) or 'async'">;
- def fsanitize_hwaddress_experimental_aliasing
- : Flag<["-"], "fsanitize-hwaddress-experimental-aliasing">,
- Group<f_clang_Group>,
- HelpText<"Enable aliasing mode in HWAddressSanitizer">;
- def fno_sanitize_hwaddress_experimental_aliasing
- : Flag<["-"], "fno-sanitize-hwaddress-experimental-aliasing">,
- Group<f_clang_Group>, Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable aliasing mode in HWAddressSanitizer">;
- defm sanitize_memory_use_after_dtor : BoolOption<"f", "sanitize-memory-use-after-dtor",
- CodeGenOpts<"SanitizeMemoryUseAfterDtor">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[], " use-after-destroy detection in MemorySanitizer">>,
- Group<f_clang_Group>;
- def fsanitize_address_field_padding : Joined<["-"], "fsanitize-address-field-padding=">,
- Group<f_clang_Group>,
- HelpText<"Level of field padding for AddressSanitizer">,
- MarshallingInfoInt<LangOpts<"SanitizeAddressFieldPadding">>;
- defm sanitize_address_use_after_scope : BoolOption<"f", "sanitize-address-use-after-scope",
- CodeGenOpts<"SanitizeAddressUseAfterScope">, DefaultFalse,
- PosFlag<SetTrue, [], "Enable">, NegFlag<SetFalse, [CoreOption, NoXarchOption], "Disable">,
- BothFlags<[], " use-after-scope detection in AddressSanitizer">>,
- Group<f_clang_Group>;
- def sanitize_address_use_after_return_EQ
- : Joined<["-"], "fsanitize-address-use-after-return=">,
- MetaVarName<"<mode>">,
- Flags<[CC1Option]>,
- HelpText<"Select the mode of detecting stack use-after-return in AddressSanitizer">,
- Group<f_clang_Group>,
- Values<"never,runtime,always">,
- NormalizedValuesScope<"llvm::AsanDetectStackUseAfterReturnMode">,
- NormalizedValues<["Never", "Runtime", "Always"]>,
- MarshallingInfoEnum<CodeGenOpts<"SanitizeAddressUseAfterReturn">, "Runtime">;
- defm sanitize_address_poison_custom_array_cookie : BoolOption<"f", "sanitize-address-poison-custom-array-cookie",
- CodeGenOpts<"SanitizeAddressPoisonCustomArrayCookie">, DefaultFalse,
- PosFlag<SetTrue, [], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[], " poisoning array cookies when using custom operator new[] in AddressSanitizer">>,
- Group<f_clang_Group>;
- defm sanitize_address_globals_dead_stripping : BoolOption<"f", "sanitize-address-globals-dead-stripping",
- CodeGenOpts<"SanitizeAddressGlobalsDeadStripping">, DefaultFalse,
- PosFlag<SetTrue, [], "Enable linker dead stripping of globals in AddressSanitizer">,
- NegFlag<SetFalse, [], "Disable linker dead stripping of globals in AddressSanitizer">>,
- Group<f_clang_Group>;
- defm sanitize_address_use_odr_indicator : BoolOption<"f", "sanitize-address-use-odr-indicator",
- CodeGenOpts<"SanitizeAddressUseOdrIndicator">, DefaultTrue,
- PosFlag<SetTrue, [], "Enable ODR indicator globals to avoid false ODR violation"
- " reports in partially sanitized programs at the cost of an increase in binary size">,
- NegFlag<SetFalse, [], "Disable ODR indicator globals">>,
- Group<f_clang_Group>;
- def sanitize_address_destructor_EQ
- : Joined<["-"], "fsanitize-address-destructor=">,
- Flags<[CC1Option]>,
- HelpText<"Set destructor type used in ASan instrumentation">,
- Group<f_clang_Group>,
- Values<"none,global">,
- NormalizedValuesScope<"llvm::AsanDtorKind">,
- NormalizedValues<["None", "Global"]>,
- MarshallingInfoEnum<CodeGenOpts<"SanitizeAddressDtor">, "Global">;
- defm sanitize_memory_param_retval
- : BoolFOption<"sanitize-memory-param-retval",
- CodeGenOpts<"SanitizeMemoryParamRetval">,
- DefaultTrue,
- PosFlag<SetTrue, [CC1Option], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[], " detection of uninitialized parameters and return values">>;
- //// Note: This flag was introduced when it was necessary to distinguish between
- // ABI for correct codegen. This is no longer needed, but the flag is
- // not removed since targeting either ABI will behave the same.
- // This way we cause no disturbance to existing scripts & code, and if we
- // want to use this flag in the future we will cause no disturbance then
- // either.
- def fsanitize_hwaddress_abi_EQ
- : Joined<["-"], "fsanitize-hwaddress-abi=">,
- Group<f_clang_Group>,
- HelpText<"Select the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor). This option is currently unused.">;
- def fsanitize_recover_EQ : CommaJoined<["-"], "fsanitize-recover=">,
- Group<f_clang_Group>,
- HelpText<"Enable recovery for specified sanitizers">;
- def fno_sanitize_recover_EQ : CommaJoined<["-"], "fno-sanitize-recover=">,
- Group<f_clang_Group>, Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable recovery for specified sanitizers">;
- def fsanitize_recover : Flag<["-"], "fsanitize-recover">, Group<f_clang_Group>,
- Alias<fsanitize_recover_EQ>, AliasArgs<["all"]>;
- def fno_sanitize_recover : Flag<["-"], "fno-sanitize-recover">,
- Flags<[CoreOption, NoXarchOption]>, Group<f_clang_Group>,
- Alias<fno_sanitize_recover_EQ>, AliasArgs<["all"]>;
- def fsanitize_trap_EQ : CommaJoined<["-"], "fsanitize-trap=">, Group<f_clang_Group>,
- HelpText<"Enable trapping for specified sanitizers">;
- def fno_sanitize_trap_EQ : CommaJoined<["-"], "fno-sanitize-trap=">, Group<f_clang_Group>,
- Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable trapping for specified sanitizers">;
- def fsanitize_trap : Flag<["-"], "fsanitize-trap">, Group<f_clang_Group>,
- Alias<fsanitize_trap_EQ>, AliasArgs<["all"]>,
- HelpText<"Enable trapping for all sanitizers">;
- def fno_sanitize_trap : Flag<["-"], "fno-sanitize-trap">, Group<f_clang_Group>,
- Alias<fno_sanitize_trap_EQ>, AliasArgs<["all"]>,
- Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable trapping for all sanitizers">;
- def fsanitize_undefined_trap_on_error
- : Flag<["-"], "fsanitize-undefined-trap-on-error">, Group<f_clang_Group>,
- Alias<fsanitize_trap_EQ>, AliasArgs<["undefined"]>;
- def fno_sanitize_undefined_trap_on_error
- : Flag<["-"], "fno-sanitize-undefined-trap-on-error">, Group<f_clang_Group>,
- Alias<fno_sanitize_trap_EQ>, AliasArgs<["undefined"]>;
- defm sanitize_minimal_runtime : BoolOption<"f", "sanitize-minimal-runtime",
- CodeGenOpts<"SanitizeMinimalRuntime">, DefaultFalse,
- PosFlag<SetTrue>, NegFlag<SetFalse>>,
- Group<f_clang_Group>;
- def fsanitize_link_runtime : Flag<["-"], "fsanitize-link-runtime">,
- Group<f_clang_Group>;
- def fno_sanitize_link_runtime : Flag<["-"], "fno-sanitize-link-runtime">,
- Group<f_clang_Group>;
- def fsanitize_link_cxx_runtime : Flag<["-"], "fsanitize-link-c++-runtime">,
- Group<f_clang_Group>;
- def fno_sanitize_link_cxx_runtime : Flag<["-"], "fno-sanitize-link-c++-runtime">,
- Group<f_clang_Group>;
- defm sanitize_cfi_cross_dso : BoolOption<"f", "sanitize-cfi-cross-dso",
- CodeGenOpts<"SanitizeCfiCrossDso">, DefaultFalse,
- PosFlag<SetTrue, [], "Enable">, NegFlag<SetFalse, [CoreOption, NoXarchOption], "Disable">,
- BothFlags<[], " control flow integrity (CFI) checks for cross-DSO calls.">>,
- Group<f_clang_Group>;
- def fsanitize_cfi_icall_generalize_pointers : Flag<["-"], "fsanitize-cfi-icall-generalize-pointers">,
- Group<f_clang_Group>,
- HelpText<"Generalize pointers in CFI indirect call type signature checks">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCfiICallGeneralizePointers">>;
- defm sanitize_cfi_canonical_jump_tables : BoolOption<"f", "sanitize-cfi-canonical-jump-tables",
- CodeGenOpts<"SanitizeCfiCanonicalJumpTables">, DefaultFalse,
- PosFlag<SetTrue, [], "Make">, NegFlag<SetFalse, [CoreOption, NoXarchOption], "Do not make">,
- BothFlags<[], " the jump table addresses canonical in the symbol table">>,
- Group<f_clang_Group>;
- defm sanitize_stats : BoolOption<"f", "sanitize-stats",
- CodeGenOpts<"SanitizeStats">, DefaultFalse,
- PosFlag<SetTrue, [], "Enable">, NegFlag<SetFalse, [CoreOption, NoXarchOption], "Disable">,
- BothFlags<[], " sanitizer statistics gathering.">>,
- Group<f_clang_Group>;
- def fsanitize_thread_memory_access : Flag<["-"], "fsanitize-thread-memory-access">,
- Group<f_clang_Group>,
- HelpText<"Enable memory access instrumentation in ThreadSanitizer (default)">;
- def fno_sanitize_thread_memory_access : Flag<["-"], "fno-sanitize-thread-memory-access">,
- Group<f_clang_Group>,
- Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable memory access instrumentation in ThreadSanitizer">;
- def fsanitize_thread_func_entry_exit : Flag<["-"], "fsanitize-thread-func-entry-exit">,
- Group<f_clang_Group>,
- HelpText<"Enable function entry/exit instrumentation in ThreadSanitizer (default)">;
- def fno_sanitize_thread_func_entry_exit : Flag<["-"], "fno-sanitize-thread-func-entry-exit">,
- Group<f_clang_Group>,
- Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable function entry/exit instrumentation in ThreadSanitizer">;
- def fsanitize_thread_atomics : Flag<["-"], "fsanitize-thread-atomics">,
- Group<f_clang_Group>,
- HelpText<"Enable atomic operations instrumentation in ThreadSanitizer (default)">;
- def fno_sanitize_thread_atomics : Flag<["-"], "fno-sanitize-thread-atomics">,
- Group<f_clang_Group>,
- Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable atomic operations instrumentation in ThreadSanitizer">;
- def fsanitize_undefined_strip_path_components_EQ : Joined<["-"], "fsanitize-undefined-strip-path-components=">,
- Group<f_clang_Group>, MetaVarName<"<number>">,
- HelpText<"Strip (or keep only, if negative) a given number of path components "
- "when emitting check metadata.">,
- MarshallingInfoInt<CodeGenOpts<"EmitCheckPathComponentsToStrip">, "0", "int">;
- } // end -f[no-]sanitize* flags
- def funsafe_math_optimizations : Flag<["-"], "funsafe-math-optimizations">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Allow unsafe floating-point math optimizations which may decrease precision">,
- MarshallingInfoFlag<LangOpts<"UnsafeFPMath">>,
- ImpliedByAnyOf<[cl_unsafe_math_optimizations.KeyPath, ffast_math.KeyPath]>;
- def fno_unsafe_math_optimizations : Flag<["-"], "fno-unsafe-math-optimizations">,
- Group<f_Group>;
- def fassociative_math : Flag<["-"], "fassociative-math">, Group<f_Group>;
- def fno_associative_math : Flag<["-"], "fno-associative-math">, Group<f_Group>;
- defm reciprocal_math : BoolFOption<"reciprocal-math",
- LangOpts<"AllowRecip">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option, FC1Option, FlangOption], "Allow division operations to be reassociated",
- [funsafe_math_optimizations.KeyPath]>,
- NegFlag<SetFalse>>;
- defm approx_func : BoolFOption<"approx-func", LangOpts<"ApproxFunc">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option, FC1Option, FlangOption], "Allow certain math function calls to be replaced "
- "with an approximately equivalent calculation",
- [funsafe_math_optimizations.KeyPath]>,
- NegFlag<SetFalse>>;
- defm finite_math_only : BoolFOption<"finite-math-only",
- LangOpts<"FiniteMathOnly">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "", [cl_finite_math_only.KeyPath, ffast_math.KeyPath]>,
- NegFlag<SetFalse>>;
- defm signed_zeros : BoolFOption<"signed-zeros",
- LangOpts<"NoSignedZero">, DefaultFalse,
- NegFlag<SetTrue, [CC1Option, FC1Option, FlangOption], "Allow optimizations that ignore the sign of floating point zeros",
- [cl_no_signed_zeros.KeyPath, funsafe_math_optimizations.KeyPath]>,
- PosFlag<SetFalse>>;
- def fhonor_nans : Flag<["-"], "fhonor-nans">, Group<f_Group>;
- def fno_honor_nans : Flag<["-"], "fno-honor-nans">, Group<f_Group>;
- def fhonor_infinities : Flag<["-"], "fhonor-infinities">, Group<f_Group>;
- def fno_honor_infinities : Flag<["-"], "fno-honor-infinities">, Group<f_Group>;
- // This option was originally misspelt "infinites" [sic].
- def : Flag<["-"], "fhonor-infinites">, Alias<fhonor_infinities>;
- def : Flag<["-"], "fno-honor-infinites">, Alias<fno_honor_infinities>;
- def frounding_math : Flag<["-"], "frounding-math">, Group<f_Group>, Flags<[CC1Option]>,
- MarshallingInfoFlag<LangOpts<"RoundingMath">>,
- Normalizer<"makeFlagToValueNormalizer(llvm::RoundingMode::Dynamic)">;
- def fno_rounding_math : Flag<["-"], "fno-rounding-math">, Group<f_Group>, Flags<[CC1Option]>;
- def ftrapping_math : Flag<["-"], "ftrapping-math">, Group<f_Group>;
- def fno_trapping_math : Flag<["-"], "fno-trapping-math">, Group<f_Group>;
- def ffp_contract : Joined<["-"], "ffp-contract=">, Group<f_Group>,
- Flags<[CC1Option, FC1Option, FlangOption]>,
- DocBrief<"Form fused FP ops (e.g. FMAs):"
- " fast (fuses across statements disregarding pragmas)"
- " | on (only fuses in the same statement unless dictated by pragmas)"
- " | off (never fuses)"
- " | fast-honor-pragmas (fuses across statements unless dictated by pragmas)."
- " Default is 'fast' for CUDA, 'fast-honor-pragmas' for HIP, and 'on' otherwise.">,
- HelpText<"Form fused FP ops (e.g. FMAs)">,
- Values<"fast,on,off,fast-honor-pragmas">;
- defm strict_float_cast_overflow : BoolFOption<"strict-float-cast-overflow",
- CodeGenOpts<"StrictFloatCastOverflow">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Relax language rules and try to match the behavior"
- " of the target's native float-to-int conversion instructions">,
- PosFlag<SetTrue, [], "Assume that overflowing float-to-int casts are undefined (default)">>;
- defm protect_parens : BoolFOption<"protect-parens",
- LangOpts<"ProtectParens">, DefaultFalse,
- PosFlag<SetTrue, [CoreOption, CC1Option],
- "Determines whether the optimizer honors parentheses when "
- "floating-point expressions are evaluated">,
- NegFlag<SetFalse>>;
- def ffor_scope : Flag<["-"], "ffor-scope">, Group<f_Group>;
- def fno_for_scope : Flag<["-"], "fno-for-scope">, Group<f_Group>;
- defm rewrite_imports : BoolFOption<"rewrite-imports",
- PreprocessorOutputOpts<"RewriteImports">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>>;
- defm rewrite_includes : BoolFOption<"rewrite-includes",
- PreprocessorOutputOpts<"RewriteIncludes">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>>;
- defm directives_only : OptInCC1FFlag<"directives-only", "">;
- defm delete_null_pointer_checks : BoolFOption<"delete-null-pointer-checks",
- CodeGenOpts<"NullPointerIsValid">, DefaultFalse,
- NegFlag<SetTrue, [CC1Option], "Do not treat usage of null pointers as undefined behavior">,
- PosFlag<SetFalse, [], "Treat usage of null pointers as undefined behavior (default)">,
- BothFlags<[CoreOption]>>;
- def frewrite_map_file_EQ : Joined<["-"], "frewrite-map-file=">,
- Group<f_Group>,
- Flags<[NoXarchOption, CC1Option]>,
- MarshallingInfoStringVector<CodeGenOpts<"RewriteMapFiles">>;
- defm use_line_directives : BoolFOption<"use-line-directives",
- PreprocessorOutputOpts<"UseLineDirectives">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Use #line in preprocessed output">, NegFlag<SetFalse>>;
- defm minimize_whitespace : BoolFOption<"minimize-whitespace",
- PreprocessorOutputOpts<"MinimizeWhitespace">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Minimize whitespace when emitting preprocessor output">, NegFlag<SetFalse>>;
- def ffreestanding : Flag<["-"], "ffreestanding">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Assert that the compilation takes place in a freestanding environment">,
- MarshallingInfoFlag<LangOpts<"Freestanding">>;
- def fgnuc_version_EQ : Joined<["-"], "fgnuc-version=">, Group<f_Group>,
- HelpText<"Sets various macros to claim compatibility with the given GCC version (default is 4.2.1)">,
- Flags<[CC1Option, CoreOption]>;
- // We abuse '-f[no-]gnu-keywords' to force overriding all GNU-extension
- // keywords. This behavior is provided by GCC's poorly named '-fasm' flag,
- // while a subset (the non-C++ GNU keywords) is provided by GCC's
- // '-fgnu-keywords'. Clang conflates the two for simplicity under the single
- // name, as it doesn't seem a useful distinction.
- defm gnu_keywords : BoolFOption<"gnu-keywords",
- LangOpts<"GNUKeywords">, Default<gnu_mode.KeyPath>,
- PosFlag<SetTrue, [], "Allow GNU-extension keywords regardless of language standard">,
- NegFlag<SetFalse>, BothFlags<[CC1Option]>>;
- defm gnu89_inline : BoolFOption<"gnu89-inline",
- LangOpts<"GNUInline">, Default<!strconcat("!", c99.KeyPath, " && !", cplusplus.KeyPath)>,
- PosFlag<SetTrue, [CC1Option], "Use the gnu89 inline semantics">,
- NegFlag<SetFalse>>, ShouldParseIf<!strconcat("!", cplusplus.KeyPath)>;
- def fgnu_runtime : Flag<["-"], "fgnu-runtime">, Group<f_Group>,
- HelpText<"Generate output compatible with the standard GNU Objective-C runtime">;
- def fheinous_gnu_extensions : Flag<["-"], "fheinous-gnu-extensions">, Flags<[CC1Option]>,
- MarshallingInfoFlag<LangOpts<"HeinousExtensions">>;
- def filelist : Separate<["-"], "filelist">, Flags<[LinkerInput]>,
- Group<Link_Group>;
- def : Flag<["-"], "findirect-virtual-calls">, Alias<fapple_kext>;
- def finline_functions : Flag<["-"], "finline-functions">, Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Inline suitable functions">;
- def finline_hint_functions: Flag<["-"], "finline-hint-functions">, Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Inline functions which are (explicitly or implicitly) marked inline">;
- def finline : Flag<["-"], "finline">, Group<clang_ignored_f_Group>;
- def finline_max_stacksize_EQ
- : Joined<["-"], "finline-max-stacksize=">,
- Group<f_Group>, Flags<[CoreOption, CC1Option]>,
- HelpText<"Suppress inlining of functions whose stack size exceeds the given value">,
- MarshallingInfoInt<CodeGenOpts<"InlineMaxStackSize">, "UINT_MAX">;
- defm jmc : BoolFOption<"jmc",
- CodeGenOpts<"JMCInstrument">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable just-my-code debugging">,
- NegFlag<SetFalse>>;
- def fglobal_isel : Flag<["-"], "fglobal-isel">, Group<f_clang_Group>,
- HelpText<"Enables the global instruction selector">;
- def fexperimental_isel : Flag<["-"], "fexperimental-isel">, Group<f_clang_Group>,
- Alias<fglobal_isel>;
- def fexperimental_strict_floating_point : Flag<["-"], "fexperimental-strict-floating-point">,
- Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Enables experimental strict floating point in LLVM.">,
- MarshallingInfoFlag<LangOpts<"ExpStrictFP">>;
- def finput_charset_EQ : Joined<["-"], "finput-charset=">, Flags<[FlangOption, FC1Option]>, Group<f_Group>,
- HelpText<"Specify the default character set for source files">;
- def fexec_charset_EQ : Joined<["-"], "fexec-charset=">, Group<f_Group>;
- def finstrument_functions : Flag<["-"], "finstrument-functions">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Generate calls to instrument function entry and exit">,
- MarshallingInfoFlag<CodeGenOpts<"InstrumentFunctions">>;
- def finstrument_functions_after_inlining : Flag<["-"], "finstrument-functions-after-inlining">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Like -finstrument-functions, but insert the calls after inlining">,
- MarshallingInfoFlag<CodeGenOpts<"InstrumentFunctionsAfterInlining">>;
- def finstrument_function_entry_bare : Flag<["-"], "finstrument-function-entry-bare">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Instrument function entry only, after inlining, without arguments to the instrumentation call">,
- MarshallingInfoFlag<CodeGenOpts<"InstrumentFunctionEntryBare">>;
- def fcf_protection_EQ : Joined<["-"], "fcf-protection=">, Flags<[CoreOption, CC1Option]>, Group<f_Group>,
- HelpText<"Instrument control-flow architecture protection">, Values<"return,branch,full,none">;
- def fcf_protection : Flag<["-"], "fcf-protection">, Group<f_Group>, Flags<[CoreOption, CC1Option]>,
- Alias<fcf_protection_EQ>, AliasArgs<["full"]>,
- HelpText<"Enable cf-protection in 'full' mode">;
- def mfunction_return_EQ : Joined<["-"], "mfunction-return=">,
- Group<m_Group>, Flags<[CoreOption, CC1Option]>,
- HelpText<"Replace returns with jumps to ``__x86_return_thunk`` (x86 only, error otherwise)">,
- Values<"keep,thunk-extern">,
- NormalizedValues<["Keep", "Extern"]>,
- NormalizedValuesScope<"llvm::FunctionReturnThunksKind">,
- MarshallingInfoEnum<CodeGenOpts<"FunctionReturnThunks">, "Keep">;
- def mindirect_branch_cs_prefix : Flag<["-"], "mindirect-branch-cs-prefix">,
- Group<m_Group>, Flags<[CoreOption, CC1Option]>,
- HelpText<"Add cs prefix to call and jmp to indirect thunk">,
- MarshallingInfoFlag<CodeGenOpts<"IndirectBranchCSPrefix">>;
- defm xray_instrument : BoolFOption<"xray-instrument",
- LangOpts<"XRayInstrument">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Generate XRay instrumentation sleds on function entry and exit">,
- NegFlag<SetFalse>>;
- def fxray_instruction_threshold_EQ :
- Joined<["-"], "fxray-instruction-threshold=">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Sets the minimum function size to instrument with XRay">,
- MarshallingInfoInt<CodeGenOpts<"XRayInstructionThreshold">, "200">;
- def fxray_always_instrument :
- Joined<["-"], "fxray-always-instrument=">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"DEPRECATED: Filename defining the whitelist for imbuing the 'always instrument' XRay attribute.">,
- MarshallingInfoStringVector<LangOpts<"XRayAlwaysInstrumentFiles">>;
- def fxray_never_instrument :
- Joined<["-"], "fxray-never-instrument=">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"DEPRECATED: Filename defining the whitelist for imbuing the 'never instrument' XRay attribute.">,
- MarshallingInfoStringVector<LangOpts<"XRayNeverInstrumentFiles">>;
- def fxray_attr_list :
- Joined<["-"], "fxray-attr-list=">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Filename defining the list of functions/types for imbuing XRay attributes.">,
- MarshallingInfoStringVector<LangOpts<"XRayAttrListFiles">>;
- def fxray_modes :
- Joined<["-"], "fxray-modes=">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"List of modes to link in by default into XRay instrumented binaries.">;
- defm xray_always_emit_customevents : BoolFOption<"xray-always-emit-customevents",
- LangOpts<"XRayAlwaysEmitCustomEvents">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Always emit __xray_customevent(...) calls"
- " even if the containing function is not always instrumented">,
- NegFlag<SetFalse>>;
- defm xray_always_emit_typedevents : BoolFOption<"xray-always-emit-typedevents",
- LangOpts<"XRayAlwaysEmitTypedEvents">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Always emit __xray_typedevent(...) calls"
- " even if the containing function is not always instrumented">,
- NegFlag<SetFalse>>;
- defm xray_ignore_loops : BoolFOption<"xray-ignore-loops",
- CodeGenOpts<"XRayIgnoreLoops">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Don't instrument functions with loops"
- " unless they also meet the minimum function size">,
- NegFlag<SetFalse>>;
- defm xray_function_index : BoolFOption<"xray-function-index",
- CodeGenOpts<"XRayOmitFunctionIndex">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Omit function index section at the"
- " expense of single-function patching performance">,
- PosFlag<SetTrue>>;
- def fxray_link_deps : Flag<["-"], "fxray-link-deps">, Group<f_Group>,
- Flags<[CC1Option]>,
- HelpText<"Tells clang to add the link dependencies for XRay.">;
- def fnoxray_link_deps : Flag<["-"], "fnoxray-link-deps">, Group<f_Group>,
- Flags<[CC1Option]>;
- def fxray_instrumentation_bundle :
- Joined<["-"], "fxray-instrumentation-bundle=">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Select which XRay instrumentation points to emit. Options: all, none, function-entry, function-exit, function, custom. Default is 'all'. 'function' includes both 'function-entry' and 'function-exit'.">;
- def fxray_function_groups :
- Joined<["-"], "fxray-function-groups=">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Only instrument 1 of N groups">,
- MarshallingInfoInt<CodeGenOpts<"XRayTotalFunctionGroups">, "1">;
- def fxray_selected_function_group :
- Joined<["-"], "fxray-selected-function-group=">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"When using -fxray-function-groups, select which group of functions to instrument. Valid range is 0 to fxray-function-groups - 1">,
- MarshallingInfoInt<CodeGenOpts<"XRaySelectedFunctionGroup">, "0">;
- defm fine_grained_bitfield_accesses : BoolOption<"f", "fine-grained-bitfield-accesses",
- CodeGenOpts<"FineGrainedBitfieldAccesses">, DefaultFalse,
- PosFlag<SetTrue, [], "Use separate accesses for consecutive bitfield runs with legal widths and alignments.">,
- NegFlag<SetFalse, [], "Use large-integer access for consecutive bitfield runs.">,
- BothFlags<[CC1Option]>>,
- Group<f_clang_Group>;
- def fexperimental_relative_cxx_abi_vtables :
- Flag<["-"], "fexperimental-relative-c++-abi-vtables">,
- Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Use the experimental C++ class ABI for classes with virtual tables">;
- def fno_experimental_relative_cxx_abi_vtables :
- Flag<["-"], "fno-experimental-relative-c++-abi-vtables">,
- Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Do not use the experimental C++ class ABI for classes with virtual tables">;
- def fcxx_abi_EQ : Joined<["-"], "fc++-abi=">,
- Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"C++ ABI to use. This will override the target C++ ABI.">;
- def flat__namespace : Flag<["-"], "flat_namespace">;
- def flax_vector_conversions_EQ : Joined<["-"], "flax-vector-conversions=">, Group<f_Group>,
- HelpText<"Enable implicit vector bit-casts">, Values<"none,integer,all">, Flags<[CC1Option]>,
- NormalizedValues<["LangOptions::LaxVectorConversionKind::None",
- "LangOptions::LaxVectorConversionKind::Integer",
- "LangOptions::LaxVectorConversionKind::All"]>,
- MarshallingInfoEnum<LangOpts<"LaxVectorConversions">,
- open_cl.KeyPath #
- " ? LangOptions::LaxVectorConversionKind::None" #
- " : LangOptions::LaxVectorConversionKind::All">;
- def flax_vector_conversions : Flag<["-"], "flax-vector-conversions">, Group<f_Group>,
- Alias<flax_vector_conversions_EQ>, AliasArgs<["integer"]>;
- def flimited_precision_EQ : Joined<["-"], "flimited-precision=">, Group<f_Group>;
- def fapple_link_rtlib : Flag<["-"], "fapple-link-rtlib">, Group<f_Group>,
- HelpText<"Force linking the clang builtins runtime library">;
- def flto_EQ : Joined<["-"], "flto=">, Flags<[CoreOption, CC1Option]>, Group<f_Group>,
- HelpText<"Set LTO mode">, Values<"thin,full">;
- def flto_EQ_jobserver : Flag<["-"], "flto=jobserver">, Group<f_Group>,
- Alias<flto_EQ>, AliasArgs<["full"]>, HelpText<"Enable LTO in 'full' mode">;
- def flto_EQ_auto : Flag<["-"], "flto=auto">, Group<f_Group>,
- Alias<flto_EQ>, AliasArgs<["full"]>, HelpText<"Enable LTO in 'full' mode">;
- def flto : Flag<["-"], "flto">, Flags<[CoreOption, CC1Option]>, Group<f_Group>,
- Alias<flto_EQ>, AliasArgs<["full"]>, HelpText<"Enable LTO in 'full' mode">;
- def fno_lto : Flag<["-"], "fno-lto">, Flags<[CoreOption, CC1Option]>, Group<f_Group>,
- HelpText<"Disable LTO mode (default)">;
- def foffload_lto_EQ : Joined<["-"], "foffload-lto=">, Flags<[CoreOption]>, Group<f_Group>,
- HelpText<"Set LTO mode for offload compilation">, Values<"thin,full">;
- def foffload_lto : Flag<["-"], "foffload-lto">, Flags<[CoreOption]>, Group<f_Group>,
- Alias<foffload_lto_EQ>, AliasArgs<["full"]>, HelpText<"Enable LTO in 'full' mode for offload compilation">;
- def fno_offload_lto : Flag<["-"], "fno-offload-lto">, Flags<[CoreOption]>, Group<f_Group>,
- HelpText<"Disable LTO mode (default) for offload compilation">;
- def flto_jobs_EQ : Joined<["-"], "flto-jobs=">,
- Flags<[CC1Option]>, Group<f_Group>,
- HelpText<"Controls the backend parallelism of -flto=thin (default "
- "of 0 means the number of threads will be derived from "
- "the number of CPUs detected)">;
- def fthinlto_index_EQ : Joined<["-"], "fthinlto-index=">,
- Flags<[CoreOption, CC1Option]>, Group<f_Group>,
- HelpText<"Perform ThinLTO importing using provided function summary index">;
- def fthin_link_bitcode_EQ : Joined<["-"], "fthin-link-bitcode=">,
- Flags<[CoreOption, CC1Option]>, Group<f_Group>,
- HelpText<"Write minimized bitcode to <file> for the ThinLTO thin link only">,
- MarshallingInfoString<CodeGenOpts<"ThinLinkBitcodeFile">>;
- def fmacro_backtrace_limit_EQ : Joined<["-"], "fmacro-backtrace-limit=">,
- Group<f_Group>, Flags<[NoXarchOption, CoreOption]>;
- defm merge_all_constants : BoolFOption<"merge-all-constants",
- CodeGenOpts<"MergeAllConstants">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option, CoreOption], "Allow">, NegFlag<SetFalse, [], "Disallow">,
- BothFlags<[], " merging of constants">>;
- def fmessage_length_EQ : Joined<["-"], "fmessage-length=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Format message diagnostics so that they fit within N columns">,
- MarshallingInfoInt<DiagnosticOpts<"MessageLength">>;
- def frandomize_layout_seed_EQ : Joined<["-"], "frandomize-layout-seed=">,
- MetaVarName<"<seed>">, Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"The seed used by the randomize structure layout feature">;
- def frandomize_layout_seed_file_EQ : Joined<["-"], "frandomize-layout-seed-file=">,
- MetaVarName<"<file>">, Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"File holding the seed used by the randomize structure layout feature">;
- def fms_compatibility : Flag<["-"], "fms-compatibility">, Group<f_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Enable full Microsoft Visual C++ compatibility">,
- MarshallingInfoFlag<LangOpts<"MSVCCompat">>;
- def fms_extensions : Flag<["-"], "fms-extensions">, Group<f_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Accept some non-standard constructs supported by the Microsoft compiler">,
- MarshallingInfoFlag<LangOpts<"MicrosoftExt">>, ImpliedByAnyOf<[fms_compatibility.KeyPath]>;
- defm asm_blocks : BoolFOption<"asm-blocks",
- LangOpts<"AsmBlocks">, Default<fms_extensions.KeyPath>,
- PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>>;
- def fms_volatile : Flag<["-"], "fms-volatile">, Group<f_Group>, Flags<[CC1Option]>,
- MarshallingInfoFlag<LangOpts<"MSVolatile">>;
- def fmsc_version : Joined<["-"], "fmsc-version=">, Group<f_Group>, Flags<[NoXarchOption, CoreOption]>,
- HelpText<"Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))">;
- def fms_compatibility_version
- : Joined<["-"], "fms-compatibility-version=">,
- Group<f_Group>,
- Flags<[ CC1Option, CoreOption ]>,
- HelpText<"Dot-separated value representing the Microsoft compiler "
- "version number to report in _MSC_VER (0 = don't define it "
- "(default))">;
- def fms_runtime_lib_EQ : Joined<["-"], "fms-runtime-lib=">, Group<f_Group>,
- Flags<[NoXarchOption, CoreOption]>, Values<"static,static_dbg,dll,dll_dbg">,
- HelpText<"Select Windows run-time library">,
- DocBrief<[{
- Specify Visual Studio C runtime library. "static" and "static_dbg" correspond
- to the cl flags /MT and /MTd which use the multithread, static version. "dll"
- and "dll_dbg" correspond to the cl flags /MD and /MDd which use the multithread,
- dll version.}]>;
- def fms_omit_default_lib : Joined<["-"], "fms-omit-default-lib">,
- Group<f_Group>, Flags<[NoXarchOption, CoreOption]>;
- defm delayed_template_parsing : BoolFOption<"delayed-template-parsing",
- LangOpts<"DelayedTemplateParsing">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Parse templated function definitions at the end of the translation unit">,
- NegFlag<SetFalse, [NoXarchOption], "Disable delayed template parsing">,
- BothFlags<[CoreOption]>>;
- def fms_memptr_rep_EQ : Joined<["-"], "fms-memptr-rep=">, Group<f_Group>, Flags<[CC1Option]>,
- Values<"single,multiple,virtual">, NormalizedValuesScope<"LangOptions">,
- NormalizedValues<["PPTMK_FullGeneralitySingleInheritance", "PPTMK_FullGeneralityMultipleInheritance",
- "PPTMK_FullGeneralityVirtualInheritance"]>,
- MarshallingInfoEnum<LangOpts<"MSPointerToMemberRepresentationMethod">, "PPTMK_BestCase">;
- def fms_kernel : Flag<["-"], "fms-kernel">, Group<f_Group>, Flags<[CC1Option, NoDriverOption]>,
- MarshallingInfoFlag<LangOpts<"Kernel">>;
- // __declspec is enabled by default for the PS4 by the driver, and also
- // enabled for Microsoft Extensions or Borland Extensions, here.
- //
- // FIXME: __declspec is also currently enabled for CUDA, but isn't really a
- // CUDA extension. However, it is required for supporting
- // __clang_cuda_builtin_vars.h, which uses __declspec(property). Once that has
- // been rewritten in terms of something more generic, remove the Opts.CUDA
- // term here.
- defm declspec : BoolOption<"f", "declspec",
- LangOpts<"DeclSpecKeyword">, DefaultFalse,
- PosFlag<SetTrue, [], "Allow", [fms_extensions.KeyPath, fborland_extensions.KeyPath, cuda.KeyPath]>,
- NegFlag<SetFalse, [], "Disallow">,
- BothFlags<[CC1Option], " __declspec as a keyword">>, Group<f_clang_Group>;
- def fmodules_cache_path : Joined<["-"], "fmodules-cache-path=">, Group<i_Group>,
- Flags<[NoXarchOption, CC1Option]>, MetaVarName<"<directory>">,
- HelpText<"Specify the module cache path">;
- def fmodules_user_build_path : Separate<["-"], "fmodules-user-build-path">, Group<i_Group>,
- Flags<[NoXarchOption, CC1Option]>, MetaVarName<"<directory>">,
- HelpText<"Specify the module user build path">,
- MarshallingInfoString<HeaderSearchOpts<"ModuleUserBuildPath">>;
- def fprebuilt_module_path : Joined<["-"], "fprebuilt-module-path=">, Group<i_Group>,
- Flags<[NoXarchOption, CC1Option]>, MetaVarName<"<directory>">,
- HelpText<"Specify the prebuilt module path">;
- defm prebuilt_implicit_modules : BoolFOption<"prebuilt-implicit-modules",
- HeaderSearchOpts<"EnablePrebuiltImplicitModules">, DefaultFalse,
- PosFlag<SetTrue, [], "Look up implicit modules in the prebuilt module path">,
- NegFlag<SetFalse>, BothFlags<[NoXarchOption, CC1Option]>>;
- def fmodule_output_EQ : Joined<["-"], "fmodule-output=">, Flags<[NoXarchOption, CC1Option]>,
- HelpText<"Save intermediate module file results when compiling a standard C++ module unit.">;
- def fmodule_output : Flag<["-"], "fmodule-output">, Flags<[NoXarchOption, CC1Option]>,
- HelpText<"Save intermediate module file results when compiling a standard C++ module unit.">;
- def fmodules_prune_interval : Joined<["-"], "fmodules-prune-interval=">, Group<i_Group>,
- Flags<[CC1Option]>, MetaVarName<"<seconds>">,
- HelpText<"Specify the interval (in seconds) between attempts to prune the module cache">,
- MarshallingInfoInt<HeaderSearchOpts<"ModuleCachePruneInterval">, "7 * 24 * 60 * 60">;
- def fmodules_prune_after : Joined<["-"], "fmodules-prune-after=">, Group<i_Group>,
- Flags<[CC1Option]>, MetaVarName<"<seconds>">,
- HelpText<"Specify the interval (in seconds) after which a module file will be considered unused">,
- MarshallingInfoInt<HeaderSearchOpts<"ModuleCachePruneAfter">, "31 * 24 * 60 * 60">;
- def fbuild_session_timestamp : Joined<["-"], "fbuild-session-timestamp=">,
- Group<i_Group>, Flags<[CC1Option]>, MetaVarName<"<time since Epoch in seconds>">,
- HelpText<"Time when the current build session started">,
- MarshallingInfoInt<HeaderSearchOpts<"BuildSessionTimestamp">, "0", "uint64_t">;
- def fbuild_session_file : Joined<["-"], "fbuild-session-file=">,
- Group<i_Group>, MetaVarName<"<file>">,
- HelpText<"Use the last modification time of <file> as the build session timestamp">;
- def fmodules_validate_once_per_build_session : Flag<["-"], "fmodules-validate-once-per-build-session">,
- Group<i_Group>, Flags<[CC1Option]>,
- HelpText<"Don't verify input files for the modules if the module has been "
- "successfully validated or loaded during this build session">,
- MarshallingInfoFlag<HeaderSearchOpts<"ModulesValidateOncePerBuildSession">>;
- def fmodules_disable_diagnostic_validation : Flag<["-"], "fmodules-disable-diagnostic-validation">,
- Group<i_Group>, Flags<[CC1Option]>,
- HelpText<"Disable validation of the diagnostic options when loading the module">,
- MarshallingInfoNegativeFlag<HeaderSearchOpts<"ModulesValidateDiagnosticOptions">>;
- defm modules_validate_system_headers : BoolOption<"f", "modules-validate-system-headers",
- HeaderSearchOpts<"ModulesValidateSystemHeaders">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Validate the system headers that a module depends on when loading the module">,
- NegFlag<SetFalse, [NoXarchOption]>>, Group<i_Group>;
- def fno_modules_validate_textual_header_includes :
- Flag<["-"], "fno-modules-validate-textual-header-includes">,
- Group<f_Group>, Flags<[CC1Option, NoXarchOption]>,
- MarshallingInfoNegativeFlag<LangOpts<"ModulesValidateTextualHeaderIncludes">>,
- HelpText<"Do not enforce -fmodules-decluse and private header restrictions for textual headers. "
- "This flag will be removed in a future Clang release.">;
- def fincremental_extensions :
- Flag<["-"], "fincremental-extensions">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Enable incremental processing extensions such as processing"
- "statements on the global scope.">,
- MarshallingInfoFlag<LangOpts<"IncrementalExtensions">>;
- def fvalidate_ast_input_files_content:
- Flag <["-"], "fvalidate-ast-input-files-content">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Compute and store the hash of input files used to build an AST."
- " Files with mismatching mtime's are considered valid"
- " if both contents is identical">,
- MarshallingInfoFlag<HeaderSearchOpts<"ValidateASTInputFilesContent">>;
- def fmodules_validate_input_files_content:
- Flag <["-"], "fmodules-validate-input-files-content">,
- Group<f_Group>, Flags<[NoXarchOption]>,
- HelpText<"Validate PCM input files based on content if mtime differs">;
- def fno_modules_validate_input_files_content:
- Flag <["-"], "fno_modules-validate-input-files-content">,
- Group<f_Group>, Flags<[NoXarchOption]>;
- def fpch_validate_input_files_content:
- Flag <["-"], "fpch-validate-input-files-content">,
- Group<f_Group>, Flags<[NoXarchOption]>,
- HelpText<"Validate PCH input files based on content if mtime differs">;
- def fno_pch_validate_input_files_content:
- Flag <["-"], "fno_pch-validate-input-files-content">,
- Group<f_Group>, Flags<[NoXarchOption]>;
- defm pch_instantiate_templates : BoolFOption<"pch-instantiate-templates",
- LangOpts<"PCHInstantiateTemplates">, DefaultFalse,
- PosFlag<SetTrue, [], "Instantiate templates already while building a PCH">,
- NegFlag<SetFalse>, BothFlags<[CC1Option, CoreOption]>>;
- defm pch_codegen: OptInCC1FFlag<"pch-codegen", "Generate ", "Do not generate ",
- "code for uses of this PCH that assumes an explicit object file will be built for the PCH">;
- defm pch_debuginfo: OptInCC1FFlag<"pch-debuginfo", "Generate ", "Do not generate ",
- "debug info for types in an object file built from this PCH and do not generate them elsewhere">;
- def fimplicit_module_maps : Flag <["-"], "fimplicit-module-maps">, Group<f_Group>,
- Flags<[NoXarchOption, CC1Option, CoreOption]>,
- HelpText<"Implicitly search the file system for module map files.">,
- MarshallingInfoFlag<HeaderSearchOpts<"ImplicitModuleMaps">>;
- def fmodules_ts : Flag <["-"], "fmodules-ts">, Group<f_Group>,
- Flags<[CC1Option]>, HelpText<"Enable support for the C++ Modules TS">,
- MarshallingInfoFlag<LangOpts<"ModulesTS">>;
- defm modules : BoolFOption<"modules",
- LangOpts<"Modules">, Default<!strconcat(fmodules_ts.KeyPath, "||", fcxx_modules.KeyPath)>,
- PosFlag<SetTrue, [CC1Option], "Enable the 'modules' language feature">,
- NegFlag<SetFalse>, BothFlags<[NoXarchOption, CoreOption]>>;
- def fmodule_maps : Flag <["-"], "fmodule-maps">, Flags<[CoreOption]>, Alias<fimplicit_module_maps>;
- def fmodule_name_EQ : Joined<["-"], "fmodule-name=">, Group<f_Group>,
- Flags<[NoXarchOption,CC1Option,CoreOption]>, MetaVarName<"<name>">,
- HelpText<"Specify the name of the module to build">,
- MarshallingInfoString<LangOpts<"ModuleName">>;
- def fmodule_implementation_of : Separate<["-"], "fmodule-implementation-of">,
- Flags<[CC1Option,CoreOption]>, Alias<fmodule_name_EQ>;
- def fsystem_module : Flag<["-"], "fsystem-module">, Flags<[CC1Option,CoreOption]>,
- HelpText<"Build this module as a system module. Only used with -emit-module">,
- MarshallingInfoFlag<FrontendOpts<"IsSystemModule">>;
- def fmodule_map_file : Joined<["-"], "fmodule-map-file=">,
- Group<f_Group>, Flags<[NoXarchOption,CC1Option,CoreOption]>, MetaVarName<"<file>">,
- HelpText<"Load this module map file">,
- MarshallingInfoStringVector<FrontendOpts<"ModuleMapFiles">>;
- def fmodule_file : Joined<["-"], "fmodule-file=">,
- Group<i_Group>, Flags<[NoXarchOption,CC1Option,CoreOption]>, MetaVarName<"[<name>=]<file>">,
- HelpText<"Specify the mapping of module name to precompiled module file, or load a module file if name is omitted.">;
- def fmodules_ignore_macro : Joined<["-"], "fmodules-ignore-macro=">, Group<f_Group>,
- Flags<[CC1Option,CoreOption]>,
- HelpText<"Ignore the definition of the given macro when building and loading modules">;
- def fmodules_strict_decluse : Flag <["-"], "fmodules-strict-decluse">, Group<f_Group>,
- Flags<[NoXarchOption,CC1Option,CoreOption]>,
- HelpText<"Like -fmodules-decluse but requires all headers to be in modules">,
- MarshallingInfoFlag<LangOpts<"ModulesStrictDeclUse">>;
- defm modules_decluse : BoolFOption<"modules-decluse",
- LangOpts<"ModulesDeclUse">, Default<fmodules_strict_decluse.KeyPath>,
- PosFlag<SetTrue, [CC1Option], "Require declaration of modules used within a module">,
- NegFlag<SetFalse>, BothFlags<[NoXarchOption,CoreOption]>>;
- defm modules_search_all : BoolFOption<"modules-search-all",
- LangOpts<"ModulesSearchAll">, DefaultFalse,
- PosFlag<SetTrue, [], "Search even non-imported modules to resolve references">,
- NegFlag<SetFalse>, BothFlags<[NoXarchOption, CC1Option,CoreOption]>>,
- ShouldParseIf<fmodules.KeyPath>;
- defm implicit_modules : BoolFOption<"implicit-modules",
- LangOpts<"ImplicitModules">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option]>, PosFlag<SetTrue>, BothFlags<[NoXarchOption,CoreOption]>>;
- def fretain_comments_from_system_headers : Flag<["-"], "fretain-comments-from-system-headers">, Group<f_Group>, Flags<[CC1Option]>,
- MarshallingInfoFlag<LangOpts<"RetainCommentsFromSystemHeaders">>;
- def fmodule_header : Flag <["-"], "fmodule-header">, Group<f_Group>,
- Flags<[NoXarchOption]>, HelpText<"Build a C++20 Header Unit from a header.">;
- def fmodule_header_EQ : Joined<["-"], "fmodule-header=">, Group<f_Group>,
- Flags<[NoXarchOption]>, MetaVarName<"<kind>">,
- HelpText<"Build a C++20 Header Unit from a header that should be found in the user (fmodule-header=user) or system (fmodule-header=system) search path.">;
- def fno_knr_functions : Flag<["-"], "fno-knr-functions">, Group<f_Group>,
- MarshallingInfoFlag<LangOpts<"DisableKNRFunctions">>,
- HelpText<"Disable support for K&R C function declarations">,
- Flags<[CC1Option, CoreOption]>;
- def fmudflapth : Flag<["-"], "fmudflapth">, Group<f_Group>;
- def fmudflap : Flag<["-"], "fmudflap">, Group<f_Group>;
- def fnested_functions : Flag<["-"], "fnested-functions">, Group<f_Group>;
- def fnext_runtime : Flag<["-"], "fnext-runtime">, Group<f_Group>;
- def fno_asm : Flag<["-"], "fno-asm">, Group<f_Group>;
- def fno_asynchronous_unwind_tables : Flag<["-"], "fno-asynchronous-unwind-tables">, Group<f_Group>;
- def fno_assume_sane_operator_new : Flag<["-"], "fno-assume-sane-operator-new">, Group<f_Group>,
- HelpText<"Don't assume that C++'s global operator new can't alias any pointer">,
- Flags<[CC1Option]>, MarshallingInfoNegativeFlag<CodeGenOpts<"AssumeSaneOperatorNew">>;
- def fno_builtin : Flag<["-"], "fno-builtin">, Group<f_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Disable implicit builtin knowledge of functions">;
- def fno_builtin_ : Joined<["-"], "fno-builtin-">, Group<f_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Disable implicit builtin knowledge of a specific function">;
- def fno_common : Flag<["-"], "fno-common">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Compile common globals like normal definitions">;
- defm digraphs : BoolFOption<"digraphs",
- LangOpts<"Digraphs">, Default<std#".hasDigraphs()">,
- PosFlag<SetTrue, [], "Enable alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:' (default)">,
- NegFlag<SetFalse, [], "Disallow alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:'">,
- BothFlags<[CC1Option]>>;
- def fno_eliminate_unused_debug_symbols : Flag<["-"], "fno-eliminate-unused-debug-symbols">, Group<f_Group>;
- def fno_inline_functions : Flag<["-"], "fno-inline-functions">, Group<f_clang_Group>, Flags<[CC1Option]>;
- def fno_inline : Flag<["-"], "fno-inline">, Group<f_clang_Group>, Flags<[CC1Option]>;
- def fno_global_isel : Flag<["-"], "fno-global-isel">, Group<f_clang_Group>,
- HelpText<"Disables the global instruction selector">;
- def fno_experimental_isel : Flag<["-"], "fno-experimental-isel">, Group<f_clang_Group>,
- Alias<fno_global_isel>;
- def fveclib : Joined<["-"], "fveclib=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Use the given vector functions library">,
- Values<"Accelerate,libmvec,MASSV,SVML,SLEEF,Darwin_libsystem_m,none">,
- NormalizedValuesScope<"CodeGenOptions">,
- NormalizedValues<["Accelerate", "LIBMVEC", "MASSV", "SVML", "SLEEF",
- "Darwin_libsystem_m", "NoLibrary"]>,
- MarshallingInfoEnum<CodeGenOpts<"VecLib">, "NoLibrary">;
- def fno_lax_vector_conversions : Flag<["-"], "fno-lax-vector-conversions">, Group<f_Group>,
- Alias<flax_vector_conversions_EQ>, AliasArgs<["none"]>;
- def fno_implicit_module_maps : Flag <["-"], "fno-implicit-module-maps">, Group<f_Group>,
- Flags<[NoXarchOption]>;
- def fno_module_maps : Flag <["-"], "fno-module-maps">, Alias<fno_implicit_module_maps>;
- def fno_modules_strict_decluse : Flag <["-"], "fno-strict-modules-decluse">, Group<f_Group>,
- Flags<[NoXarchOption]>;
- def fmodule_file_deps : Flag <["-"], "fmodule-file-deps">, Group<f_Group>,
- Flags<[NoXarchOption]>;
- def fno_module_file_deps : Flag <["-"], "fno-module-file-deps">, Group<f_Group>,
- Flags<[NoXarchOption]>;
- def fno_ms_extensions : Flag<["-"], "fno-ms-extensions">, Group<f_Group>,
- Flags<[CoreOption]>;
- def fno_ms_compatibility : Flag<["-"], "fno-ms-compatibility">, Group<f_Group>,
- Flags<[CoreOption]>;
- def fno_objc_legacy_dispatch : Flag<["-"], "fno-objc-legacy-dispatch">, Group<f_Group>;
- def fno_objc_weak : Flag<["-"], "fno-objc-weak">, Group<f_Group>, Flags<[CC1Option]>;
- def fno_omit_frame_pointer : Flag<["-"], "fno-omit-frame-pointer">, Group<f_Group>;
- defm operator_names : BoolFOption<"operator-names",
- LangOpts<"CXXOperatorNames">, Default<cplusplus.KeyPath>,
- NegFlag<SetFalse, [CC1Option], "Do not treat C++ operator name keywords as synonyms for operators">,
- PosFlag<SetTrue>>;
- def fdiagnostics_absolute_paths : Flag<["-"], "fdiagnostics-absolute-paths">, Group<f_Group>,
- Flags<[CC1Option, CoreOption]>, HelpText<"Print absolute paths in diagnostics">,
- MarshallingInfoFlag<DiagnosticOpts<"AbsolutePath">>;
- def fno_stack_protector : Flag<["-"], "fno-stack-protector">, Group<f_Group>,
- HelpText<"Disable the use of stack protectors">;
- def fno_strict_aliasing : Flag<["-"], "fno-strict-aliasing">, Group<f_Group>,
- Flags<[NoXarchOption, CoreOption]>;
- def fstruct_path_tbaa : Flag<["-"], "fstruct-path-tbaa">, Group<f_Group>;
- def fno_struct_path_tbaa : Flag<["-"], "fno-struct-path-tbaa">, Group<f_Group>;
- def fno_strict_enums : Flag<["-"], "fno-strict-enums">, Group<f_Group>;
- def fno_strict_overflow : Flag<["-"], "fno-strict-overflow">, Group<f_Group>;
- def fno_temp_file : Flag<["-"], "fno-temp-file">, Group<f_Group>,
- Flags<[CC1Option, CoreOption]>, HelpText<
- "Directly create compilation output files. This may lead to incorrect incremental builds if the compiler crashes">,
- MarshallingInfoNegativeFlag<FrontendOpts<"UseTemporary">>;
- defm use_cxa_atexit : BoolFOption<"use-cxa-atexit",
- CodeGenOpts<"CXAAtExit">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Don't use __cxa_atexit for calling destructors">,
- PosFlag<SetTrue>>;
- def fno_unwind_tables : Flag<["-"], "fno-unwind-tables">, Group<f_Group>;
- def fno_verbose_asm : Flag<["-"], "fno-verbose-asm">, Group<f_Group>, Flags<[CC1Option]>,
- MarshallingInfoNegativeFlag<CodeGenOpts<"AsmVerbose">>;
- def fno_working_directory : Flag<["-"], "fno-working-directory">, Group<f_Group>;
- def fno_wrapv : Flag<["-"], "fno-wrapv">, Group<f_Group>;
- def fobjc_arc : Flag<["-"], "fobjc-arc">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Synthesize retain and release calls for Objective-C pointers">;
- def fno_objc_arc : Flag<["-"], "fno-objc-arc">, Group<f_Group>;
- defm objc_encode_cxx_class_template_spec : BoolFOption<"objc-encode-cxx-class-template-spec",
- LangOpts<"EncodeCXXClassTemplateSpec">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Fully encode c++ class template specialization">,
- NegFlag<SetFalse>>;
- defm objc_convert_messages_to_runtime_calls : BoolFOption<"objc-convert-messages-to-runtime-calls",
- CodeGenOpts<"ObjCConvertMessagesToRuntimeCalls">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option]>, PosFlag<SetTrue>>;
- defm objc_arc_exceptions : BoolFOption<"objc-arc-exceptions",
- CodeGenOpts<"ObjCAutoRefCountExceptions">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Use EH-safe code when synthesizing retains and releases in -fobjc-arc">,
- NegFlag<SetFalse>>;
- def fobjc_atdefs : Flag<["-"], "fobjc-atdefs">, Group<clang_ignored_f_Group>;
- def fobjc_call_cxx_cdtors : Flag<["-"], "fobjc-call-cxx-cdtors">, Group<clang_ignored_f_Group>;
- defm objc_exceptions : BoolFOption<"objc-exceptions",
- LangOpts<"ObjCExceptions">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable Objective-C exceptions">, NegFlag<SetFalse>>;
- defm application_extension : BoolFOption<"application-extension",
- LangOpts<"AppExt">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Restrict code to those available for App Extensions">,
- NegFlag<SetFalse>>;
- defm relaxed_template_template_args : BoolFOption<"relaxed-template-template-args",
- LangOpts<"RelaxedTemplateTemplateArgs">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable C++17 relaxed template template argument matching">,
- NegFlag<SetFalse>>;
- defm sized_deallocation : BoolFOption<"sized-deallocation",
- LangOpts<"SizedDeallocation">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable C++14 sized global deallocation functions">,
- NegFlag<SetFalse>>;
- defm aligned_allocation : BoolFOption<"aligned-allocation",
- LangOpts<"AlignedAllocation">, Default<cpp17.KeyPath>,
- PosFlag<SetTrue, [], "Enable C++17 aligned allocation functions">,
- NegFlag<SetFalse>, BothFlags<[CC1Option]>>;
- def fnew_alignment_EQ : Joined<["-"], "fnew-alignment=">,
- HelpText<"Specifies the largest alignment guaranteed by '::operator new(size_t)'">,
- MetaVarName<"<align>">, Group<f_Group>, Flags<[CC1Option]>,
- MarshallingInfoInt<LangOpts<"NewAlignOverride">>;
- def : Separate<["-"], "fnew-alignment">, Alias<fnew_alignment_EQ>;
- def : Flag<["-"], "faligned-new">, Alias<faligned_allocation>;
- def : Flag<["-"], "fno-aligned-new">, Alias<fno_aligned_allocation>;
- def faligned_new_EQ : Joined<["-"], "faligned-new=">;
- def fobjc_legacy_dispatch : Flag<["-"], "fobjc-legacy-dispatch">, Group<f_Group>;
- def fobjc_new_property : Flag<["-"], "fobjc-new-property">, Group<clang_ignored_f_Group>;
- defm objc_infer_related_result_type : BoolFOption<"objc-infer-related-result-type",
- LangOpts<"ObjCInferRelatedResultType">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "do not infer Objective-C related result type based on method family">,
- PosFlag<SetTrue>>;
- def fobjc_link_runtime: Flag<["-"], "fobjc-link-runtime">, Group<f_Group>;
- def fobjc_weak : Flag<["-"], "fobjc-weak">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Enable ARC-style weak references in Objective-C">;
- // Objective-C ABI options.
- def fobjc_runtime_EQ : Joined<["-"], "fobjc-runtime=">, Group<f_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Specify the target Objective-C runtime kind and version">;
- def fobjc_abi_version_EQ : Joined<["-"], "fobjc-abi-version=">, Group<f_Group>;
- def fobjc_nonfragile_abi_version_EQ : Joined<["-"], "fobjc-nonfragile-abi-version=">, Group<f_Group>;
- def fobjc_nonfragile_abi : Flag<["-"], "fobjc-nonfragile-abi">, Group<f_Group>;
- def fno_objc_nonfragile_abi : Flag<["-"], "fno-objc-nonfragile-abi">, Group<f_Group>;
- def fobjc_sender_dependent_dispatch : Flag<["-"], "fobjc-sender-dependent-dispatch">, Group<f_Group>;
- def fobjc_disable_direct_methods_for_testing :
- Flag<["-"], "fobjc-disable-direct-methods-for-testing">,
- Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Ignore attribute objc_direct so that direct methods can be tested">,
- MarshallingInfoFlag<LangOpts<"ObjCDisableDirectMethodsForTesting">>;
- defm objc_avoid_heapify_local_blocks : BoolFOption<"objc-avoid-heapify-local-blocks",
- CodeGenOpts<"ObjCAvoidHeapifyLocalBlocks">, DefaultFalse,
- PosFlag<SetTrue, [], "Try">,
- NegFlag<SetFalse, [], "Don't try">,
- BothFlags<[CC1Option, NoDriverOption], " to avoid heapifying local blocks">>;
- def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">, Group<f_Group>;
- def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, FlangOption, FC1Option]>,
- HelpText<"Parse OpenMP pragmas and generate parallel code.">;
- def fno_openmp : Flag<["-"], "fno-openmp">, Group<f_Group>, Flags<[NoArgumentUnused]>;
- def fopenmp_version_EQ : Joined<["-"], "fopenmp-version=">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>,
- HelpText<"Set OpenMP version (e.g. 45 for OpenMP 4.5, 50 for OpenMP 5.0). Default value is 50.">;
- defm openmp_extensions: BoolFOption<"openmp-extensions",
- LangOpts<"OpenMPExtensions">, DefaultTrue,
- PosFlag<SetTrue, [CC1Option, NoArgumentUnused],
- "Enable all Clang extensions for OpenMP directives and clauses">,
- NegFlag<SetFalse, [CC1Option, NoArgumentUnused],
- "Disable all Clang extensions for OpenMP directives and clauses">>;
- def fopenmp_EQ : Joined<["-"], "fopenmp=">, Group<f_Group>;
- def fopenmp_use_tls : Flag<["-"], "fopenmp-use-tls">, Group<f_Group>,
- Flags<[NoArgumentUnused, HelpHidden]>;
- def fnoopenmp_use_tls : Flag<["-"], "fnoopenmp-use-tls">, Group<f_Group>,
- Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fopenmp_targets_EQ : CommaJoined<["-"], "fopenmp-targets=">, Flags<[NoXarchOption, CC1Option]>,
- HelpText<"Specify comma-separated list of triples OpenMP offloading targets to be supported">;
- def fopenmp_relocatable_target : Flag<["-"], "fopenmp-relocatable-target">,
- Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fnoopenmp_relocatable_target : Flag<["-"], "fnoopenmp-relocatable-target">,
- Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fopenmp_simd : Flag<["-"], "fopenmp-simd">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>,
- HelpText<"Emit OpenMP code only for SIMD-based constructs.">;
- def fopenmp_enable_irbuilder : Flag<["-"], "fopenmp-enable-irbuilder">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>,
- HelpText<"Use the experimental OpenMP-IR-Builder codegen path.">;
- def fno_openmp_simd : Flag<["-"], "fno-openmp-simd">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>;
- def fopenmp_cuda_mode : Flag<["-"], "fopenmp-cuda-mode">, Group<f_Group>,
- Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fno_openmp_cuda_mode : Flag<["-"], "fno-openmp-cuda-mode">, Group<f_Group>,
- Flags<[NoArgumentUnused, HelpHidden]>;
- def fopenmp_cuda_number_of_sm_EQ : Joined<["-"], "fopenmp-cuda-number-of-sm=">, Group<f_Group>,
- Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fopenmp_cuda_blocks_per_sm_EQ : Joined<["-"], "fopenmp-cuda-blocks-per-sm=">, Group<f_Group>,
- Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fopenmp_cuda_teams_reduction_recs_num_EQ : Joined<["-"], "fopenmp-cuda-teams-reduction-recs-num=">, Group<f_Group>,
- Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fopenmp_target_debug : Flag<["-"], "fopenmp-target-debug">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>,
- HelpText<"Enable debugging in the OpenMP offloading device RTL">;
- def fno_openmp_target_debug : Flag<["-"], "fno-openmp-target-debug">, Group<f_Group>, Flags<[NoArgumentUnused]>;
- def fopenmp_target_debug_EQ : Joined<["-"], "fopenmp-target-debug=">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fopenmp_assume_teams_oversubscription : Flag<["-"], "fopenmp-assume-teams-oversubscription">,
- Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fopenmp_assume_threads_oversubscription : Flag<["-"], "fopenmp-assume-threads-oversubscription">,
- Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fno_openmp_assume_teams_oversubscription : Flag<["-"], "fno-openmp-assume-teams-oversubscription">,
- Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fno_openmp_assume_threads_oversubscription : Flag<["-"], "fno-openmp-assume-threads-oversubscription">,
- Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>;
- def fopenmp_assume_no_thread_state : Flag<["-"], "fopenmp-assume-no-thread-state">, Group<f_Group>,
- Flags<[CC1Option, NoArgumentUnused, HelpHidden]>,
- HelpText<"Assert no thread in a parallel region modifies an ICV">,
- MarshallingInfoFlag<LangOpts<"OpenMPNoThreadState">>;
- def fopenmp_assume_no_nested_parallelism : Flag<["-"], "fopenmp-assume-no-nested-parallelism">, Group<f_Group>,
- Flags<[CC1Option, NoArgumentUnused, HelpHidden]>,
- HelpText<"Assert no nested parallel regions in the GPU">,
- MarshallingInfoFlag<LangOpts<"OpenMPNoNestedParallelism">>;
- def fopenmp_offload_mandatory : Flag<["-"], "fopenmp-offload-mandatory">, Group<f_Group>,
- Flags<[CC1Option, NoArgumentUnused]>,
- HelpText<"Do not create a host fallback if offloading to the device fails.">,
- MarshallingInfoFlag<LangOpts<"OpenMPOffloadMandatory">>;
- def fopenmp_target_jit : Flag<["-"], "fopenmp-target-jit">, Group<f_Group>,
- Flags<[CoreOption, NoArgumentUnused]>,
- HelpText<"Emit code that can be JIT compiled for OpenMP offloading. Implies -foffload-lto=full">;
- def fno_openmp_target_jit : Flag<["-"], "fno-openmp-target-jit">, Group<f_Group>,
- Flags<[CoreOption, NoArgumentUnused, HelpHidden]>;
- def fopenmp_target_new_runtime : Flag<["-"], "fopenmp-target-new-runtime">,
- Group<f_Group>, Flags<[CC1Option, HelpHidden]>;
- def fno_openmp_target_new_runtime : Flag<["-"], "fno-openmp-target-new-runtime">,
- Group<f_Group>, Flags<[CC1Option, HelpHidden]>;
- defm openmp_optimistic_collapse : BoolFOption<"openmp-optimistic-collapse",
- LangOpts<"OpenMPOptimisticCollapse">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>, BothFlags<[NoArgumentUnused, HelpHidden]>>;
- def static_openmp: Flag<["-"], "static-openmp">,
- HelpText<"Use the static host OpenMP runtime while linking.">;
- def offload_new_driver : Flag<["--"], "offload-new-driver">, Flags<[CC1Option]>, Group<f_Group>,
- MarshallingInfoFlag<LangOpts<"OffloadingNewDriver">>, HelpText<"Use the new driver for offloading compilation.">;
- def no_offload_new_driver : Flag<["--"], "no-offload-new-driver">, Flags<[CC1Option]>, Group<f_Group>,
- HelpText<"Don't Use the new driver for offloading compilation.">;
- def offload_device_only : Flag<["--"], "offload-device-only">,
- HelpText<"Only compile for the offloading device.">;
- def offload_host_only : Flag<["--"], "offload-host-only">,
- HelpText<"Only compile for the offloading host.">;
- def offload_host_device : Flag<["--"], "offload-host-device">,
- HelpText<"Only compile for the offloading host.">;
- def cuda_device_only : Flag<["--"], "cuda-device-only">, Alias<offload_device_only>,
- HelpText<"Compile CUDA code for device only">;
- def cuda_host_only : Flag<["--"], "cuda-host-only">, Alias<offload_host_only>,
- HelpText<"Compile CUDA code for host only. Has no effect on non-CUDA compilations.">;
- def cuda_compile_host_device : Flag<["--"], "cuda-compile-host-device">, Alias<offload_host_device>,
- HelpText<"Compile CUDA code for both host and device (default). Has no "
- "effect on non-CUDA compilations.">;
- def fopenmp_new_driver : Flag<["-"], "fopenmp-new-driver">, Flags<[HelpHidden]>,
- HelpText<"Use the new driver for OpenMP offloading.">;
- def fno_openmp_new_driver : Flag<["-"], "fno-openmp-new-driver">, Flags<[HelpHidden]>,
- HelpText<"Don't use the new driver for OpenMP offloading.">;
- def fno_optimize_sibling_calls : Flag<["-"], "fno-optimize-sibling-calls">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Disable tail call optimization, keeping the call stack accurate">,
- MarshallingInfoFlag<CodeGenOpts<"DisableTailCalls">>;
- def foptimize_sibling_calls : Flag<["-"], "foptimize-sibling-calls">, Group<f_Group>;
- defm escaping_block_tail_calls : BoolFOption<"escaping-block-tail-calls",
- CodeGenOpts<"NoEscapingBlockTailCalls">, DefaultFalse,
- NegFlag<SetTrue, [CC1Option]>, PosFlag<SetFalse>>;
- def force__cpusubtype__ALL : Flag<["-"], "force_cpusubtype_ALL">;
- def force__flat__namespace : Flag<["-"], "force_flat_namespace">;
- def force__load : Separate<["-"], "force_load">;
- def force_addr : Joined<["-"], "fforce-addr">, Group<clang_ignored_f_Group>;
- def foutput_class_dir_EQ : Joined<["-"], "foutput-class-dir=">, Group<f_Group>;
- def fpack_struct : Flag<["-"], "fpack-struct">, Group<f_Group>;
- def fno_pack_struct : Flag<["-"], "fno-pack-struct">, Group<f_Group>;
- def fpack_struct_EQ : Joined<["-"], "fpack-struct=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Specify the default maximum struct packing alignment">,
- MarshallingInfoInt<LangOpts<"PackStruct">>;
- def fmax_type_align_EQ : Joined<["-"], "fmax-type-align=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Specify the maximum alignment to enforce on pointers lacking an explicit alignment">,
- MarshallingInfoInt<LangOpts<"MaxTypeAlign">>;
- def fno_max_type_align : Flag<["-"], "fno-max-type-align">, Group<f_Group>;
- defm pascal_strings : BoolFOption<"pascal-strings",
- LangOpts<"PascalStrings">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Recognize and construct Pascal-style string literals">,
- NegFlag<SetFalse>>;
- // Note: This flag has different semantics in the driver and in -cc1. The driver accepts -fpatchable-function-entry=M,N
- // and forwards it to -cc1 as -fpatchable-function-entry=M and -fpatchable-function-entry-offset=N. In -cc1, both flags
- // are treated as a single integer.
- def fpatchable_function_entry_EQ : Joined<["-"], "fpatchable-function-entry=">, Group<f_Group>, Flags<[CC1Option]>,
- MetaVarName<"<N,M>">, HelpText<"Generate M NOPs before function entry and N-M NOPs after function entry">,
- MarshallingInfoInt<CodeGenOpts<"PatchableFunctionEntryCount">>;
- def fms_hotpatch : Flag<["-"], "fms-hotpatch">, Group<f_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Ensure that all functions can be hotpatched at runtime">,
- MarshallingInfoFlag<CodeGenOpts<"HotPatch">>;
- def fpcc_struct_return : Flag<["-"], "fpcc-struct-return">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Override the default ABI to return all structs on the stack">;
- def fpch_preprocess : Flag<["-"], "fpch-preprocess">, Group<f_Group>;
- def fpic : Flag<["-"], "fpic">, Group<f_Group>;
- def fno_pic : Flag<["-"], "fno-pic">, Group<f_Group>;
- def fpie : Flag<["-"], "fpie">, Group<f_Group>;
- def fno_pie : Flag<["-"], "fno-pie">, Group<f_Group>;
- defm pic_data_is_text_relative : SimpleMFlag<"pic-data-is-text-relative",
- "Assume", "Don't assume", " data segments are relative to text segment">;
- def fdirect_access_external_data : Flag<["-"], "fdirect-access-external-data">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Don't use GOT indirection to reference external data symbols">;
- def fno_direct_access_external_data : Flag<["-"], "fno-direct-access-external-data">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Use GOT indirection to reference external data symbols">;
- defm plt : BoolFOption<"plt",
- CodeGenOpts<"NoPLT">, DefaultFalse,
- NegFlag<SetTrue, [CC1Option], "Use GOT indirection instead of PLT to make external function calls (x86 only)">,
- PosFlag<SetFalse>>;
- defm ropi : BoolFOption<"ropi",
- LangOpts<"ROPI">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Generate read-only position independent code (ARM only)">,
- NegFlag<SetFalse>>;
- defm rwpi : BoolFOption<"rwpi",
- LangOpts<"RWPI">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Generate read-write position independent code (ARM only)">,
- NegFlag<SetFalse>>;
- def fplugin_EQ : Joined<["-"], "fplugin=">, Group<f_Group>, Flags<[NoXarchOption]>, MetaVarName<"<dsopath>">,
- HelpText<"Load the named plugin (dynamic shared object)">;
- def fplugin_arg : Joined<["-"], "fplugin-arg-">,
- MetaVarName<"<name>-<arg>">,
- HelpText<"Pass <arg> to plugin <name>">;
- def fpass_plugin_EQ : Joined<["-"], "fpass-plugin=">,
- Group<f_Group>, Flags<[CC1Option,FlangOption,FC1Option]>, MetaVarName<"<dsopath>">,
- HelpText<"Load pass plugin from a dynamic shared object file (only with new pass manager).">,
- MarshallingInfoStringVector<CodeGenOpts<"PassPlugins">>;
- defm preserve_as_comments : BoolFOption<"preserve-as-comments",
- CodeGenOpts<"PreserveAsmComments">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Do not preserve comments in inline assembly">,
- PosFlag<SetTrue>>;
- def framework : Separate<["-"], "framework">, Flags<[LinkerInput]>;
- def frandom_seed_EQ : Joined<["-"], "frandom-seed=">, Group<clang_ignored_f_Group>;
- def freg_struct_return : Flag<["-"], "freg-struct-return">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Override the default ABI to return small structs in registers">;
- defm rtti : BoolFOption<"rtti",
- LangOpts<"RTTI">, Default<cplusplus.KeyPath>,
- NegFlag<SetFalse, [CC1Option], "Disable generation of rtti information">,
- PosFlag<SetTrue>>, ShouldParseIf<cplusplus.KeyPath>;
- defm rtti_data : BoolFOption<"rtti-data",
- LangOpts<"RTTIData">, Default<frtti.KeyPath>,
- NegFlag<SetFalse, [CC1Option], "Disable generation of RTTI data">,
- PosFlag<SetTrue>>, ShouldParseIf<frtti.KeyPath>;
- def : Flag<["-"], "fsched-interblock">, Group<clang_ignored_f_Group>;
- defm short_enums : BoolFOption<"short-enums",
- LangOpts<"ShortEnums">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Allocate to an enum type only as many bytes as it"
- " needs for the declared range of possible values">,
- NegFlag<SetFalse>>;
- defm char8__t : BoolFOption<"char8_t",
- LangOpts<"Char8">, Default<cpp20.KeyPath>,
- PosFlag<SetTrue, [], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[CC1Option], " C++ builtin type char8_t">>;
- def fshort_wchar : Flag<["-"], "fshort-wchar">, Group<f_Group>,
- HelpText<"Force wchar_t to be a short unsigned int">;
- def fno_short_wchar : Flag<["-"], "fno-short-wchar">, Group<f_Group>,
- HelpText<"Force wchar_t to be an unsigned int">;
- def fshow_overloads_EQ : Joined<["-"], "fshow-overloads=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Which overload candidates to show when overload resolution fails. Defaults to 'all'">,
- Values<"best,all">,
- NormalizedValues<["Ovl_Best", "Ovl_All"]>,
- MarshallingInfoEnum<DiagnosticOpts<"ShowOverloads">, "Ovl_All">;
- defm show_column : BoolFOption<"show-column",
- DiagnosticOpts<"ShowColumn">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Do not include column number on diagnostics">,
- PosFlag<SetTrue>>;
- defm show_source_location : BoolFOption<"show-source-location",
- DiagnosticOpts<"ShowLocation">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Do not include source location information with diagnostics">,
- PosFlag<SetTrue>>;
- defm spell_checking : BoolFOption<"spell-checking",
- LangOpts<"SpellChecking">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Disable spell-checking">, PosFlag<SetTrue>>;
- def fspell_checking_limit_EQ : Joined<["-"], "fspell-checking-limit=">, Group<f_Group>;
- def fsigned_bitfields : Flag<["-"], "fsigned-bitfields">, Group<f_Group>;
- defm signed_char : BoolFOption<"signed-char",
- LangOpts<"CharIsSigned">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "char is unsigned">, PosFlag<SetTrue, [], "char is signed">>,
- ShouldParseIf<!strconcat("!", open_cl.KeyPath)>;
- defm split_stack : BoolFOption<"split-stack",
- CodeGenOpts<"EnableSegmentedStacks">, DefaultFalse,
- NegFlag<SetFalse, [], "Wouldn't use segmented stack">,
- PosFlag<SetTrue, [CC1Option], "Use segmented stack">>;
- def fstack_protector_all : Flag<["-"], "fstack-protector-all">, Group<f_Group>,
- HelpText<"Enable stack protectors for all functions">;
- defm stack_clash_protection : BoolFOption<"stack-clash-protection",
- CodeGenOpts<"StackClashProtector">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[], " stack clash protection">>;
- def fstack_protector_strong : Flag<["-"], "fstack-protector-strong">, Group<f_Group>,
- HelpText<"Enable stack protectors for some functions vulnerable to stack smashing. "
- "Compared to -fstack-protector, this uses a stronger heuristic "
- "that includes functions containing arrays of any size (and any type), "
- "as well as any calls to alloca or the taking of an address from a local variable">;
- def fstack_protector : Flag<["-"], "fstack-protector">, Group<f_Group>,
- HelpText<"Enable stack protectors for some functions vulnerable to stack smashing. "
- "This uses a loose heuristic which considers functions vulnerable if they "
- "contain a char (or 8bit integer) array or constant sized calls to alloca "
- ", which are of greater size than ssp-buffer-size (default: 8 bytes). All "
- "variable sized calls to alloca are considered vulnerable. A function with "
- "a stack protector has a guard value added to the stack frame that is "
- "checked on function exit. The guard value must be positioned in the "
- "stack frame such that a buffer overflow from a vulnerable variable will "
- "overwrite the guard value before overwriting the function's return "
- "address. The reference stack guard value is stored in a global variable.">;
- def ftrivial_auto_var_init : Joined<["-"], "ftrivial-auto-var-init=">, Group<f_Group>,
- Flags<[CC1Option, CoreOption]>, HelpText<"Initialize trivial automatic stack variables. Defaults to 'uninitialized'">,
- Values<"uninitialized,zero,pattern">,
- NormalizedValuesScope<"LangOptions::TrivialAutoVarInitKind">,
- NormalizedValues<["Uninitialized", "Zero", "Pattern"]>,
- MarshallingInfoEnum<LangOpts<"TrivialAutoVarInit">, "Uninitialized">;
- def ftrivial_auto_var_init_stop_after : Joined<["-"], "ftrivial-auto-var-init-stop-after=">, Group<f_Group>,
- Flags<[CC1Option, CoreOption]>, HelpText<"Stop initializing trivial automatic stack variables after the specified number of instances">,
- MarshallingInfoInt<LangOpts<"TrivialAutoVarInitStopAfter">>;
- def fstandalone_debug : Flag<["-"], "fstandalone-debug">, Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Emit full debug info for all types used by the program">;
- def fno_standalone_debug : Flag<["-"], "fno-standalone-debug">, Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Limit debug information produced to reduce size of debug binary">;
- def flimit_debug_info : Flag<["-"], "flimit-debug-info">, Flags<[CoreOption]>, Alias<fno_standalone_debug>;
- def fno_limit_debug_info : Flag<["-"], "fno-limit-debug-info">, Flags<[CoreOption]>, Alias<fstandalone_debug>;
- def fdebug_macro : Flag<["-"], "fdebug-macro">, Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Emit macro debug information">;
- def fno_debug_macro : Flag<["-"], "fno-debug-macro">, Group<f_Group>, Flags<[CoreOption]>,
- HelpText<"Do not emit macro debug information">;
- def fstrict_aliasing : Flag<["-"], "fstrict-aliasing">, Group<f_Group>,
- Flags<[NoXarchOption, CoreOption]>;
- def fstrict_enums : Flag<["-"], "fstrict-enums">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Enable optimizations based on the strict definition of an enum's "
- "value range">,
- MarshallingInfoFlag<CodeGenOpts<"StrictEnums">>;
- defm strict_vtable_pointers : BoolFOption<"strict-vtable-pointers",
- CodeGenOpts<"StrictVTablePointers">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable optimizations based on the strict rules for"
- " overwriting polymorphic C++ objects">,
- NegFlag<SetFalse>>;
- def fstrict_overflow : Flag<["-"], "fstrict-overflow">, Group<f_Group>;
- def fdriver_only : Flag<["-"], "fdriver-only">, Flags<[NoXarchOption, CoreOption]>,
- Group<Action_Group>, HelpText<"Only run the driver.">;
- def fsyntax_only : Flag<["-"], "fsyntax-only">,
- Flags<[NoXarchOption,CoreOption,CC1Option,FC1Option,FlangOption]>, Group<Action_Group>,
- HelpText<"Run the preprocessor, parser and semantic analysis stages">;
- def ftabstop_EQ : Joined<["-"], "ftabstop=">, Group<f_Group>;
- def ftemplate_depth_EQ : Joined<["-"], "ftemplate-depth=">, Group<f_Group>;
- def ftemplate_depth_ : Joined<["-"], "ftemplate-depth-">, Group<f_Group>;
- def ftemplate_backtrace_limit_EQ : Joined<["-"], "ftemplate-backtrace-limit=">,
- Group<f_Group>;
- def foperator_arrow_depth_EQ : Joined<["-"], "foperator-arrow-depth=">,
- Group<f_Group>;
- def fsave_optimization_record : Flag<["-"], "fsave-optimization-record">,
- Group<f_Group>, HelpText<"Generate a YAML optimization record file">;
- def fsave_optimization_record_EQ : Joined<["-"], "fsave-optimization-record=">,
- Group<f_Group>, HelpText<"Generate an optimization record file in a specific format">,
- MetaVarName<"<format>">;
- def fno_save_optimization_record : Flag<["-"], "fno-save-optimization-record">,
- Group<f_Group>, Flags<[NoArgumentUnused]>;
- def foptimization_record_file_EQ : Joined<["-"], "foptimization-record-file=">,
- Group<f_Group>,
- HelpText<"Specify the output name of the file containing the optimization remarks. Implies -fsave-optimization-record. On Darwin platforms, this cannot be used with multiple -arch <arch> options.">,
- MetaVarName<"<file>">;
- def foptimization_record_passes_EQ : Joined<["-"], "foptimization-record-passes=">,
- Group<f_Group>,
- HelpText<"Only include passes which match a specified regular expression in the generated optimization record (by default, include all passes)">,
- MetaVarName<"<regex>">;
- def fvectorize : Flag<["-"], "fvectorize">, Group<f_Group>,
- HelpText<"Enable the loop vectorization passes">;
- def fno_vectorize : Flag<["-"], "fno-vectorize">, Group<f_Group>;
- def : Flag<["-"], "ftree-vectorize">, Alias<fvectorize>;
- def : Flag<["-"], "fno-tree-vectorize">, Alias<fno_vectorize>;
- def fslp_vectorize : Flag<["-"], "fslp-vectorize">, Group<f_Group>,
- HelpText<"Enable the superword-level parallelism vectorization passes">;
- def fno_slp_vectorize : Flag<["-"], "fno-slp-vectorize">, Group<f_Group>;
- def : Flag<["-"], "ftree-slp-vectorize">, Alias<fslp_vectorize>;
- def : Flag<["-"], "fno-tree-slp-vectorize">, Alias<fno_slp_vectorize>;
- def Wlarge_by_value_copy_def : Flag<["-"], "Wlarge-by-value-copy">,
- HelpText<"Warn if a function definition returns or accepts an object larger "
- "in bytes than a given value">, Flags<[HelpHidden]>;
- def Wlarge_by_value_copy_EQ : Joined<["-"], "Wlarge-by-value-copy=">, Flags<[CC1Option]>,
- MarshallingInfoInt<LangOpts<"NumLargeByValueCopy">>;
- // These "special" warning flags are effectively processed as f_Group flags by the driver:
- // Just silence warnings about -Wlarger-than for now.
- def Wlarger_than_EQ : Joined<["-"], "Wlarger-than=">, Group<clang_ignored_f_Group>;
- def Wlarger_than_ : Joined<["-"], "Wlarger-than-">, Alias<Wlarger_than_EQ>;
- // This is converted to -fwarn-stack-size=N and also passed through by the driver.
- // FIXME: The driver should strip out the =<value> when passing W_value_Group through.
- def Wframe_larger_than_EQ : Joined<["-"], "Wframe-larger-than=">, Group<W_value_Group>,
- Flags<[NoXarchOption, CC1Option]>;
- def Wframe_larger_than : Flag<["-"], "Wframe-larger-than">, Alias<Wframe_larger_than_EQ>;
- def : Flag<["-"], "fterminated-vtables">, Alias<fapple_kext>;
- defm threadsafe_statics : BoolFOption<"threadsafe-statics",
- LangOpts<"ThreadsafeStatics">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Do not emit code to make initialization of local statics thread safe">,
- PosFlag<SetTrue>>;
- def ftime_report : Flag<["-"], "ftime-report">, Group<f_Group>, Flags<[CC1Option]>,
- MarshallingInfoFlag<CodeGenOpts<"TimePasses">>;
- def ftime_report_EQ: Joined<["-"], "ftime-report=">, Group<f_Group>,
- Flags<[CC1Option]>, Values<"per-pass,per-pass-run">,
- MarshallingInfoFlag<CodeGenOpts<"TimePassesPerRun">>,
- HelpText<"(For new pass manager) 'per-pass': one report for each pass; "
- "'per-pass-run': one report for each pass invocation">;
- def ftime_trace : Flag<["-"], "ftime-trace">, Group<f_Group>,
- HelpText<"Turn on time profiler. Generates JSON file based on output filename.">,
- DocBrief<[{
- Turn on time profiler. Generates JSON file based on output filename. Results
- can be analyzed with chrome://tracing or `Speedscope App
- <https://www.speedscope.app>`_ for flamegraph visualization.}]>,
- Flags<[CC1Option, CoreOption]>,
- MarshallingInfoFlag<FrontendOpts<"TimeTrace">>;
- def ftime_trace_granularity_EQ : Joined<["-"], "ftime-trace-granularity=">, Group<f_Group>,
- HelpText<"Minimum time granularity (in microseconds) traced by time profiler">,
- Flags<[CC1Option, CoreOption]>,
- MarshallingInfoInt<FrontendOpts<"TimeTraceGranularity">, "500u">;
- def ftime_trace_EQ : Joined<["-"], "ftime-trace=">, Group<f_Group>,
- HelpText<"Similar to -ftime-trace. Specify the JSON file or a directory which will contain the JSON file">,
- Flags<[CC1Option, CoreOption]>,
- MarshallingInfoString<FrontendOpts<"TimeTracePath">>;
- def fproc_stat_report : Joined<["-"], "fproc-stat-report">, Group<f_Group>,
- HelpText<"Print subprocess statistics">;
- def fproc_stat_report_EQ : Joined<["-"], "fproc-stat-report=">, Group<f_Group>,
- HelpText<"Save subprocess statistics to the given file">;
- def ftlsmodel_EQ : Joined<["-"], "ftls-model=">, Group<f_Group>, Flags<[CC1Option]>,
- Values<"global-dynamic,local-dynamic,initial-exec,local-exec">,
- NormalizedValuesScope<"CodeGenOptions">,
- NormalizedValues<["GeneralDynamicTLSModel", "LocalDynamicTLSModel", "InitialExecTLSModel", "LocalExecTLSModel"]>,
- MarshallingInfoEnum<CodeGenOpts<"DefaultTLSModel">, "GeneralDynamicTLSModel">;
- def ftrapv : Flag<["-"], "ftrapv">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Trap on integer overflow">;
- def ftrapv_handler_EQ : Joined<["-"], "ftrapv-handler=">, Group<f_Group>,
- MetaVarName<"<function name>">,
- HelpText<"Specify the function to be called on overflow">;
- def ftrapv_handler : Separate<["-"], "ftrapv-handler">, Group<f_Group>, Flags<[CC1Option]>;
- def ftrap_function_EQ : Joined<["-"], "ftrap-function=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Issue call to specified function rather than a trap instruction">,
- MarshallingInfoString<CodeGenOpts<"TrapFuncName">>;
- def funroll_loops : Flag<["-"], "funroll-loops">, Group<f_Group>,
- HelpText<"Turn on loop unroller">, Flags<[CC1Option]>;
- def fno_unroll_loops : Flag<["-"], "fno-unroll-loops">, Group<f_Group>,
- HelpText<"Turn off loop unroller">, Flags<[CC1Option]>;
- defm reroll_loops : BoolFOption<"reroll-loops",
- CodeGenOpts<"RerollLoops">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Turn on loop reroller">, NegFlag<SetFalse>>;
- def ffinite_loops: Flag<["-"], "ffinite-loops">, Group<f_Group>,
- HelpText<"Assume all loops are finite.">, Flags<[CC1Option]>;
- def fno_finite_loops: Flag<["-"], "fno-finite-loops">, Group<f_Group>,
- HelpText<"Do not assume that any loop is finite.">, Flags<[CC1Option]>;
- def ftrigraphs : Flag<["-"], "ftrigraphs">, Group<f_Group>,
- HelpText<"Process trigraph sequences">, Flags<[CC1Option]>;
- def fno_trigraphs : Flag<["-"], "fno-trigraphs">, Group<f_Group>,
- HelpText<"Do not process trigraph sequences">, Flags<[CC1Option]>;
- def funsigned_bitfields : Flag<["-"], "funsigned-bitfields">, Group<f_Group>;
- def funsigned_char : Flag<["-"], "funsigned-char">, Group<f_Group>;
- def fno_unsigned_char : Flag<["-"], "fno-unsigned-char">;
- def funwind_tables : Flag<["-"], "funwind-tables">, Group<f_Group>;
- defm register_global_dtors_with_atexit : BoolFOption<"register-global-dtors-with-atexit",
- CodeGenOpts<"RegisterGlobalDtorsWithAtExit">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Use">, NegFlag<SetFalse, [], "Don't use">,
- BothFlags<[], " atexit or __cxa_atexit to register global destructors">>;
- defm use_init_array : BoolFOption<"use-init-array",
- CodeGenOpts<"UseInitArray">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Use .ctors/.dtors instead of .init_array/.fini_array">,
- PosFlag<SetTrue>>;
- def fno_var_tracking : Flag<["-"], "fno-var-tracking">, Group<clang_ignored_f_Group>;
- def fverbose_asm : Flag<["-"], "fverbose-asm">, Group<f_Group>,
- HelpText<"Generate verbose assembly output">;
- def dA : Flag<["-"], "dA">, Alias<fverbose_asm>;
- defm visibility_from_dllstorageclass : BoolFOption<"visibility-from-dllstorageclass",
- LangOpts<"VisibilityFromDLLStorageClass">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Set the visibility of symbols in the generated code from their DLL storage class">,
- NegFlag<SetFalse>>;
- def fvisibility_dllexport_EQ : Joined<["-"], "fvisibility-dllexport=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"The visibility for dllexport definitions [-fvisibility-from-dllstorageclass]">,
- MarshallingInfoVisibility<LangOpts<"DLLExportVisibility">, "DefaultVisibility">,
- ShouldParseIf<fvisibility_from_dllstorageclass.KeyPath>;
- def fvisibility_nodllstorageclass_EQ : Joined<["-"], "fvisibility-nodllstorageclass=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"The visibility for definitions without an explicit DLL export class [-fvisibility-from-dllstorageclass]">,
- MarshallingInfoVisibility<LangOpts<"NoDLLStorageClassVisibility">, "HiddenVisibility">,
- ShouldParseIf<fvisibility_from_dllstorageclass.KeyPath>;
- def fvisibility_externs_dllimport_EQ : Joined<["-"], "fvisibility-externs-dllimport=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"The visibility for dllimport external declarations [-fvisibility-from-dllstorageclass]">,
- MarshallingInfoVisibility<LangOpts<"ExternDeclDLLImportVisibility">, "DefaultVisibility">,
- ShouldParseIf<fvisibility_from_dllstorageclass.KeyPath>;
- def fvisibility_externs_nodllstorageclass_EQ : Joined<["-"], "fvisibility-externs-nodllstorageclass=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"The visibility for external declarations without an explicit DLL dllstorageclass [-fvisibility-from-dllstorageclass]">,
- MarshallingInfoVisibility<LangOpts<"ExternDeclNoDLLStorageClassVisibility">, "HiddenVisibility">,
- ShouldParseIf<fvisibility_from_dllstorageclass.KeyPath>;
- def fvisibility_EQ : Joined<["-"], "fvisibility=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Set the default symbol visibility for all global definitions">,
- MarshallingInfoVisibility<LangOpts<"ValueVisibilityMode">, "DefaultVisibility">;
- defm visibility_inlines_hidden : BoolFOption<"visibility-inlines-hidden",
- LangOpts<"InlineVisibilityHidden">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Give inline C++ member functions hidden visibility by default">,
- NegFlag<SetFalse>>;
- defm visibility_inlines_hidden_static_local_var : BoolFOption<"visibility-inlines-hidden-static-local-var",
- LangOpts<"VisibilityInlinesHiddenStaticLocalVar">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "When -fvisibility-inlines-hidden is enabled, static variables in"
- " inline C++ member functions will also be given hidden visibility by default">,
- NegFlag<SetFalse, [], "Disables -fvisibility-inlines-hidden-static-local-var"
- " (this is the default on non-darwin targets)">, BothFlags<[CC1Option]>>;
- def fvisibility_ms_compat : Flag<["-"], "fvisibility-ms-compat">, Group<f_Group>,
- HelpText<"Give global types 'default' visibility and global functions and "
- "variables 'hidden' visibility by default">;
- def fvisibility_global_new_delete_hidden : Flag<["-"], "fvisibility-global-new-delete-hidden">, Group<f_Group>,
- HelpText<"Give global C++ operator new and delete declarations hidden visibility">, Flags<[CC1Option]>,
- MarshallingInfoFlag<LangOpts<"GlobalAllocationFunctionVisibilityHidden">>;
- def mdefault_visibility_export_mapping_EQ : Joined<["-"], "mdefault-visibility-export-mapping=">,
- Values<"none,explicit,all">,
- NormalizedValuesScope<"LangOptions::DefaultVisiblityExportMapping">,
- NormalizedValues<["None", "Explicit", "All"]>,
- HelpText<"Mapping between default visibility and export">,
- Group<m_Group>, Flags<[CC1Option]>,
- MarshallingInfoEnum<LangOpts<"DefaultVisibilityExportMapping">,"None">;
- defm new_infallible : BoolFOption<"new-infallible",
- LangOpts<"NewInfallible">, DefaultFalse,
- PosFlag<SetTrue, [], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[CC1Option], " treating throwing global C++ operator new as always returning valid memory "
- "(annotates with __attribute__((returns_nonnull)) and throw()). This is detectable in source.">>;
- defm whole_program_vtables : BoolFOption<"whole-program-vtables",
- CodeGenOpts<"WholeProgramVTables">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enables whole-program vtable optimization. Requires -flto">,
- NegFlag<SetFalse>, BothFlags<[CoreOption]>>;
- defm split_lto_unit : BoolFOption<"split-lto-unit",
- CodeGenOpts<"EnableSplitLTOUnit">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enables splitting of the LTO unit">,
- NegFlag<SetFalse>, BothFlags<[CoreOption]>>;
- defm force_emit_vtables : BoolFOption<"force-emit-vtables",
- CodeGenOpts<"ForceEmitVTables">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Emits more virtual tables to improve devirtualization">,
- NegFlag<SetFalse>, BothFlags<[CoreOption]>>;
- defm virtual_function_elimination : BoolFOption<"virtual-function-elimination",
- CodeGenOpts<"VirtualFunctionElimination">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enables dead virtual function elimination optimization. Requires -flto=full">,
- NegFlag<SetFalse>, BothFlags<[CoreOption]>>;
- def fwrapv : Flag<["-"], "fwrapv">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Treat signed integer overflow as two's complement">;
- def fwritable_strings : Flag<["-"], "fwritable-strings">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Store string literals as writable data">,
- MarshallingInfoFlag<LangOpts<"WritableStrings">>;
- defm zero_initialized_in_bss : BoolFOption<"zero-initialized-in-bss",
- CodeGenOpts<"NoZeroInitializedInBSS">, DefaultFalse,
- NegFlag<SetTrue, [CC1Option], "Don't place zero initialized data in BSS">,
- PosFlag<SetFalse>>;
- defm function_sections : BoolFOption<"function-sections",
- CodeGenOpts<"FunctionSections">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Place each function in its own section">,
- NegFlag<SetFalse>>;
- def fbasic_block_sections_EQ : Joined<["-"], "fbasic-block-sections=">, Group<f_Group>,
- Flags<[CC1Option, CC1AsOption]>,
- HelpText<"Place each function's basic blocks in unique sections (ELF Only)">,
- DocBrief<[{Generate labels for each basic block or place each basic block or a subset of basic blocks in its own section.}]>,
- Values<"all,labels,none,list=">,
- MarshallingInfoString<CodeGenOpts<"BBSections">, [{"none"}]>;
- defm data_sections : BoolFOption<"data-sections",
- CodeGenOpts<"DataSections">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Place each data in its own section">, NegFlag<SetFalse>>;
- defm stack_size_section : BoolFOption<"stack-size-section",
- CodeGenOpts<"StackSizeSection">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Emit section containing metadata on function stack sizes">,
- NegFlag<SetFalse>>;
- def fstack_usage : Flag<["-"], "fstack-usage">, Group<f_Group>,
- HelpText<"Emit .su file containing information on function stack sizes">;
- def stack_usage_file : Separate<["-"], "stack-usage-file">,
- Flags<[CC1Option, NoDriverOption]>,
- HelpText<"Filename (or -) to write stack usage output to">,
- MarshallingInfoString<CodeGenOpts<"StackUsageOutput">>;
- defm unique_basic_block_section_names : BoolFOption<"unique-basic-block-section-names",
- CodeGenOpts<"UniqueBasicBlockSectionNames">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Use unique names for basic block sections (ELF Only)">,
- NegFlag<SetFalse>>;
- defm unique_internal_linkage_names : BoolFOption<"unique-internal-linkage-names",
- CodeGenOpts<"UniqueInternalLinkageNames">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Uniqueify Internal Linkage Symbol Names by appending"
- " the MD5 hash of the module path">,
- NegFlag<SetFalse>>;
- defm unique_section_names : BoolFOption<"unique-section-names",
- CodeGenOpts<"UniqueSectionNames">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Don't use unique names for text and data sections">,
- PosFlag<SetTrue>>;
- defm split_machine_functions: BoolFOption<"split-machine-functions",
- CodeGenOpts<"SplitMachineFunctions">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[], " late function splitting using profile information (x86 ELF)">>;
- defm strict_return : BoolFOption<"strict-return",
- CodeGenOpts<"StrictReturn">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Don't treat control flow paths that fall off the end"
- " of a non-void function as unreachable">,
- PosFlag<SetTrue>>;
- def fenable_matrix : Flag<["-"], "fenable-matrix">, Group<f_Group>,
- Flags<[CC1Option]>,
- HelpText<"Enable matrix data type and related builtin functions">,
- MarshallingInfoFlag<LangOpts<"MatrixTypes">>;
- def fzero_call_used_regs_EQ
- : Joined<["-"], "fzero-call-used-regs=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Clear call-used registers upon function return (AArch64/x86 only)">,
- Values<"skip,used-gpr-arg,used-gpr,used-arg,used,all-gpr-arg,all-gpr,all-arg,all">,
- NormalizedValues<["Skip", "UsedGPRArg", "UsedGPR", "UsedArg", "Used",
- "AllGPRArg", "AllGPR", "AllArg", "All"]>,
- NormalizedValuesScope<"llvm::ZeroCallUsedRegs::ZeroCallUsedRegsKind">,
- MarshallingInfoEnum<CodeGenOpts<"ZeroCallUsedRegs">, "Skip">;
- def fdebug_types_section: Flag <["-"], "fdebug-types-section">, Group<f_Group>,
- HelpText<"Place debug types in their own section (ELF Only)">;
- def fno_debug_types_section: Flag<["-"], "fno-debug-types-section">, Group<f_Group>;
- defm debug_ranges_base_address : BoolFOption<"debug-ranges-base-address",
- CodeGenOpts<"DebugRangesBaseAddress">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Use DWARF base address selection entries in .debug_ranges">,
- NegFlag<SetFalse>>;
- defm split_dwarf_inlining : BoolFOption<"split-dwarf-inlining",
- CodeGenOpts<"SplitDwarfInlining">, DefaultFalse,
- NegFlag<SetFalse, []>,
- PosFlag<SetTrue, [CC1Option], "Provide minimal debug info in the object/executable"
- " to facilitate online symbolication/stack traces in the absence of"
- " .dwo/.dwp files when using Split DWARF">>;
- def fdebug_default_version: Joined<["-"], "fdebug-default-version=">, Group<f_Group>,
- HelpText<"Default DWARF version to use, if a -g option caused DWARF debug info to be produced">;
- def fdebug_prefix_map_EQ
- : Joined<["-"], "fdebug-prefix-map=">, Group<f_Group>,
- Flags<[CC1Option,CC1AsOption]>,
- HelpText<"remap file source paths in debug info">;
- def fcoverage_prefix_map_EQ
- : Joined<["-"], "fcoverage-prefix-map=">, Group<f_Group>,
- Flags<[CC1Option]>,
- HelpText<"remap file source paths in coverage mapping">;
- def ffile_prefix_map_EQ
- : Joined<["-"], "ffile-prefix-map=">, Group<f_Group>,
- HelpText<"remap file source paths in debug info, predefined preprocessor "
- "macros and __builtin_FILE(). Implies -ffile-reproducible.">;
- def fmacro_prefix_map_EQ
- : Joined<["-"], "fmacro-prefix-map=">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"remap file source paths in predefined preprocessor macros and "
- "__builtin_FILE(). Implies -ffile-reproducible.">;
- defm force_dwarf_frame : BoolFOption<"force-dwarf-frame",
- CodeGenOpts<"ForceDwarfFrameSection">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Always emit a debug frame section">, NegFlag<SetFalse>>;
- def femit_dwarf_unwind_EQ : Joined<["-"], "femit-dwarf-unwind=">,
- Group<f_Group>, Flags<[CC1Option, CC1AsOption]>,
- HelpText<"When to emit DWARF unwind (EH frame) info">,
- Values<"always,no-compact-unwind,default">,
- NormalizedValues<["Always", "NoCompactUnwind", "Default"]>,
- NormalizedValuesScope<"llvm::EmitDwarfUnwindType">,
- MarshallingInfoEnum<CodeGenOpts<"EmitDwarfUnwind">, "Default">;
- def g_Flag : Flag<["-"], "g">, Group<g_Group>,
- HelpText<"Generate source-level debug information">;
- def gline_tables_only : Flag<["-"], "gline-tables-only">, Group<gN_Group>,
- Flags<[CoreOption]>, HelpText<"Emit debug line number tables only">;
- def gline_directives_only : Flag<["-"], "gline-directives-only">, Group<gN_Group>,
- Flags<[CoreOption]>, HelpText<"Emit debug line info directives only">;
- def gmlt : Flag<["-"], "gmlt">, Alias<gline_tables_only>;
- def g0 : Flag<["-"], "g0">, Group<gN_Group>;
- def g1 : Flag<["-"], "g1">, Group<gN_Group>, Alias<gline_tables_only>;
- def g2 : Flag<["-"], "g2">, Group<gN_Group>;
- def g3 : Flag<["-"], "g3">, Group<gN_Group>;
- def ggdb : Flag<["-"], "ggdb">, Group<gTune_Group>;
- def ggdb0 : Flag<["-"], "ggdb0">, Group<ggdbN_Group>;
- def ggdb1 : Flag<["-"], "ggdb1">, Group<ggdbN_Group>;
- def ggdb2 : Flag<["-"], "ggdb2">, Group<ggdbN_Group>;
- def ggdb3 : Flag<["-"], "ggdb3">, Group<ggdbN_Group>;
- def glldb : Flag<["-"], "glldb">, Group<gTune_Group>;
- def gsce : Flag<["-"], "gsce">, Group<gTune_Group>;
- def gdbx : Flag<["-"], "gdbx">, Group<gTune_Group>;
- // Equivalent to our default dwarf version. Forces usual dwarf emission when
- // CodeView is enabled.
- def gdwarf : Flag<["-"], "gdwarf">, Group<g_Group>, Flags<[CoreOption]>,
- HelpText<"Generate source-level debug information with the default dwarf version">;
- def gdwarf_2 : Flag<["-"], "gdwarf-2">, Group<g_Group>,
- HelpText<"Generate source-level debug information with dwarf version 2">;
- def gdwarf_3 : Flag<["-"], "gdwarf-3">, Group<g_Group>,
- HelpText<"Generate source-level debug information with dwarf version 3">;
- def gdwarf_4 : Flag<["-"], "gdwarf-4">, Group<g_Group>,
- HelpText<"Generate source-level debug information with dwarf version 4">;
- def gdwarf_5 : Flag<["-"], "gdwarf-5">, Group<g_Group>,
- HelpText<"Generate source-level debug information with dwarf version 5">;
- def gdwarf64 : Flag<["-"], "gdwarf64">, Group<g_Group>,
- Flags<[CC1Option, CC1AsOption]>,
- HelpText<"Enables DWARF64 format for ELF binaries, if debug information emission is enabled.">,
- MarshallingInfoFlag<CodeGenOpts<"Dwarf64">>;
- def gdwarf32 : Flag<["-"], "gdwarf32">, Group<g_Group>,
- Flags<[CC1Option, CC1AsOption]>,
- HelpText<"Enables DWARF32 format for ELF binaries, if debug information emission is enabled.">;
- def gcodeview : Flag<["-"], "gcodeview">,
- HelpText<"Generate CodeView debug information">,
- Flags<[CC1Option, CC1AsOption, CoreOption]>,
- MarshallingInfoFlag<CodeGenOpts<"EmitCodeView">>;
- defm codeview_ghash : BoolOption<"g", "codeview-ghash",
- CodeGenOpts<"CodeViewGHash">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Emit type record hashes in a .debug$H section">,
- NegFlag<SetFalse>, BothFlags<[CoreOption]>>;
- defm codeview_command_line : BoolOption<"g", "codeview-command-line",
- CodeGenOpts<"CodeViewCommandLine">, DefaultTrue,
- PosFlag<SetTrue, [], "Emit compiler path and command line into CodeView debug information">,
- NegFlag<SetFalse, [], "Don't emit compiler path and command line into CodeView debug information">,
- BothFlags<[CoreOption, CC1Option]>>;
- defm inline_line_tables : BoolGOption<"inline-line-tables",
- CodeGenOpts<"NoInlineLineTables">, DefaultFalse,
- NegFlag<SetTrue, [CC1Option], "Don't emit inline line tables.">,
- PosFlag<SetFalse>, BothFlags<[CoreOption]>>;
- def gfull : Flag<["-"], "gfull">, Group<g_Group>;
- def gused : Flag<["-"], "gused">, Group<g_Group>;
- def gstabs : Joined<["-"], "gstabs">, Group<g_Group>, Flags<[Unsupported]>;
- def gcoff : Joined<["-"], "gcoff">, Group<g_Group>, Flags<[Unsupported]>;
- def gxcoff : Joined<["-"], "gxcoff">, Group<g_Group>, Flags<[Unsupported]>;
- def gvms : Joined<["-"], "gvms">, Group<g_Group>, Flags<[Unsupported]>;
- def gtoggle : Flag<["-"], "gtoggle">, Group<g_flags_Group>, Flags<[Unsupported]>;
- def grecord_command_line : Flag<["-"], "grecord-command-line">,
- Group<g_flags_Group>;
- def gno_record_command_line : Flag<["-"], "gno-record-command-line">,
- Group<g_flags_Group>;
- def : Flag<["-"], "grecord-gcc-switches">, Alias<grecord_command_line>;
- def : Flag<["-"], "gno-record-gcc-switches">, Alias<gno_record_command_line>;
- defm strict_dwarf : BoolOption<"g", "strict-dwarf",
- CodeGenOpts<"DebugStrictDwarf">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>, BothFlags<[CoreOption]>>,
- Group<g_flags_Group>;
- defm column_info : BoolOption<"g", "column-info",
- CodeGenOpts<"DebugColumnInfo">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option]>, PosFlag<SetTrue>, BothFlags<[CoreOption]>>,
- Group<g_flags_Group>;
- def gsplit_dwarf : Flag<["-"], "gsplit-dwarf">, Group<g_flags_Group>;
- def gsplit_dwarf_EQ : Joined<["-"], "gsplit-dwarf=">, Group<g_flags_Group>,
- HelpText<"Set DWARF fission mode">,
- Values<"split,single">;
- def gno_split_dwarf : Flag<["-"], "gno-split-dwarf">, Group<g_flags_Group>;
- def gsimple_template_names : Flag<["-"], "gsimple-template-names">, Group<g_flags_Group>;
- def gsimple_template_names_EQ
- : Joined<["-"], "gsimple-template-names=">,
- HelpText<"Use simple template names in DWARF, or include the full "
- "template name with a modified prefix for validation">,
- Values<"simple,mangled">, Flags<[CC1Option, NoDriverOption]>;
- def gsrc_hash_EQ : Joined<["-"], "gsrc-hash=">,
- Group<g_flags_Group>, Flags<[CC1Option, NoDriverOption]>,
- Values<"md5,sha1,sha256">,
- NormalizedValues<["DSH_MD5", "DSH_SHA1", "DSH_SHA256"]>,
- NormalizedValuesScope<"CodeGenOptions">,
- MarshallingInfoEnum<CodeGenOpts<"DebugSrcHash">, "DSH_MD5">;
- def gno_simple_template_names : Flag<["-"], "gno-simple-template-names">,
- Group<g_flags_Group>;
- def ggnu_pubnames : Flag<["-"], "ggnu-pubnames">, Group<g_flags_Group>, Flags<[CC1Option]>;
- def gno_gnu_pubnames : Flag<["-"], "gno-gnu-pubnames">, Group<g_flags_Group>;
- def gpubnames : Flag<["-"], "gpubnames">, Group<g_flags_Group>, Flags<[CC1Option]>;
- def gno_pubnames : Flag<["-"], "gno-pubnames">, Group<g_flags_Group>;
- def gdwarf_aranges : Flag<["-"], "gdwarf-aranges">, Group<g_flags_Group>;
- def gmodules : Flag <["-"], "gmodules">, Group<gN_Group>,
- HelpText<"Generate debug info with external references to clang modules"
- " or precompiled headers">;
- def gno_modules : Flag <["-"], "gno-modules">, Group<g_flags_Group>;
- def gz_EQ : Joined<["-"], "gz=">, Group<g_flags_Group>,
- HelpText<"DWARF debug sections compression type">;
- def gz : Flag<["-"], "gz">, Alias<gz_EQ>, AliasArgs<["zlib"]>, Group<g_flags_Group>;
- def gembed_source : Flag<["-"], "gembed-source">, Group<g_flags_Group>, Flags<[CC1Option]>,
- HelpText<"Embed source text in DWARF debug sections">,
- MarshallingInfoFlag<CodeGenOpts<"EmbedSource">>;
- def gno_embed_source : Flag<["-"], "gno-embed-source">, Group<g_flags_Group>,
- Flags<[NoXarchOption]>,
- HelpText<"Restore the default behavior of not embedding source text in DWARF debug sections">;
- def headerpad__max__install__names : Joined<["-"], "headerpad_max_install_names">;
- def help : Flag<["-", "--"], "help">, Flags<[CC1Option,CC1AsOption, FC1Option,
- FlangOption]>, HelpText<"Display available options">,
- MarshallingInfoFlag<FrontendOpts<"ShowHelp">>;
- def ibuiltininc : Flag<["-"], "ibuiltininc">,
- HelpText<"Enable builtin #include directories even when -nostdinc is used "
- "before or after -ibuiltininc. "
- "Using -nobuiltininc after the option disables it">;
- def index_header_map : Flag<["-"], "index-header-map">, Flags<[CC1Option]>,
- HelpText<"Make the next included directory (-I or -F) an indexer header map">;
- def idirafter : JoinedOrSeparate<["-"], "idirafter">, Group<clang_i_Group>, Flags<[CC1Option]>,
- HelpText<"Add directory to AFTER include search path">;
- def iframework : JoinedOrSeparate<["-"], "iframework">, Group<clang_i_Group>, Flags<[CC1Option]>,
- HelpText<"Add directory to SYSTEM framework search path">;
- def iframeworkwithsysroot : JoinedOrSeparate<["-"], "iframeworkwithsysroot">,
- Group<clang_i_Group>,
- HelpText<"Add directory to SYSTEM framework search path, "
- "absolute paths are relative to -isysroot">,
- MetaVarName<"<directory>">, Flags<[CC1Option]>;
- def imacros : JoinedOrSeparate<["-", "--"], "imacros">, Group<clang_i_Group>, Flags<[CC1Option]>,
- HelpText<"Include macros from file before parsing">, MetaVarName<"<file>">,
- MarshallingInfoStringVector<PreprocessorOpts<"MacroIncludes">>;
- def image__base : Separate<["-"], "image_base">;
- def include_ : JoinedOrSeparate<["-", "--"], "include">, Group<clang_i_Group>, EnumName<"include">,
- MetaVarName<"<file>">, HelpText<"Include file before parsing">, Flags<[CC1Option]>;
- def include_pch : Separate<["-"], "include-pch">, Group<clang_i_Group>, Flags<[CC1Option]>,
- HelpText<"Include precompiled header file">, MetaVarName<"<file>">,
- MarshallingInfoString<PreprocessorOpts<"ImplicitPCHInclude">>;
- def relocatable_pch : Flag<["-", "--"], "relocatable-pch">, Flags<[CC1Option]>,
- HelpText<"Whether to build a relocatable precompiled header">,
- MarshallingInfoFlag<FrontendOpts<"RelocatablePCH">>;
- def verify_pch : Flag<["-"], "verify-pch">, Group<Action_Group>, Flags<[CC1Option]>,
- HelpText<"Load and verify that a pre-compiled header file is not stale">;
- def init : Separate<["-"], "init">;
- def install__name : Separate<["-"], "install_name">;
- def iprefix : JoinedOrSeparate<["-"], "iprefix">, Group<clang_i_Group>, Flags<[CC1Option]>,
- HelpText<"Set the -iwithprefix/-iwithprefixbefore prefix">, MetaVarName<"<dir>">;
- def iquote : JoinedOrSeparate<["-"], "iquote">, Group<clang_i_Group>, Flags<[CC1Option]>,
- HelpText<"Add directory to QUOTE include search path">, MetaVarName<"<directory>">;
- def isysroot : JoinedOrSeparate<["-"], "isysroot">, Group<clang_i_Group>, Flags<[CC1Option]>,
- HelpText<"Set the system root directory (usually /)">, MetaVarName<"<dir>">,
- MarshallingInfoString<HeaderSearchOpts<"Sysroot">, [{"/"}]>;
- def isystem : JoinedOrSeparate<["-"], "isystem">, Group<clang_i_Group>,
- Flags<[CC1Option]>,
- HelpText<"Add directory to SYSTEM include search path">, MetaVarName<"<directory>">;
- def isystem_after : JoinedOrSeparate<["-"], "isystem-after">,
- Group<clang_i_Group>, Flags<[NoXarchOption]>, MetaVarName<"<directory>">,
- HelpText<"Add directory to end of the SYSTEM include search path">;
- def iwithprefixbefore : JoinedOrSeparate<["-"], "iwithprefixbefore">, Group<clang_i_Group>,
- HelpText<"Set directory to include search path with prefix">, MetaVarName<"<dir>">,
- Flags<[CC1Option]>;
- def iwithprefix : JoinedOrSeparate<["-"], "iwithprefix">, Group<clang_i_Group>, Flags<[CC1Option]>,
- HelpText<"Set directory to SYSTEM include search path with prefix">, MetaVarName<"<dir>">;
- def iwithsysroot : JoinedOrSeparate<["-"], "iwithsysroot">, Group<clang_i_Group>,
- HelpText<"Add directory to SYSTEM include search path, "
- "absolute paths are relative to -isysroot">, MetaVarName<"<directory>">,
- Flags<[CC1Option]>;
- def ivfsoverlay : JoinedOrSeparate<["-"], "ivfsoverlay">, Group<clang_i_Group>, Flags<[CC1Option]>,
- HelpText<"Overlay the virtual filesystem described by file over the real file system">;
- def imultilib : Separate<["-"], "imultilib">, Group<gfortran_Group>;
- def keep__private__externs : Flag<["-"], "keep_private_externs">;
- def l : JoinedOrSeparate<["-"], "l">, Flags<[LinkerInput, RenderJoined]>,
- Group<Link_Group>;
- def lazy__framework : Separate<["-"], "lazy_framework">, Flags<[LinkerInput]>;
- def lazy__library : Separate<["-"], "lazy_library">, Flags<[LinkerInput]>;
- def mlittle_endian : Flag<["-"], "mlittle-endian">, Flags<[NoXarchOption]>;
- def EL : Flag<["-"], "EL">, Alias<mlittle_endian>;
- def mbig_endian : Flag<["-"], "mbig-endian">, Flags<[NoXarchOption]>;
- def EB : Flag<["-"], "EB">, Alias<mbig_endian>;
- def m16 : Flag<["-"], "m16">, Group<m_Group>, Flags<[NoXarchOption, CoreOption]>;
- def m32 : Flag<["-"], "m32">, Group<m_Group>, Flags<[NoXarchOption, CoreOption]>;
- def mqdsp6_compat : Flag<["-"], "mqdsp6-compat">, Group<m_Group>, Flags<[NoXarchOption,CC1Option]>,
- HelpText<"Enable hexagon-qdsp6 backward compatibility">,
- MarshallingInfoFlag<LangOpts<"HexagonQdsp6Compat">>;
- def m64 : Flag<["-"], "m64">, Group<m_Group>, Flags<[NoXarchOption, CoreOption]>;
- def mx32 : Flag<["-"], "mx32">, Group<m_Group>, Flags<[NoXarchOption, CoreOption]>;
- def mabi_EQ : Joined<["-"], "mabi=">, Group<m_Group>;
- def miamcu : Flag<["-"], "miamcu">, Group<m_Group>, Flags<[NoXarchOption, CoreOption]>,
- HelpText<"Use Intel MCU ABI">;
- def mno_iamcu : Flag<["-"], "mno-iamcu">, Group<m_Group>, Flags<[NoXarchOption, CoreOption]>;
- def malign_functions_EQ : Joined<["-"], "malign-functions=">, Group<clang_ignored_m_Group>;
- def malign_loops_EQ : Joined<["-"], "malign-loops=">, Group<clang_ignored_m_Group>;
- def malign_jumps_EQ : Joined<["-"], "malign-jumps=">, Group<clang_ignored_m_Group>;
- def malign_branch_EQ : CommaJoined<["-"], "malign-branch=">, Group<m_Group>, Flags<[NoXarchOption]>,
- HelpText<"Specify types of branches to align">;
- def malign_branch_boundary_EQ : Joined<["-"], "malign-branch-boundary=">, Group<m_Group>, Flags<[NoXarchOption]>,
- HelpText<"Specify the boundary's size to align branches">;
- def mpad_max_prefix_size_EQ : Joined<["-"], "mpad-max-prefix-size=">, Group<m_Group>, Flags<[NoXarchOption]>,
- HelpText<"Specify maximum number of prefixes to use for padding">;
- def mbranches_within_32B_boundaries : Flag<["-"], "mbranches-within-32B-boundaries">, Flags<[NoXarchOption]>, Group<m_Group>,
- HelpText<"Align selected branches (fused, jcc, jmp) within 32-byte boundary">;
- def mfancy_math_387 : Flag<["-"], "mfancy-math-387">, Group<clang_ignored_m_Group>;
- def mlong_calls : Flag<["-"], "mlong-calls">, Group<m_Group>,
- HelpText<"Generate branches with extended addressability, usually via indirect jumps.">;
- def mdouble_EQ : Joined<["-"], "mdouble=">, Group<m_Group>,
- MetaVarName<"<n">, Values<"32,64">, Flags<[CC1Option]>,
- HelpText<"Force double to be <n> bits">,
- MarshallingInfoInt<LangOpts<"DoubleSize">, "0">;
- def LongDouble_Group : OptionGroup<"<LongDouble group>">, Group<m_Group>,
- DocName<"Long double flags">,
- DocBrief<[{Selects the long double implementation}]>;
- def mlong_double_64 : Flag<["-"], "mlong-double-64">, Group<LongDouble_Group>, Flags<[CC1Option]>,
- HelpText<"Force long double to be 64 bits">;
- def mlong_double_80 : Flag<["-"], "mlong-double-80">, Group<LongDouble_Group>, Flags<[CC1Option]>,
- HelpText<"Force long double to be 80 bits, padded to 128 bits for storage">;
- def mlong_double_128 : Flag<["-"], "mlong-double-128">, Group<LongDouble_Group>, Flags<[CC1Option]>,
- HelpText<"Force long double to be 128 bits">;
- def mno_long_calls : Flag<["-"], "mno-long-calls">, Group<m_Group>,
- HelpText<"Restore the default behaviour of not generating long calls">;
- def mexecute_only : Flag<["-"], "mexecute-only">, Group<m_arm_Features_Group>,
- HelpText<"Disallow generation of data access to code sections (ARM only)">;
- def mno_execute_only : Flag<["-"], "mno-execute-only">, Group<m_arm_Features_Group>,
- HelpText<"Allow generation of data access to code sections (ARM only)">;
- def mtp_mode_EQ : Joined<["-"], "mtp=">, Group<m_arm_Features_Group>, Values<"soft,cp15,el0,el1,el2,el3">,
- HelpText<"Thread pointer access method (AArch32/AArch64 only)">;
- def mpure_code : Flag<["-"], "mpure-code">, Alias<mexecute_only>; // Alias for GCC compatibility
- def mno_pure_code : Flag<["-"], "mno-pure-code">, Alias<mno_execute_only>;
- def mtvos_version_min_EQ : Joined<["-"], "mtvos-version-min=">, Group<m_Group>;
- def mappletvos_version_min_EQ : Joined<["-"], "mappletvos-version-min=">, Alias<mtvos_version_min_EQ>;
- def mtvos_simulator_version_min_EQ : Joined<["-"], "mtvos-simulator-version-min=">;
- def mappletvsimulator_version_min_EQ : Joined<["-"], "mappletvsimulator-version-min=">, Alias<mtvos_simulator_version_min_EQ>;
- def mwatchos_version_min_EQ : Joined<["-"], "mwatchos-version-min=">, Group<m_Group>;
- def mwatchos_simulator_version_min_EQ : Joined<["-"], "mwatchos-simulator-version-min=">;
- def mwatchsimulator_version_min_EQ : Joined<["-"], "mwatchsimulator-version-min=">, Alias<mwatchos_simulator_version_min_EQ>;
- def march_EQ : Joined<["-"], "march=">, Group<m_Group>, Flags<[CoreOption]>;
- def masm_EQ : Joined<["-"], "masm=">, Group<m_Group>, Flags<[NoXarchOption]>;
- def inline_asm_EQ : Joined<["-"], "inline-asm=">, Group<m_Group>, Flags<[CC1Option]>,
- Values<"att,intel">,
- NormalizedValuesScope<"CodeGenOptions">, NormalizedValues<["IAD_ATT", "IAD_Intel"]>,
- MarshallingInfoEnum<CodeGenOpts<"InlineAsmDialect">, "IAD_ATT">;
- def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group<m_Group>, Flags<[CC1Option]>,
- MarshallingInfoString<TargetOpts<"CodeModel">, [{"default"}]>;
- def mtls_size_EQ : Joined<["-"], "mtls-size=">, Group<m_Group>, Flags<[NoXarchOption, CC1Option]>,
- HelpText<"Specify bit size of immediate TLS offsets (AArch64 ELF only): "
- "12 (for 4KB) | 24 (for 16MB, default) | 32 (for 4GB) | 48 (for 256TB, needs -mcmodel=large)">,
- MarshallingInfoInt<CodeGenOpts<"TLSSize">>;
- def mimplicit_it_EQ : Joined<["-"], "mimplicit-it=">, Group<m_Group>;
- def mdefault_build_attributes : Joined<["-"], "mdefault-build-attributes">, Group<m_Group>;
- def mno_default_build_attributes : Joined<["-"], "mno-default-build-attributes">, Group<m_Group>;
- def mconstant_cfstrings : Flag<["-"], "mconstant-cfstrings">, Group<clang_ignored_m_Group>;
- def mconsole : Joined<["-"], "mconsole">, Group<m_Group>, Flags<[NoXarchOption]>;
- def mwindows : Joined<["-"], "mwindows">, Group<m_Group>, Flags<[NoXarchOption]>;
- def mdll : Joined<["-"], "mdll">, Group<m_Group>, Flags<[NoXarchOption]>;
- def municode : Joined<["-"], "municode">, Group<m_Group>, Flags<[NoXarchOption]>;
- def mthreads : Joined<["-"], "mthreads">, Group<m_Group>, Flags<[NoXarchOption]>;
- def mguard_EQ : Joined<["-"], "mguard=">, Group<m_Group>, Flags<[NoXarchOption]>,
- HelpText<"Enable or disable Control Flow Guard checks and guard tables emission">,
- Values<"none,cf,cf-nochecks">;
- def mcpu_EQ : Joined<["-"], "mcpu=">, Group<m_Group>;
- def mmcu_EQ : Joined<["-"], "mmcu=">, Group<m_Group>;
- def msim : Flag<["-"], "msim">, Group<m_Group>;
- def mdynamic_no_pic : Joined<["-"], "mdynamic-no-pic">, Group<m_Group>;
- def mfix_and_continue : Flag<["-"], "mfix-and-continue">, Group<clang_ignored_m_Group>;
- def mieee_fp : Flag<["-"], "mieee-fp">, Group<clang_ignored_m_Group>;
- def minline_all_stringops : Flag<["-"], "minline-all-stringops">, Group<clang_ignored_m_Group>;
- def mno_inline_all_stringops : Flag<["-"], "mno-inline-all-stringops">, Group<clang_ignored_m_Group>;
- def malign_double : Flag<["-"], "malign-double">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Align doubles to two words in structs (x86 only)">,
- MarshallingInfoFlag<LangOpts<"AlignDouble">>;
- def mfloat_abi_EQ : Joined<["-"], "mfloat-abi=">, Group<m_Group>, Values<"soft,softfp,hard">;
- def mfpmath_EQ : Joined<["-"], "mfpmath=">, Group<m_Group>;
- def mfpu_EQ : Joined<["-"], "mfpu=">, Group<m_Group>;
- def mhwdiv_EQ : Joined<["-"], "mhwdiv=">, Group<m_Group>;
- def mhwmult_EQ : Joined<["-"], "mhwmult=">, Group<m_Group>;
- def mglobal_merge : Flag<["-"], "mglobal-merge">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Enable merging of globals">;
- def mhard_float : Flag<["-"], "mhard-float">, Group<m_Group>;
- def mios_version_min_EQ : Joined<["-"], "mios-version-min=">,
- Group<m_Group>, HelpText<"Set iOS deployment target">;
- def : Joined<["-"], "miphoneos-version-min=">,
- Group<m_Group>, Alias<mios_version_min_EQ>;
- def mios_simulator_version_min_EQ : Joined<["-"], "mios-simulator-version-min=">;
- def : Joined<["-"], "miphonesimulator-version-min=">, Alias<mios_simulator_version_min_EQ>;
- def mkernel : Flag<["-"], "mkernel">, Group<m_Group>;
- def mlinker_version_EQ : Joined<["-"], "mlinker-version=">,
- Flags<[NoXarchOption]>;
- def mllvm : Separate<["-"], "mllvm">,Flags<[CC1Option,CC1AsOption,CoreOption,FC1Option,FlangOption]>,
- HelpText<"Additional arguments to forward to LLVM's option processing">,
- MarshallingInfoStringVector<FrontendOpts<"LLVMArgs">>;
- def mmlir : Separate<["-"], "mmlir">, Flags<[CoreOption,FC1Option,FlangOption]>,
- HelpText<"Additional arguments to forward to MLIR's option processing">;
- def ffuchsia_api_level_EQ : Joined<["-"], "ffuchsia-api-level=">,
- Group<m_Group>, Flags<[CC1Option]>, HelpText<"Set Fuchsia API level">,
- MarshallingInfoInt<LangOpts<"FuchsiaAPILevel">>;
- def mmacos_version_min_EQ : Joined<["-"], "mmacos-version-min=">,
- Group<m_Group>, HelpText<"Set macOS deployment target">;
- def : Joined<["-"], "mmacosx-version-min=">,
- Group<m_Group>, Alias<mmacos_version_min_EQ>;
- def mms_bitfields : Flag<["-"], "mms-bitfields">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Set the default structure layout to be compatible with the Microsoft compiler standard">,
- MarshallingInfoFlag<LangOpts<"MSBitfields">>;
- def moutline : Flag<["-"], "moutline">, Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Enable function outlining (AArch64 only)">;
- def mno_outline : Flag<["-"], "mno-outline">, Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Disable function outlining (AArch64 only)">;
- def mno_ms_bitfields : Flag<["-"], "mno-ms-bitfields">, Group<m_Group>,
- HelpText<"Do not set the default structure layout to be compatible with the Microsoft compiler standard">;
- def mskip_rax_setup : Flag<["-"], "mskip-rax-setup">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Skip setting up RAX register when passing variable arguments (x86 only)">,
- MarshallingInfoFlag<CodeGenOpts<"SkipRaxSetup">>;
- def mno_skip_rax_setup : Flag<["-"], "mno-skip-rax-setup">, Group<m_Group>, Flags<[CC1Option]>;
- def mstackrealign : Flag<["-"], "mstackrealign">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Force realign the stack at entry to every function">,
- MarshallingInfoFlag<CodeGenOpts<"StackRealignment">>;
- def mstack_alignment : Joined<["-"], "mstack-alignment=">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Set the stack alignment">,
- MarshallingInfoInt<CodeGenOpts<"StackAlignment">>;
- def mstack_probe_size : Joined<["-"], "mstack-probe-size=">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Set the stack probe size">,
- MarshallingInfoInt<CodeGenOpts<"StackProbeSize">, "4096">;
- def mstack_arg_probe : Flag<["-"], "mstack-arg-probe">, Group<m_Group>,
- HelpText<"Enable stack probes">;
- def mno_stack_arg_probe : Flag<["-"], "mno-stack-arg-probe">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Disable stack probes which are enabled by default">,
- MarshallingInfoFlag<CodeGenOpts<"NoStackArgProbe">>;
- def mthread_model : Separate<["-"], "mthread-model">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"The thread model to use. Defaults to 'posix')">, Values<"posix,single">,
- NormalizedValues<["POSIX", "Single"]>, NormalizedValuesScope<"LangOptions::ThreadModelKind">,
- MarshallingInfoEnum<LangOpts<"ThreadModel">, "POSIX">;
- def meabi : Separate<["-"], "meabi">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Set EABI type. Default depends on triple)">, Values<"default,4,5,gnu">,
- MarshallingInfoEnum<TargetOpts<"EABIVersion">, "Default">,
- NormalizedValuesScope<"llvm::EABI">,
- NormalizedValues<["Default", "EABI4", "EABI5", "GNU"]>;
- def mtargetos_EQ : Joined<["-"], "mtargetos=">, Group<m_Group>,
- HelpText<"Set the deployment target to be the specified OS and OS version">;
- def mno_constant_cfstrings : Flag<["-"], "mno-constant-cfstrings">, Group<m_Group>;
- def mno_global_merge : Flag<["-"], "mno-global-merge">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Disable merging of globals">;
- def mno_pascal_strings : Flag<["-"], "mno-pascal-strings">,
- Alias<fno_pascal_strings>;
- def mno_red_zone : Flag<["-"], "mno-red-zone">, Group<m_Group>;
- def mno_tls_direct_seg_refs : Flag<["-"], "mno-tls-direct-seg-refs">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Disable direct TLS access through segment registers">,
- MarshallingInfoFlag<CodeGenOpts<"IndirectTlsSegRefs">>;
- def mno_relax_all : Flag<["-"], "mno-relax-all">, Group<m_Group>;
- def mno_rtd: Flag<["-"], "mno-rtd">, Group<m_Group>;
- def mno_soft_float : Flag<["-"], "mno-soft-float">, Group<m_Group>;
- def mno_stackrealign : Flag<["-"], "mno-stackrealign">, Group<m_Group>;
- def mretpoline : Flag<["-"], "mretpoline">, Group<m_Group>, Flags<[CoreOption,NoXarchOption]>;
- def mno_retpoline : Flag<["-"], "mno-retpoline">, Group<m_Group>, Flags<[CoreOption,NoXarchOption]>;
- defm speculative_load_hardening : BoolOption<"m", "speculative-load-hardening",
- CodeGenOpts<"SpeculativeLoadHardening">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>, BothFlags<[CoreOption]>>,
- Group<m_Group>;
- def mlvi_hardening : Flag<["-"], "mlvi-hardening">, Group<m_Group>, Flags<[CoreOption,NoXarchOption]>,
- HelpText<"Enable all mitigations for Load Value Injection (LVI)">;
- def mno_lvi_hardening : Flag<["-"], "mno-lvi-hardening">, Group<m_Group>, Flags<[CoreOption,NoXarchOption]>,
- HelpText<"Disable mitigations for Load Value Injection (LVI)">;
- def mlvi_cfi : Flag<["-"], "mlvi-cfi">, Group<m_Group>, Flags<[CoreOption,NoXarchOption]>,
- HelpText<"Enable only control-flow mitigations for Load Value Injection (LVI)">;
- def mno_lvi_cfi : Flag<["-"], "mno-lvi-cfi">, Group<m_Group>, Flags<[CoreOption,NoXarchOption]>,
- HelpText<"Disable control-flow mitigations for Load Value Injection (LVI)">;
- def m_seses : Flag<["-"], "mseses">, Group<m_Group>, Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Enable speculative execution side effect suppression (SESES). "
- "Includes LVI control flow integrity mitigations">;
- def mno_seses : Flag<["-"], "mno-seses">, Group<m_Group>, Flags<[CoreOption, NoXarchOption]>,
- HelpText<"Disable speculative execution side effect suppression (SESES)">;
- def mrelax : Flag<["-"], "mrelax">, Group<m_Group>,
- HelpText<"Enable linker relaxation">;
- def mno_relax : Flag<["-"], "mno-relax">, Group<m_Group>,
- HelpText<"Disable linker relaxation">;
- def msmall_data_limit_EQ : Joined<["-"], "msmall-data-limit=">, Group<m_Group>,
- Alias<G>,
- HelpText<"Put global and static data smaller than the limit into a special section">;
- def msave_restore : Flag<["-"], "msave-restore">, Group<m_riscv_Features_Group>,
- HelpText<"Enable using library calls for save and restore">;
- def mno_save_restore : Flag<["-"], "mno-save-restore">, Group<m_riscv_Features_Group>,
- HelpText<"Disable using library calls for save and restore">;
- def mcmodel_EQ_medlow : Flag<["-"], "mcmodel=medlow">, Group<m_Group>,
- Flags<[CC1Option]>, Alias<mcmodel_EQ>, AliasArgs<["small"]>,
- HelpText<"Equivalent to -mcmodel=small, compatible with RISC-V gcc.">;
- def mcmodel_EQ_medany : Flag<["-"], "mcmodel=medany">, Group<m_Group>,
- Flags<[CC1Option]>, Alias<mcmodel_EQ>, AliasArgs<["medium"]>,
- HelpText<"Equivalent to -mcmodel=medium, compatible with RISC-V gcc.">;
- def menable_experimental_extensions : Flag<["-"], "menable-experimental-extensions">, Group<m_Group>,
- HelpText<"Enable use of experimental RISC-V extensions.">;
- def munaligned_access : Flag<["-"], "munaligned-access">, Group<m_arm_Features_Group>,
- HelpText<"Allow memory accesses to be unaligned (AArch32/AArch64 only)">;
- def mno_unaligned_access : Flag<["-"], "mno-unaligned-access">, Group<m_arm_Features_Group>,
- HelpText<"Force all memory accesses to be aligned (AArch32/AArch64 only)">;
- def mstrict_align : Flag<["-"], "mstrict-align">, Alias<mno_unaligned_access>, Flags<[CC1Option,HelpHidden]>,
- HelpText<"Force all memory accesses to be aligned (same as mno-unaligned-access)">;
- def mno_thumb : Flag<["-"], "mno-thumb">, Group<m_arm_Features_Group>;
- def mrestrict_it: Flag<["-"], "mrestrict-it">, Group<m_arm_Features_Group>,
- HelpText<"Disallow generation of complex IT blocks.">;
- def mno_restrict_it: Flag<["-"], "mno-restrict-it">, Group<m_arm_Features_Group>,
- HelpText<"Allow generation of complex IT blocks.">;
- def marm : Flag<["-"], "marm">, Alias<mno_thumb>;
- def ffixed_r9 : Flag<["-"], "ffixed-r9">, Group<m_arm_Features_Group>,
- HelpText<"Reserve the r9 register (ARM only)">;
- def mno_movt : Flag<["-"], "mno-movt">, Group<m_arm_Features_Group>,
- HelpText<"Disallow use of movt/movw pairs (ARM only)">;
- def mcrc : Flag<["-"], "mcrc">, Group<m_Group>,
- HelpText<"Allow use of CRC instructions (ARM/Mips only)">;
- def mnocrc : Flag<["-"], "mnocrc">, Group<m_arm_Features_Group>,
- HelpText<"Disallow use of CRC instructions (ARM only)">;
- def mno_neg_immediates: Flag<["-"], "mno-neg-immediates">, Group<m_arm_Features_Group>,
- HelpText<"Disallow converting instructions with negative immediates to their negation or inversion.">;
- def mcmse : Flag<["-"], "mcmse">, Group<m_arm_Features_Group>,
- Flags<[NoXarchOption,CC1Option]>,
- HelpText<"Allow use of CMSE (Armv8-M Security Extensions)">,
- MarshallingInfoFlag<LangOpts<"Cmse">>;
- def ForceAAPCSBitfieldLoad : Flag<["-"], "faapcs-bitfield-load">, Group<m_arm_Features_Group>,
- Flags<[NoXarchOption,CC1Option]>,
- HelpText<"Follows the AAPCS standard that all volatile bit-field write generates at least one load. (ARM only).">,
- MarshallingInfoFlag<CodeGenOpts<"ForceAAPCSBitfieldLoad">>;
- defm aapcs_bitfield_width : BoolOption<"f", "aapcs-bitfield-width",
- CodeGenOpts<"AAPCSBitfieldWidth">, DefaultTrue,
- NegFlag<SetFalse, [], "Do not follow">, PosFlag<SetTrue, [], "Follow">,
- BothFlags<[NoXarchOption, CC1Option], " the AAPCS standard requirement stating that"
- " volatile bit-field width is dictated by the field container type. (ARM only).">>,
- Group<m_arm_Features_Group>;
- def mframe_chain : Joined<["-"], "mframe-chain=">,
- Group<m_arm_Features_Group>, Values<"none,aapcs,aapcs+leaf">,
- HelpText<"Select the frame chain model used to emit frame records (Arm only).">;
- def mgeneral_regs_only : Flag<["-"], "mgeneral-regs-only">, Group<m_Group>,
- HelpText<"Generate code which only uses the general purpose registers (AArch64/x86 only)">;
- def mfix_cmse_cve_2021_35465 : Flag<["-"], "mfix-cmse-cve-2021-35465">,
- Group<m_arm_Features_Group>,
- HelpText<"Work around VLLDM erratum CVE-2021-35465 (ARM only)">;
- def mno_fix_cmse_cve_2021_35465 : Flag<["-"], "mno-fix-cmse-cve-2021-35465">,
- Group<m_arm_Features_Group>,
- HelpText<"Don't work around VLLDM erratum CVE-2021-35465 (ARM only)">;
- def mfix_cortex_a57_aes_1742098 : Flag<["-"], "mfix-cortex-a57-aes-1742098">,
- Group<m_arm_Features_Group>,
- HelpText<"Work around Cortex-A57 Erratum 1742098 (ARM only)">;
- def mno_fix_cortex_a57_aes_1742098 : Flag<["-"], "mno-fix-cortex-a57-aes-1742098">,
- Group<m_arm_Features_Group>,
- HelpText<"Don't work around Cortex-A57 Erratum 1742098 (ARM only)">;
- def mfix_cortex_a72_aes_1655431 : Flag<["-"], "mfix-cortex-a72-aes-1655431">,
- Group<m_arm_Features_Group>,
- HelpText<"Work around Cortex-A72 Erratum 1655431 (ARM only)">,
- Alias<mfix_cortex_a57_aes_1742098>;
- def mno_fix_cortex_a72_aes_1655431 : Flag<["-"], "mno-fix-cortex-a72-aes-1655431">,
- Group<m_arm_Features_Group>,
- HelpText<"Don't work around Cortex-A72 Erratum 1655431 (ARM only)">,
- Alias<mno_fix_cortex_a57_aes_1742098>;
- def mfix_cortex_a53_835769 : Flag<["-"], "mfix-cortex-a53-835769">,
- Group<m_aarch64_Features_Group>,
- HelpText<"Workaround Cortex-A53 erratum 835769 (AArch64 only)">;
- def mno_fix_cortex_a53_835769 : Flag<["-"], "mno-fix-cortex-a53-835769">,
- Group<m_aarch64_Features_Group>,
- HelpText<"Don't workaround Cortex-A53 erratum 835769 (AArch64 only)">;
- def mmark_bti_property : Flag<["-"], "mmark-bti-property">,
- Group<m_aarch64_Features_Group>,
- HelpText<"Add .note.gnu.property with BTI to assembly files (AArch64 only)">;
- def mno_bti_at_return_twice : Flag<["-"], "mno-bti-at-return-twice">,
- Group<m_arm_Features_Group>,
- HelpText<"Do not add a BTI instruction after a setjmp or other"
- " return-twice construct (Arm/AArch64 only)">;
- foreach i = {1-31} in
- def ffixed_x#i : Flag<["-"], "ffixed-x"#i>, Group<m_Group>,
- HelpText<"Reserve the x"#i#" register (AArch64/RISC-V only)">;
- foreach i = {8-15,18} in
- def fcall_saved_x#i : Flag<["-"], "fcall-saved-x"#i>, Group<m_aarch64_Features_Group>,
- HelpText<"Make the x"#i#" register call-saved (AArch64 only)">;
- def msve_vector_bits_EQ : Joined<["-"], "msve-vector-bits=">, Group<m_aarch64_Features_Group>,
- HelpText<"Specify the size in bits of an SVE vector register. Defaults to the"
- " vector length agnostic value of \"scalable\". (AArch64 only)">;
- def mvscale_min_EQ : Joined<["-"], "mvscale-min=">,
- Group<m_aarch64_Features_Group>, Flags<[NoXarchOption,CC1Option]>,
- HelpText<"Specify the vscale minimum. Defaults to \"1\". (AArch64 only)">,
- MarshallingInfoInt<LangOpts<"VScaleMin">>;
- def mvscale_max_EQ : Joined<["-"], "mvscale-max=">,
- Group<m_aarch64_Features_Group>, Flags<[NoXarchOption,CC1Option]>,
- HelpText<"Specify the vscale maximum. Defaults to the"
- " vector length agnostic value of \"0\". (AArch64 only)">,
- MarshallingInfoInt<LangOpts<"VScaleMax">>;
- def msign_return_address_EQ : Joined<["-"], "msign-return-address=">,
- Flags<[CC1Option]>, Group<m_Group>, Values<"none,all,non-leaf">,
- HelpText<"Select return address signing scope">;
- def mbranch_protection_EQ : Joined<["-"], "mbranch-protection=">,
- Group<m_Group>,
- HelpText<"Enforce targets of indirect branches and function returns">;
- def mharden_sls_EQ : Joined<["-"], "mharden-sls=">,
- HelpText<"Select straight-line speculation hardening scope (ARM/AArch64/X86"
- " only). <arg> must be: all, none, retbr(ARM/AArch64),"
- " blr(ARM/AArch64), comdat(ARM/AArch64), nocomdat(ARM/AArch64),"
- " return(X86), indirect-jmp(X86)">;
- def msimd128 : Flag<["-"], "msimd128">, Group<m_wasm_Features_Group>;
- def mno_simd128 : Flag<["-"], "mno-simd128">, Group<m_wasm_Features_Group>;
- def mrelaxed_simd : Flag<["-"], "mrelaxed-simd">, Group<m_wasm_Features_Group>;
- def mno_relaxed_simd : Flag<["-"], "mno-relaxed-simd">, Group<m_wasm_Features_Group>;
- def mnontrapping_fptoint : Flag<["-"], "mnontrapping-fptoint">, Group<m_wasm_Features_Group>;
- def mno_nontrapping_fptoint : Flag<["-"], "mno-nontrapping-fptoint">, Group<m_wasm_Features_Group>;
- def msign_ext : Flag<["-"], "msign-ext">, Group<m_wasm_Features_Group>;
- def mno_sign_ext : Flag<["-"], "mno-sign-ext">, Group<m_wasm_Features_Group>;
- def mexception_handing : Flag<["-"], "mexception-handling">, Group<m_wasm_Features_Group>;
- def mno_exception_handing : Flag<["-"], "mno-exception-handling">, Group<m_wasm_Features_Group>;
- def matomics : Flag<["-"], "matomics">, Group<m_wasm_Features_Group>;
- def mno_atomics : Flag<["-"], "mno-atomics">, Group<m_wasm_Features_Group>;
- def mbulk_memory : Flag<["-"], "mbulk-memory">, Group<m_wasm_Features_Group>;
- def mno_bulk_memory : Flag<["-"], "mno-bulk-memory">, Group<m_wasm_Features_Group>;
- def mmutable_globals : Flag<["-"], "mmutable-globals">, Group<m_wasm_Features_Group>;
- def mno_mutable_globals : Flag<["-"], "mno-mutable-globals">, Group<m_wasm_Features_Group>;
- def mmultivalue : Flag<["-"], "mmultivalue">, Group<m_wasm_Features_Group>;
- def mno_multivalue : Flag<["-"], "mno-multivalue">, Group<m_wasm_Features_Group>;
- def mtail_call : Flag<["-"], "mtail-call">, Group<m_wasm_Features_Group>;
- def mno_tail_call : Flag<["-"], "mno-tail-call">, Group<m_wasm_Features_Group>;
- def mreference_types : Flag<["-"], "mreference-types">, Group<m_wasm_Features_Group>;
- def mno_reference_types : Flag<["-"], "mno-reference-types">, Group<m_wasm_Features_Group>;
- def mextended_const : Flag<["-"], "mextended-const">, Group<m_wasm_Features_Group>;
- def mno_extended_const : Flag<["-"], "mno-extended-const">, Group<m_wasm_Features_Group>;
- def mexec_model_EQ : Joined<["-"], "mexec-model=">, Group<m_wasm_Features_Driver_Group>,
- Values<"command,reactor">,
- HelpText<"Execution model (WebAssembly only)">;
- defm amdgpu_ieee : BoolOption<"m", "amdgpu-ieee",
- CodeGenOpts<"EmitIEEENaNCompliantInsts">, DefaultTrue,
- PosFlag<SetTrue, [], "Sets the IEEE bit in the expected default floating point "
- " mode register. Floating point opcodes that support exception flag "
- "gathering quiet and propagate signaling NaN inputs per IEEE 754-2008. "
- "This option changes the ABI. (AMDGPU only)">,
- NegFlag<SetFalse, [CC1Option]>>, Group<m_Group>;
- def mcode_object_version_EQ : Joined<["-"], "mcode-object-version=">, Group<m_Group>,
- HelpText<"Specify code object ABI version. Defaults to 4. (AMDGPU only)">,
- Flags<[CC1Option]>,
- Values<"none,2,3,4,5">,
- NormalizedValuesScope<"TargetOptions">,
- NormalizedValues<["COV_None", "COV_2", "COV_3", "COV_4", "COV_5"]>,
- MarshallingInfoEnum<TargetOpts<"CodeObjectVersion">, "COV_4">;
- defm code_object_v3_legacy : SimpleMFlag<"code-object-v3",
- "Legacy option to specify code object ABI V3",
- "Legacy option to specify code object ABI V2",
- " (AMDGPU only)">;
- defm cumode : SimpleMFlag<"cumode",
- "Specify CU wavefront", "Specify WGP wavefront",
- " execution mode (AMDGPU only)", m_amdgpu_Features_Group>;
- defm tgsplit : SimpleMFlag<"tgsplit", "Enable", "Disable",
- " threadgroup split execution mode (AMDGPU only)", m_amdgpu_Features_Group>;
- defm wavefrontsize64 : SimpleMFlag<"wavefrontsize64",
- "Specify wavefront size 64", "Specify wavefront size 32",
- " mode (AMDGPU only)">;
- defm unsafe_fp_atomics : BoolOption<"m", "unsafe-fp-atomics",
- TargetOpts<"AllowAMDGPUUnsafeFPAtomics">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable unsafe floating point atomic instructions (AMDGPU only)">,
- NegFlag<SetFalse>>, Group<m_Group>;
- def faltivec : Flag<["-"], "faltivec">, Group<f_Group>, Flags<[NoXarchOption]>;
- def fno_altivec : Flag<["-"], "fno-altivec">, Group<f_Group>, Flags<[NoXarchOption]>;
- def maltivec : Flag<["-"], "maltivec">, Group<m_ppc_Features_Group>;
- def mno_altivec : Flag<["-"], "mno-altivec">, Group<m_ppc_Features_Group>;
- def mpcrel: Flag<["-"], "mpcrel">, Group<m_ppc_Features_Group>;
- def mno_pcrel: Flag<["-"], "mno-pcrel">, Group<m_ppc_Features_Group>;
- def mprefixed: Flag<["-"], "mprefixed">, Group<m_ppc_Features_Group>;
- def mno_prefixed: Flag<["-"], "mno-prefixed">, Group<m_ppc_Features_Group>;
- def mspe : Flag<["-"], "mspe">, Group<m_ppc_Features_Group>;
- def mno_spe : Flag<["-"], "mno-spe">, Group<m_ppc_Features_Group>;
- def mefpu2 : Flag<["-"], "mefpu2">, Group<m_ppc_Features_Group>;
- def mabi_EQ_vec_extabi : Flag<["-"], "mabi=vec-extabi">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Enable the extended Altivec ABI on AIX (AIX only). Uses volatile and nonvolatile vector registers">,
- MarshallingInfoFlag<LangOpts<"EnableAIXExtendedAltivecABI">>;
- def mabi_EQ_vec_default : Flag<["-"], "mabi=vec-default">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Enable the default Altivec ABI on AIX (AIX only). Uses only volatile vector registers.">;
- def mabi_EQ_quadword_atomics : Flag<["-"], "mabi=quadword-atomics">,
- Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Enable quadword atomics ABI on AIX (AIX PPC64 only). Uses lqarx/stqcx. instructions.">,
- MarshallingInfoFlag<LangOpts<"EnableAIXQuadwordAtomicsABI">>;
- def mvsx : Flag<["-"], "mvsx">, Group<m_ppc_Features_Group>;
- def mno_vsx : Flag<["-"], "mno-vsx">, Group<m_ppc_Features_Group>;
- def msecure_plt : Flag<["-"], "msecure-plt">, Group<m_ppc_Features_Group>;
- def mpower8_vector : Flag<["-"], "mpower8-vector">,
- Group<m_ppc_Features_Group>;
- def mno_power8_vector : Flag<["-"], "mno-power8-vector">,
- Group<m_ppc_Features_Group>;
- def mpower9_vector : Flag<["-"], "mpower9-vector">,
- Group<m_ppc_Features_Group>;
- def mno_power9_vector : Flag<["-"], "mno-power9-vector">,
- Group<m_ppc_Features_Group>;
- def mpower10_vector : Flag<["-"], "mpower10-vector">,
- Group<m_ppc_Features_Group>;
- def mno_power10_vector : Flag<["-"], "mno-power10-vector">,
- Group<m_ppc_Features_Group>;
- def mpower8_crypto : Flag<["-"], "mcrypto">,
- Group<m_ppc_Features_Group>;
- def mnopower8_crypto : Flag<["-"], "mno-crypto">,
- Group<m_ppc_Features_Group>;
- def mdirect_move : Flag<["-"], "mdirect-move">,
- Group<m_ppc_Features_Group>;
- def mnodirect_move : Flag<["-"], "mno-direct-move">,
- Group<m_ppc_Features_Group>;
- def mpaired_vector_memops: Flag<["-"], "mpaired-vector-memops">,
- Group<m_ppc_Features_Group>;
- def mnopaired_vector_memops: Flag<["-"], "mno-paired-vector-memops">,
- Group<m_ppc_Features_Group>;
- def mhtm : Flag<["-"], "mhtm">, Group<m_ppc_Features_Group>;
- def mno_htm : Flag<["-"], "mno-htm">, Group<m_ppc_Features_Group>;
- def mfprnd : Flag<["-"], "mfprnd">, Group<m_ppc_Features_Group>;
- def mno_fprnd : Flag<["-"], "mno-fprnd">, Group<m_ppc_Features_Group>;
- def mcmpb : Flag<["-"], "mcmpb">, Group<m_ppc_Features_Group>;
- def mno_cmpb : Flag<["-"], "mno-cmpb">, Group<m_ppc_Features_Group>;
- def misel : Flag<["-"], "misel">, Group<m_ppc_Features_Group>;
- def mno_isel : Flag<["-"], "mno-isel">, Group<m_ppc_Features_Group>;
- def mmfocrf : Flag<["-"], "mmfocrf">, Group<m_ppc_Features_Group>;
- def mmfcrf : Flag<["-"], "mmfcrf">, Alias<mmfocrf>;
- def mno_mfocrf : Flag<["-"], "mno-mfocrf">, Group<m_ppc_Features_Group>;
- def mno_mfcrf : Flag<["-"], "mno-mfcrf">, Alias<mno_mfocrf>;
- def mpopcntd : Flag<["-"], "mpopcntd">, Group<m_ppc_Features_Group>;
- def mno_popcntd : Flag<["-"], "mno-popcntd">, Group<m_ppc_Features_Group>;
- def mcrbits : Flag<["-"], "mcrbits">, Group<m_ppc_Features_Group>;
- def mno_crbits : Flag<["-"], "mno-crbits">, Group<m_ppc_Features_Group>;
- def minvariant_function_descriptors :
- Flag<["-"], "minvariant-function-descriptors">, Group<m_ppc_Features_Group>;
- def mno_invariant_function_descriptors :
- Flag<["-"], "mno-invariant-function-descriptors">,
- Group<m_ppc_Features_Group>;
- def mfloat128: Flag<["-"], "mfloat128">,
- Group<m_ppc_Features_Group>;
- def mno_float128 : Flag<["-"], "mno-float128">,
- Group<m_ppc_Features_Group>;
- def mlongcall: Flag<["-"], "mlongcall">,
- Group<m_ppc_Features_Group>;
- def mno_longcall : Flag<["-"], "mno-longcall">,
- Group<m_ppc_Features_Group>;
- def mmma: Flag<["-"], "mmma">, Group<m_ppc_Features_Group>;
- def mno_mma: Flag<["-"], "mno-mma">, Group<m_ppc_Features_Group>;
- def mrop_protect : Flag<["-"], "mrop-protect">,
- Group<m_ppc_Features_Group>;
- def mprivileged : Flag<["-"], "mprivileged">,
- Group<m_ppc_Features_Group>;
- def maix_struct_return : Flag<["-"], "maix-struct-return">,
- Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Return all structs in memory (PPC32 only)">;
- def msvr4_struct_return : Flag<["-"], "msvr4-struct-return">,
- Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Return small structs in registers (PPC32 only)">;
- def mvx : Flag<["-"], "mvx">, Group<m_Group>;
- def mno_vx : Flag<["-"], "mno-vx">, Group<m_Group>;
- defm zvector : BoolFOption<"zvector",
- LangOpts<"ZVector">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Enable System z vector language extension">,
- NegFlag<SetFalse>>;
- def mzvector : Flag<["-"], "mzvector">, Alias<fzvector>;
- def mno_zvector : Flag<["-"], "mno-zvector">, Alias<fno_zvector>;
- def mignore_xcoff_visibility : Flag<["-"], "mignore-xcoff-visibility">, Group<m_Group>,
- HelpText<"Not emit the visibility attribute for asm in AIX OS or give all symbols 'unspecified' visibility in XCOFF object file">,
- Flags<[CC1Option]>;
- defm backchain : BoolOption<"m", "backchain",
- CodeGenOpts<"Backchain">, DefaultFalse,
- PosFlag<SetTrue, [], "Link stack frames through backchain on System Z">,
- NegFlag<SetFalse>, BothFlags<[NoXarchOption,CC1Option]>>, Group<m_Group>;
- def mno_warn_nonportable_cfstrings : Flag<["-"], "mno-warn-nonportable-cfstrings">, Group<m_Group>;
- def mno_omit_leaf_frame_pointer : Flag<["-"], "mno-omit-leaf-frame-pointer">, Group<m_Group>;
- def momit_leaf_frame_pointer : Flag<["-"], "momit-leaf-frame-pointer">, Group<m_Group>,
- HelpText<"Omit frame pointer setup for leaf functions">;
- def moslib_EQ : Joined<["-"], "moslib=">, Group<m_Group>;
- def mpascal_strings : Flag<["-"], "mpascal-strings">, Alias<fpascal_strings>;
- def mred_zone : Flag<["-"], "mred-zone">, Group<m_Group>;
- def mtls_direct_seg_refs : Flag<["-"], "mtls-direct-seg-refs">, Group<m_Group>,
- HelpText<"Enable direct TLS access through segment registers (default)">;
- def mregparm_EQ : Joined<["-"], "mregparm=">, Group<m_Group>;
- def mrelax_all : Flag<["-"], "mrelax-all">, Group<m_Group>, Flags<[CC1Option,CC1AsOption]>,
- HelpText<"(integrated-as) Relax all machine instructions">,
- MarshallingInfoFlag<CodeGenOpts<"RelaxAll">>;
- def mincremental_linker_compatible : Flag<["-"], "mincremental-linker-compatible">, Group<m_Group>,
- Flags<[CC1Option,CC1AsOption]>,
- HelpText<"(integrated-as) Emit an object file which can be used with an incremental linker">,
- MarshallingInfoFlag<CodeGenOpts<"IncrementalLinkerCompatible">>;
- def mno_incremental_linker_compatible : Flag<["-"], "mno-incremental-linker-compatible">, Group<m_Group>,
- HelpText<"(integrated-as) Emit an object file which cannot be used with an incremental linker">;
- def mrtd : Flag<["-"], "mrtd">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Make StdCall calling convention the default">;
- def msmall_data_threshold_EQ : Joined <["-"], "msmall-data-threshold=">,
- Group<m_Group>, Alias<G>;
- def msoft_float : Flag<["-"], "msoft-float">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Use software floating point">,
- MarshallingInfoFlag<CodeGenOpts<"SoftFloat">>;
- def mno_fmv : Flag<["-"], "mno-fmv">, Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Disable function multiversioning">;
- def moutline_atomics : Flag<["-"], "moutline-atomics">, Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Generate local calls to out-of-line atomic operations">;
- def mno_outline_atomics : Flag<["-"], "mno-outline-atomics">, Group<f_clang_Group>, Flags<[CC1Option]>,
- HelpText<"Don't generate local calls to out-of-line atomic operations">;
- def mno_implicit_float : Flag<["-"], "mno-implicit-float">, Group<m_Group>,
- HelpText<"Don't generate implicit floating point or vector instructions">;
- def mimplicit_float : Flag<["-"], "mimplicit-float">, Group<m_Group>;
- def mrecip : Flag<["-"], "mrecip">, Group<m_Group>;
- def mrecip_EQ : CommaJoined<["-"], "mrecip=">, Group<m_Group>, Flags<[CC1Option]>,
- MarshallingInfoStringVector<CodeGenOpts<"Reciprocals">>;
- def mprefer_vector_width_EQ : Joined<["-"], "mprefer-vector-width=">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Specifies preferred vector width for auto-vectorization. Defaults to 'none' which allows target specific decisions.">,
- MarshallingInfoString<CodeGenOpts<"PreferVectorWidth">>;
- def mstack_protector_guard_EQ : Joined<["-"], "mstack-protector-guard=">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Use the given guard (global, tls) for addressing the stack-protector guard">,
- MarshallingInfoString<CodeGenOpts<"StackProtectorGuard">>;
- def mstack_protector_guard_offset_EQ : Joined<["-"], "mstack-protector-guard-offset=">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Use the given offset for addressing the stack-protector guard">,
- MarshallingInfoInt<CodeGenOpts<"StackProtectorGuardOffset">, "INT_MAX", "int">;
- def mstack_protector_guard_symbol_EQ : Joined<["-"], "mstack-protector-guard-symbol=">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Use the given symbol for addressing the stack-protector guard">,
- MarshallingInfoString<CodeGenOpts<"StackProtectorGuardSymbol">>;
- def mstack_protector_guard_reg_EQ : Joined<["-"], "mstack-protector-guard-reg=">, Group<m_Group>, Flags<[CC1Option]>,
- HelpText<"Use the given reg for addressing the stack-protector guard">,
- MarshallingInfoString<CodeGenOpts<"StackProtectorGuardReg">>;
- def mfentry : Flag<["-"], "mfentry">, HelpText<"Insert calls to fentry at function entry (x86/SystemZ only)">,
- Flags<[CC1Option]>, Group<m_Group>,
- MarshallingInfoFlag<CodeGenOpts<"CallFEntry">>;
- def mnop_mcount : Flag<["-"], "mnop-mcount">, HelpText<"Generate mcount/__fentry__ calls as nops. To activate they need to be patched in.">,
- Flags<[CC1Option]>, Group<m_Group>,
- MarshallingInfoFlag<CodeGenOpts<"MNopMCount">>;
- def mrecord_mcount : Flag<["-"], "mrecord-mcount">, HelpText<"Generate a __mcount_loc section entry for each __fentry__ call.">,
- Flags<[CC1Option]>, Group<m_Group>,
- MarshallingInfoFlag<CodeGenOpts<"RecordMCount">>;
- def mpacked_stack : Flag<["-"], "mpacked-stack">, HelpText<"Use packed stack layout (SystemZ only).">,
- Flags<[CC1Option]>, Group<m_Group>,
- MarshallingInfoFlag<CodeGenOpts<"PackedStack">>;
- def mno_packed_stack : Flag<["-"], "mno-packed-stack">, Flags<[CC1Option]>, Group<m_Group>;
- def mips16 : Flag<["-"], "mips16">, Group<m_mips_Features_Group>;
- def mno_mips16 : Flag<["-"], "mno-mips16">, Group<m_mips_Features_Group>;
- def mmicromips : Flag<["-"], "mmicromips">, Group<m_mips_Features_Group>;
- def mno_micromips : Flag<["-"], "mno-micromips">, Group<m_mips_Features_Group>;
- def mxgot : Flag<["-"], "mxgot">, Group<m_mips_Features_Group>;
- def mno_xgot : Flag<["-"], "mno-xgot">, Group<m_mips_Features_Group>;
- def mldc1_sdc1 : Flag<["-"], "mldc1-sdc1">, Group<m_mips_Features_Group>;
- def mno_ldc1_sdc1 : Flag<["-"], "mno-ldc1-sdc1">, Group<m_mips_Features_Group>;
- def mcheck_zero_division : Flag<["-"], "mcheck-zero-division">,
- Group<m_mips_Features_Group>;
- def mno_check_zero_division : Flag<["-"], "mno-check-zero-division">,
- Group<m_mips_Features_Group>;
- def mfix4300 : Flag<["-"], "mfix4300">, Group<m_mips_Features_Group>;
- def mcompact_branches_EQ : Joined<["-"], "mcompact-branches=">,
- Group<m_mips_Features_Group>;
- def mbranch_likely : Flag<["-"], "mbranch-likely">, Group<m_Group>,
- IgnoredGCCCompat;
- def mno_branch_likely : Flag<["-"], "mno-branch-likely">, Group<m_Group>,
- IgnoredGCCCompat;
- def mindirect_jump_EQ : Joined<["-"], "mindirect-jump=">,
- Group<m_mips_Features_Group>,
- HelpText<"Change indirect jump instructions to inhibit speculation">;
- def mdsp : Flag<["-"], "mdsp">, Group<m_mips_Features_Group>;
- def mno_dsp : Flag<["-"], "mno-dsp">, Group<m_mips_Features_Group>;
- def mdspr2 : Flag<["-"], "mdspr2">, Group<m_mips_Features_Group>;
- def mno_dspr2 : Flag<["-"], "mno-dspr2">, Group<m_mips_Features_Group>;
- def msingle_float : Flag<["-"], "msingle-float">, Group<m_Group>;
- def mdouble_float : Flag<["-"], "mdouble-float">, Group<m_Group>;
- def mmadd4 : Flag<["-"], "mmadd4">, Group<m_mips_Features_Group>,
- HelpText<"Enable the generation of 4-operand madd.s, madd.d and related instructions.">;
- def mno_madd4 : Flag<["-"], "mno-madd4">, Group<m_mips_Features_Group>,
- HelpText<"Disable the generation of 4-operand madd.s, madd.d and related instructions.">;
- def mmsa : Flag<["-"], "mmsa">, Group<m_mips_Features_Group>,
- HelpText<"Enable MSA ASE (MIPS only)">;
- def mno_msa : Flag<["-"], "mno-msa">, Group<m_mips_Features_Group>,
- HelpText<"Disable MSA ASE (MIPS only)">;
- def mmt : Flag<["-"], "mmt">, Group<m_mips_Features_Group>,
- HelpText<"Enable MT ASE (MIPS only)">;
- def mno_mt : Flag<["-"], "mno-mt">, Group<m_mips_Features_Group>,
- HelpText<"Disable MT ASE (MIPS only)">;
- def mfp64 : Flag<["-"], "mfp64">, Group<m_mips_Features_Group>,
- HelpText<"Use 64-bit floating point registers (MIPS only)">;
- def mfp32 : Flag<["-"], "mfp32">, Group<m_mips_Features_Group>,
- HelpText<"Use 32-bit floating point registers (MIPS only)">;
- def mgpopt : Flag<["-"], "mgpopt">, Group<m_mips_Features_Group>,
- HelpText<"Use GP relative accesses for symbols known to be in a small"
- " data section (MIPS)">;
- def mno_gpopt : Flag<["-"], "mno-gpopt">, Group<m_mips_Features_Group>,
- HelpText<"Do not use GP relative accesses for symbols known to be in a small"
- " data section (MIPS)">;
- def mlocal_sdata : Flag<["-"], "mlocal-sdata">,
- Group<m_mips_Features_Group>,
- HelpText<"Extend the -G behaviour to object local data (MIPS)">;
- def mno_local_sdata : Flag<["-"], "mno-local-sdata">,
- Group<m_mips_Features_Group>,
- HelpText<"Do not extend the -G behaviour to object local data (MIPS)">;
- def mextern_sdata : Flag<["-"], "mextern-sdata">,
- Group<m_mips_Features_Group>,
- HelpText<"Assume that externally defined data is in the small data if it"
- " meets the -G <size> threshold (MIPS)">;
- def mno_extern_sdata : Flag<["-"], "mno-extern-sdata">,
- Group<m_mips_Features_Group>,
- HelpText<"Do not assume that externally defined data is in the small data if"
- " it meets the -G <size> threshold (MIPS)">;
- def membedded_data : Flag<["-"], "membedded-data">,
- Group<m_mips_Features_Group>,
- HelpText<"Place constants in the .rodata section instead of the .sdata "
- "section even if they meet the -G <size> threshold (MIPS)">;
- def mno_embedded_data : Flag<["-"], "mno-embedded-data">,
- Group<m_mips_Features_Group>,
- HelpText<"Do not place constants in the .rodata section instead of the "
- ".sdata if they meet the -G <size> threshold (MIPS)">;
- def mnan_EQ : Joined<["-"], "mnan=">, Group<m_mips_Features_Group>;
- def mabs_EQ : Joined<["-"], "mabs=">, Group<m_mips_Features_Group>;
- def mabicalls : Flag<["-"], "mabicalls">, Group<m_mips_Features_Group>,
- HelpText<"Enable SVR4-style position-independent code (Mips only)">;
- def mno_abicalls : Flag<["-"], "mno-abicalls">, Group<m_mips_Features_Group>,
- HelpText<"Disable SVR4-style position-independent code (Mips only)">;
- def mno_crc : Flag<["-"], "mno-crc">, Group<m_mips_Features_Group>,
- HelpText<"Disallow use of CRC instructions (Mips only)">;
- def mvirt : Flag<["-"], "mvirt">, Group<m_mips_Features_Group>;
- def mno_virt : Flag<["-"], "mno-virt">, Group<m_mips_Features_Group>;
- def mginv : Flag<["-"], "mginv">, Group<m_mips_Features_Group>;
- def mno_ginv : Flag<["-"], "mno-ginv">, Group<m_mips_Features_Group>;
- def mips1 : Flag<["-"], "mips1">,
- Alias<march_EQ>, AliasArgs<["mips1"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips1">, Flags<[HelpHidden]>;
- def mips2 : Flag<["-"], "mips2">,
- Alias<march_EQ>, AliasArgs<["mips2"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips2">, Flags<[HelpHidden]>;
- def mips3 : Flag<["-"], "mips3">,
- Alias<march_EQ>, AliasArgs<["mips3"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips3">, Flags<[HelpHidden]>;
- def mips4 : Flag<["-"], "mips4">,
- Alias<march_EQ>, AliasArgs<["mips4"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips4">, Flags<[HelpHidden]>;
- def mips5 : Flag<["-"], "mips5">,
- Alias<march_EQ>, AliasArgs<["mips5"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips5">, Flags<[HelpHidden]>;
- def mips32 : Flag<["-"], "mips32">,
- Alias<march_EQ>, AliasArgs<["mips32"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips32">, Flags<[HelpHidden]>;
- def mips32r2 : Flag<["-"], "mips32r2">,
- Alias<march_EQ>, AliasArgs<["mips32r2"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips32r2">, Flags<[HelpHidden]>;
- def mips32r3 : Flag<["-"], "mips32r3">,
- Alias<march_EQ>, AliasArgs<["mips32r3"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips32r3">, Flags<[HelpHidden]>;
- def mips32r5 : Flag<["-"], "mips32r5">,
- Alias<march_EQ>, AliasArgs<["mips32r5"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips32r5">, Flags<[HelpHidden]>;
- def mips32r6 : Flag<["-"], "mips32r6">,
- Alias<march_EQ>, AliasArgs<["mips32r6"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips32r6">, Flags<[HelpHidden]>;
- def mips64 : Flag<["-"], "mips64">,
- Alias<march_EQ>, AliasArgs<["mips64"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips64">, Flags<[HelpHidden]>;
- def mips64r2 : Flag<["-"], "mips64r2">,
- Alias<march_EQ>, AliasArgs<["mips64r2"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips64r2">, Flags<[HelpHidden]>;
- def mips64r3 : Flag<["-"], "mips64r3">,
- Alias<march_EQ>, AliasArgs<["mips64r3"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips64r3">, Flags<[HelpHidden]>;
- def mips64r5 : Flag<["-"], "mips64r5">,
- Alias<march_EQ>, AliasArgs<["mips64r5"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips64r5">, Flags<[HelpHidden]>;
- def mips64r6 : Flag<["-"], "mips64r6">,
- Alias<march_EQ>, AliasArgs<["mips64r6"]>, Group<m_mips_Features_Group>,
- HelpText<"Equivalent to -march=mips64r6">, Flags<[HelpHidden]>;
- def mfpxx : Flag<["-"], "mfpxx">, Group<m_mips_Features_Group>,
- HelpText<"Avoid FPU mode dependent operations when used with the O32 ABI">,
- Flags<[HelpHidden]>;
- def modd_spreg : Flag<["-"], "modd-spreg">, Group<m_mips_Features_Group>,
- HelpText<"Enable odd single-precision floating point registers">,
- Flags<[HelpHidden]>;
- def mno_odd_spreg : Flag<["-"], "mno-odd-spreg">, Group<m_mips_Features_Group>,
- HelpText<"Disable odd single-precision floating point registers">,
- Flags<[HelpHidden]>;
- def mrelax_pic_calls : Flag<["-"], "mrelax-pic-calls">,
- Group<m_mips_Features_Group>,
- HelpText<"Produce relaxation hints for linkers to try optimizing PIC "
- "call sequences into direct calls (MIPS only)">, Flags<[HelpHidden]>;
- def mno_relax_pic_calls : Flag<["-"], "mno-relax-pic-calls">,
- Group<m_mips_Features_Group>,
- HelpText<"Do not produce relaxation hints for linkers to try optimizing PIC "
- "call sequences into direct calls (MIPS only)">, Flags<[HelpHidden]>;
- def mglibc : Flag<["-"], "mglibc">, Group<m_libc_Group>, Flags<[HelpHidden]>;
- def muclibc : Flag<["-"], "muclibc">, Group<m_libc_Group>, Flags<[HelpHidden]>;
- def module_file_info : Flag<["-"], "module-file-info">, Flags<[NoXarchOption,CC1Option]>, Group<Action_Group>,
- HelpText<"Provide information about a particular module file">;
- def mthumb : Flag<["-"], "mthumb">, Group<m_Group>;
- def mtune_EQ : Joined<["-"], "mtune=">, Group<m_Group>,
- HelpText<"Only supported on AArch64, PowerPC, RISC-V, SystemZ, and X86">;
- def multi__module : Flag<["-"], "multi_module">;
- def multiply__defined__unused : Separate<["-"], "multiply_defined_unused">;
- def multiply__defined : Separate<["-"], "multiply_defined">;
- def mwarn_nonportable_cfstrings : Flag<["-"], "mwarn-nonportable-cfstrings">, Group<m_Group>;
- def canonical_prefixes : Flag<["-"], "canonical-prefixes">, Flags<[HelpHidden, CoreOption]>,
- HelpText<"Use absolute paths for invoking subcommands (default)">;
- def no_canonical_prefixes : Flag<["-"], "no-canonical-prefixes">, Flags<[HelpHidden, CoreOption]>,
- HelpText<"Use relative paths for invoking subcommands">;
- def no_cpp_precomp : Flag<["-"], "no-cpp-precomp">, Group<clang_ignored_f_Group>;
- def no_integrated_cpp : Flag<["-", "--"], "no-integrated-cpp">, Flags<[NoXarchOption]>;
- def no_pedantic : Flag<["-", "--"], "no-pedantic">, Group<pedantic_Group>;
- def no__dead__strip__inits__and__terms : Flag<["-"], "no_dead_strip_inits_and_terms">;
- def nobuiltininc : Flag<["-"], "nobuiltininc">, Flags<[CC1Option, CoreOption]>,
- HelpText<"Disable builtin #include directories">,
- MarshallingInfoNegativeFlag<HeaderSearchOpts<"UseBuiltinIncludes">>;
- def nogpuinc : Flag<["-"], "nogpuinc">, HelpText<"Do not add include paths for CUDA/HIP and"
- " do not include the default CUDA/HIP wrapper headers">;
- def nohipwrapperinc : Flag<["-"], "nohipwrapperinc">,
- HelpText<"Do not include the default HIP wrapper headers and include paths">;
- def : Flag<["-"], "nocudainc">, Alias<nogpuinc>;
- def nogpulib : Flag<["-"], "nogpulib">, MarshallingInfoFlag<LangOpts<"NoGPULib">>,
- Flags<[CC1Option]>, HelpText<"Do not link device library for CUDA/HIP device compilation">;
- def : Flag<["-"], "nocudalib">, Alias<nogpulib>;
- def nodefaultlibs : Flag<["-"], "nodefaultlibs">;
- def nodriverkitlib : Flag<["-"], "nodriverkitlib">;
- def nofixprebinding : Flag<["-"], "nofixprebinding">;
- def nolibc : Flag<["-"], "nolibc">;
- def nomultidefs : Flag<["-"], "nomultidefs">;
- def nopie : Flag<["-"], "nopie">;
- def no_pie : Flag<["-"], "no-pie">, Alias<nopie>;
- def noprebind : Flag<["-"], "noprebind">;
- def noprofilelib : Flag<["-"], "noprofilelib">;
- def noseglinkedit : Flag<["-"], "noseglinkedit">;
- def nostartfiles : Flag<["-"], "nostartfiles">, Group<Link_Group>;
- def nostdinc : Flag<["-"], "nostdinc">, Flags<[CoreOption]>;
- def nostdlibinc : Flag<["-"], "nostdlibinc">;
- def nostdincxx : Flag<["-"], "nostdinc++">, Flags<[CC1Option]>,
- HelpText<"Disable standard #include directories for the C++ standard library">,
- MarshallingInfoNegativeFlag<HeaderSearchOpts<"UseStandardCXXIncludes">>;
- def nostdlib : Flag<["-"], "nostdlib">, Group<Link_Group>;
- def nostdlibxx : Flag<["-"], "nostdlib++">;
- def object : Flag<["-"], "object">;
- def o : JoinedOrSeparate<["-"], "o">, Flags<[NoXarchOption,
- CC1Option, CC1AsOption, FC1Option, FlangOption]>,
- HelpText<"Write output to <file>">, MetaVarName<"<file>">,
- MarshallingInfoString<FrontendOpts<"OutputFile">>;
- def object_file_name_EQ : Joined<["-"], "object-file-name=">, Flags<[CC1Option, CC1AsOption, CoreOption]>,
- HelpText<"Set the output <file> for debug infos">, MetaVarName<"<file>">,
- MarshallingInfoString<CodeGenOpts<"ObjectFilenameForDebug">>;
- def object_file_name : Separate<["-"], "object-file-name">, Flags<[CC1Option, CC1AsOption, CoreOption]>,
- Alias<object_file_name_EQ>;
- def pagezero__size : JoinedOrSeparate<["-"], "pagezero_size">;
- def pass_exit_codes : Flag<["-", "--"], "pass-exit-codes">, Flags<[Unsupported]>;
- def pedantic_errors : Flag<["-", "--"], "pedantic-errors">, Group<pedantic_Group>, Flags<[CC1Option]>,
- MarshallingInfoFlag<DiagnosticOpts<"PedanticErrors">>;
- def pedantic : Flag<["-", "--"], "pedantic">, Group<pedantic_Group>, Flags<[CC1Option,FlangOption,FC1Option]>,
- HelpText<"Warn on language extensions">, MarshallingInfoFlag<DiagnosticOpts<"Pedantic">>;
- def pg : Flag<["-"], "pg">, HelpText<"Enable mcount instrumentation">, Flags<[CC1Option]>,
- MarshallingInfoFlag<CodeGenOpts<"InstrumentForProfiling">>;
- def pipe : Flag<["-", "--"], "pipe">,
- HelpText<"Use pipes between commands, when possible">;
- def prebind__all__twolevel__modules : Flag<["-"], "prebind_all_twolevel_modules">;
- def prebind : Flag<["-"], "prebind">;
- def preload : Flag<["-"], "preload">;
- def print_file_name_EQ : Joined<["-", "--"], "print-file-name=">,
- HelpText<"Print the full library path of <file>">, MetaVarName<"<file>">;
- def print_ivar_layout : Flag<["-"], "print-ivar-layout">, Flags<[CC1Option]>,
- HelpText<"Enable Objective-C Ivar layout bitmap print trace">,
- MarshallingInfoFlag<LangOpts<"ObjCGCBitmapPrint">>;
- def print_libgcc_file_name : Flag<["-", "--"], "print-libgcc-file-name">,
- HelpText<"Print the library path for the currently used compiler runtime "
- "library (\"libgcc.a\" or \"libclang_rt.builtins.*.a\")">;
- def print_multi_directory : Flag<["-", "--"], "print-multi-directory">;
- def print_multi_lib : Flag<["-", "--"], "print-multi-lib">;
- def print_multi_os_directory : Flag<["-", "--"], "print-multi-os-directory">,
- Flags<[Unsupported]>;
- def print_target_triple : Flag<["-", "--"], "print-target-triple">,
- HelpText<"Print the normalized target triple">, Flags<[FlangOption]>;
- def print_effective_triple : Flag<["-", "--"], "print-effective-triple">,
- HelpText<"Print the effective target triple">, Flags<[FlangOption]>;
- // GCC --disable-multiarch, GCC --enable-multiarch (upstream and Debian
- // specific) have different behaviors. We choose not to support the option.
- def : Flag<["-", "--"], "print-multiarch">, Flags<[Unsupported]>;
- def print_prog_name_EQ : Joined<["-", "--"], "print-prog-name=">,
- HelpText<"Print the full program path of <name>">, MetaVarName<"<name>">;
- def print_resource_dir : Flag<["-", "--"], "print-resource-dir">,
- HelpText<"Print the resource directory pathname">;
- def print_search_dirs : Flag<["-", "--"], "print-search-dirs">,
- HelpText<"Print the paths used for finding libraries and programs">;
- def print_targets : Flag<["-", "--"], "print-targets">,
- HelpText<"Print the registered targets">;
- def print_rocm_search_dirs : Flag<["-", "--"], "print-rocm-search-dirs">,
- HelpText<"Print the paths used for finding ROCm installation">;
- def print_runtime_dir : Flag<["-", "--"], "print-runtime-dir">,
- HelpText<"Print the directory pathname containing clangs runtime libraries">;
- def print_diagnostic_options : Flag<["-", "--"], "print-diagnostic-options">,
- HelpText<"Print all of Clang's warning options">;
- def private__bundle : Flag<["-"], "private_bundle">;
- def pthreads : Flag<["-"], "pthreads">;
- defm pthread : BoolOption<"", "pthread",
- LangOpts<"POSIXThreads">, DefaultFalse,
- PosFlag<SetTrue, [], "Support POSIX threads in generated code">,
- NegFlag<SetFalse>, BothFlags<[CC1Option]>>;
- def p : Flag<["-"], "p">;
- def pie : Flag<["-"], "pie">, Group<Link_Group>;
- def static_pie : Flag<["-"], "static-pie">, Group<Link_Group>;
- def read__only__relocs : Separate<["-"], "read_only_relocs">;
- def remap : Flag<["-"], "remap">;
- def rewrite_objc : Flag<["-"], "rewrite-objc">, Flags<[NoXarchOption,CC1Option]>,
- HelpText<"Rewrite Objective-C source to C++">, Group<Action_Group>;
- def rewrite_legacy_objc : Flag<["-"], "rewrite-legacy-objc">, Flags<[NoXarchOption]>,
- HelpText<"Rewrite Legacy Objective-C source to C++">;
- def rdynamic : Flag<["-"], "rdynamic">, Group<Link_Group>;
- def resource_dir : Separate<["-"], "resource-dir">,
- Flags<[NoXarchOption, CC1Option, CoreOption, HelpHidden]>,
- HelpText<"The directory which holds the compiler resource files">,
- MarshallingInfoString<HeaderSearchOpts<"ResourceDir">>;
- def resource_dir_EQ : Joined<["-"], "resource-dir=">, Flags<[NoXarchOption, CoreOption]>,
- Alias<resource_dir>;
- def rpath : Separate<["-"], "rpath">, Flags<[LinkerInput]>, Group<Link_Group>;
- def rtlib_EQ : Joined<["-", "--"], "rtlib=">,
- HelpText<"Compiler runtime library to use">;
- def frtlib_add_rpath: Flag<["-"], "frtlib-add-rpath">, Flags<[NoArgumentUnused]>,
- HelpText<"Add -rpath with architecture-specific resource directory to the linker flags">;
- def fno_rtlib_add_rpath: Flag<["-"], "fno-rtlib-add-rpath">, Flags<[NoArgumentUnused]>,
- HelpText<"Do not add -rpath with architecture-specific resource directory to the linker flags">;
- def offload_add_rpath: Flag<["--"], "offload-add-rpath">, Flags<[NoArgumentUnused]>,
- HelpText<"Add -rpath with HIP runtime library directory to the linker flags">;
- def no_offload_add_rpath: Flag<["--"], "no-offload-add-rpath">, Flags<[NoArgumentUnused]>,
- HelpText<"Do not add -rpath with HIP runtime library directory to the linker flags">;
- defm openmp_implicit_rpath: BoolFOption<"openmp-implicit-rpath",
- LangOpts<"OpenMP">,
- DefaultTrue,
- PosFlag<SetTrue, [], "Set rpath on OpenMP executables">,
- NegFlag<SetFalse>,
- BothFlags<[NoArgumentUnused]>>;
- def r : Flag<["-"], "r">, Flags<[LinkerInput,NoArgumentUnused]>,
- Group<Link_Group>;
- def save_temps_EQ : Joined<["-", "--"], "save-temps=">, Flags<[CC1Option, FlangOption, NoXarchOption]>,
- HelpText<"Save intermediate compilation results.">;
- def save_temps : Flag<["-", "--"], "save-temps">, Flags<[FlangOption, NoXarchOption]>,
- Alias<save_temps_EQ>, AliasArgs<["cwd"]>,
- HelpText<"Save intermediate compilation results">;
- def save_stats_EQ : Joined<["-", "--"], "save-stats=">, Flags<[NoXarchOption]>,
- HelpText<"Save llvm statistics.">;
- def save_stats : Flag<["-", "--"], "save-stats">, Flags<[NoXarchOption]>,
- Alias<save_stats_EQ>, AliasArgs<["cwd"]>,
- HelpText<"Save llvm statistics.">;
- def via_file_asm : Flag<["-", "--"], "via-file-asm">, InternalDebugOpt,
- HelpText<"Write assembly to file for input to assemble jobs">;
- def sectalign : MultiArg<["-"], "sectalign", 3>;
- def sectcreate : MultiArg<["-"], "sectcreate", 3>;
- def sectobjectsymbols : MultiArg<["-"], "sectobjectsymbols", 2>;
- def sectorder : MultiArg<["-"], "sectorder", 3>;
- def seg1addr : JoinedOrSeparate<["-"], "seg1addr">;
- def seg__addr__table__filename : Separate<["-"], "seg_addr_table_filename">;
- def seg__addr__table : Separate<["-"], "seg_addr_table">;
- def segaddr : MultiArg<["-"], "segaddr", 2>;
- def segcreate : MultiArg<["-"], "segcreate", 3>;
- def seglinkedit : Flag<["-"], "seglinkedit">;
- def segprot : MultiArg<["-"], "segprot", 3>;
- def segs__read__only__addr : Separate<["-"], "segs_read_only_addr">;
- def segs__read__write__addr : Separate<["-"], "segs_read_write_addr">;
- def segs__read__ : Joined<["-"], "segs_read_">;
- def shared_libgcc : Flag<["-"], "shared-libgcc">;
- def shared : Flag<["-", "--"], "shared">, Group<Link_Group>;
- def single__module : Flag<["-"], "single_module">;
- def specs_EQ : Joined<["-", "--"], "specs=">, Group<Link_Group>;
- def specs : Separate<["-", "--"], "specs">, Flags<[Unsupported]>;
- def start_no_unused_arguments : Flag<["--"], "start-no-unused-arguments">, Flags<[CoreOption]>,
- HelpText<"Don't emit warnings about unused arguments for the following arguments">;
- def static_libgcc : Flag<["-"], "static-libgcc">;
- def static_libstdcxx : Flag<["-"], "static-libstdc++">;
- def static : Flag<["-", "--"], "static">, Group<Link_Group>, Flags<[NoArgumentUnused]>;
- def std_default_EQ : Joined<["-"], "std-default=">;
- def std_EQ : Joined<["-", "--"], "std=">, Flags<[CC1Option,FlangOption,FC1Option]>,
- Group<CompileOnly_Group>, HelpText<"Language standard to compile for">,
- ValuesCode<[{
- static constexpr const char VALUES_CODE [] =
- #define LANGSTANDARD(id, name, lang, desc, features) name ","
- #define LANGSTANDARD_ALIAS(id, alias) alias ","
- #include "clang/Basic/LangStandards.def"
- ;
- }]>;
- def stdlib_EQ : Joined<["-", "--"], "stdlib=">, Flags<[CC1Option]>,
- HelpText<"C++ standard library to use">, Values<"libc++,libstdc++,platform">;
- def stdlibxx_isystem : JoinedOrSeparate<["-"], "stdlib++-isystem">,
- Group<clang_i_Group>,
- HelpText<"Use directory as the C++ standard library include path">,
- Flags<[NoXarchOption]>, MetaVarName<"<directory>">;
- def unwindlib_EQ : Joined<["-", "--"], "unwindlib=">, Flags<[CC1Option]>,
- HelpText<"Unwind library to use">, Values<"libgcc,unwindlib,platform">;
- def sub__library : JoinedOrSeparate<["-"], "sub_library">;
- def sub__umbrella : JoinedOrSeparate<["-"], "sub_umbrella">;
- def system_header_prefix : Joined<["--"], "system-header-prefix=">,
- Group<clang_i_Group>, Flags<[CC1Option]>, MetaVarName<"<prefix>">,
- HelpText<"Treat all #include paths starting with <prefix> as including a "
- "system header.">;
- def : Separate<["--"], "system-header-prefix">, Alias<system_header_prefix>;
- def no_system_header_prefix : Joined<["--"], "no-system-header-prefix=">,
- Group<clang_i_Group>, Flags<[CC1Option]>, MetaVarName<"<prefix>">,
- HelpText<"Treat all #include paths starting with <prefix> as not including a "
- "system header.">;
- def : Separate<["--"], "no-system-header-prefix">, Alias<no_system_header_prefix>;
- def s : Flag<["-"], "s">, Group<Link_Group>;
- def target : Joined<["--"], "target=">, Flags<[NoXarchOption, CoreOption, FlangOption]>,
- HelpText<"Generate code for the given target">;
- def darwin_target_variant : Separate<["-"], "darwin-target-variant">,
- Flags<[NoXarchOption, CoreOption]>,
- HelpText<"Generate code for an additional runtime variant of the deployment target">;
- def print_supported_cpus : Flag<["-", "--"], "print-supported-cpus">,
- Group<CompileOnly_Group>, Flags<[CC1Option, CoreOption]>,
- HelpText<"Print supported cpu models for the given target (if target is not specified,"
- " it will print the supported cpus for the default target)">,
- MarshallingInfoFlag<FrontendOpts<"PrintSupportedCPUs">>;
- def mcpu_EQ_QUESTION : Flag<["-"], "mcpu=?">, Alias<print_supported_cpus>;
- def mtune_EQ_QUESTION : Flag<["-"], "mtune=?">, Alias<print_supported_cpus>;
- def time : Flag<["-"], "time">,
- HelpText<"Time individual commands">;
- def traditional_cpp : Flag<["-", "--"], "traditional-cpp">, Flags<[CC1Option]>,
- HelpText<"Enable some traditional CPP emulation">,
- MarshallingInfoFlag<LangOpts<"TraditionalCPP">>;
- def traditional : Flag<["-", "--"], "traditional">;
- def trigraphs : Flag<["-", "--"], "trigraphs">, Alias<ftrigraphs>,
- HelpText<"Process trigraph sequences">;
- def twolevel__namespace__hints : Flag<["-"], "twolevel_namespace_hints">;
- def twolevel__namespace : Flag<["-"], "twolevel_namespace">;
- def t : Flag<["-"], "t">, Group<Link_Group>;
- def umbrella : Separate<["-"], "umbrella">;
- def undefined : JoinedOrSeparate<["-"], "undefined">, Group<u_Group>;
- def undef : Flag<["-"], "undef">, Group<u_Group>, Flags<[CC1Option]>,
- HelpText<"undef all system defines">,
- MarshallingInfoNegativeFlag<PreprocessorOpts<"UsePredefines">>;
- def unexported__symbols__list : Separate<["-"], "unexported_symbols_list">;
- def u : JoinedOrSeparate<["-"], "u">, Group<u_Group>;
- def v : Flag<["-"], "v">, Flags<[CC1Option, CoreOption]>,
- HelpText<"Show commands to run and use verbose output">,
- MarshallingInfoFlag<HeaderSearchOpts<"Verbose">>;
- def altivec_src_compat : Joined<["-"], "faltivec-src-compat=">,
- Flags<[CC1Option]>, Group<f_Group>,
- HelpText<"Source-level compatibility for Altivec vectors (for PowerPC "
- "targets). This includes results of vector comparison (scalar for "
- "'xl', vector for 'gcc') as well as behavior when initializing with "
- "a scalar (splatting for 'xl', element zero only for 'gcc'). For "
- "'mixed', the compatibility is as 'gcc' for 'vector bool/vector "
- "pixel' and as 'xl' for other types. Current default is 'mixed'.">,
- Values<"mixed,gcc,xl">,
- NormalizedValuesScope<"LangOptions::AltivecSrcCompatKind">,
- NormalizedValues<["Mixed", "GCC", "XL"]>,
- MarshallingInfoEnum<LangOpts<"AltivecSrcCompat">, "Mixed">;
- def verify_debug_info : Flag<["--"], "verify-debug-info">, Flags<[NoXarchOption]>,
- HelpText<"Verify the binary representation of debug output">;
- def weak_l : Joined<["-"], "weak-l">, Flags<[LinkerInput]>;
- def weak__framework : Separate<["-"], "weak_framework">, Flags<[LinkerInput]>;
- def weak__library : Separate<["-"], "weak_library">, Flags<[LinkerInput]>;
- def weak__reference__mismatches : Separate<["-"], "weak_reference_mismatches">;
- def whatsloaded : Flag<["-"], "whatsloaded">;
- def why_load : Flag<["-"], "why_load">;
- def whyload : Flag<["-"], "whyload">, Alias<why_load>;
- def w : Flag<["-"], "w">, HelpText<"Suppress all warnings">, Flags<[CC1Option]>,
- MarshallingInfoFlag<DiagnosticOpts<"IgnoreWarnings">>;
- def x : JoinedOrSeparate<["-"], "x">,
- Flags<[NoXarchOption,CC1Option,FlangOption,FC1Option]>,
- HelpText<"Treat subsequent input files as having type <language>">,
- MetaVarName<"<language>">;
- def y : Joined<["-"], "y">;
- defm integrated_as : BoolFOption<"integrated-as",
- CodeGenOpts<"DisableIntegratedAS">, DefaultFalse,
- NegFlag<SetTrue, [CC1Option, FlangOption], "Disable">, PosFlag<SetFalse, [], "Enable">,
- BothFlags<[], " the integrated assembler">>;
- def fintegrated_cc1 : Flag<["-"], "fintegrated-cc1">,
- Flags<[CoreOption, NoXarchOption]>, Group<f_Group>,
- HelpText<"Run cc1 in-process">;
- def fno_integrated_cc1 : Flag<["-"], "fno-integrated-cc1">,
- Flags<[CoreOption, NoXarchOption]>, Group<f_Group>,
- HelpText<"Spawn a separate process for each cc1">;
- def fintegrated_objemitter : Flag<["-"], "fintegrated-objemitter">,
- Flags<[CoreOption, NoXarchOption]>, Group<f_Group>,
- HelpText<"Use internal machine object code emitter.">;
- def fno_integrated_objemitter : Flag<["-"], "fno-integrated-objemitter">,
- Flags<[CoreOption, NoXarchOption]>, Group<f_Group>,
- HelpText<"Use external machine object code emitter.">;
- def : Flag<["-"], "integrated-as">, Alias<fintegrated_as>, Flags<[NoXarchOption]>;
- def : Flag<["-"], "no-integrated-as">, Alias<fno_integrated_as>,
- Flags<[CC1Option, FlangOption, NoXarchOption]>;
- def working_directory : Separate<["-"], "working-directory">, Flags<[CC1Option]>,
- HelpText<"Resolve file paths relative to the specified directory">,
- MarshallingInfoString<FileSystemOpts<"WorkingDir">>;
- def working_directory_EQ : Joined<["-"], "working-directory=">, Flags<[CC1Option]>,
- Alias<working_directory>;
- // Double dash options, which are usually an alias for one of the previous
- // options.
- def _mhwdiv_EQ : Joined<["--"], "mhwdiv=">, Alias<mhwdiv_EQ>;
- def _mhwdiv : Separate<["--"], "mhwdiv">, Alias<mhwdiv_EQ>;
- def _CLASSPATH_EQ : Joined<["--"], "CLASSPATH=">, Alias<fclasspath_EQ>;
- def _CLASSPATH : Separate<["--"], "CLASSPATH">, Alias<fclasspath_EQ>;
- def _all_warnings : Flag<["--"], "all-warnings">, Alias<Wall>;
- def _analyzer_no_default_checks : Flag<["--"], "analyzer-no-default-checks">, Flags<[NoXarchOption]>;
- def _analyzer_output : JoinedOrSeparate<["--"], "analyzer-output">, Flags<[NoXarchOption]>,
- HelpText<"Static analyzer report output format (html|plist|plist-multi-file|plist-html|sarif|sarif-html|text).">;
- def _analyze : Flag<["--"], "analyze">, Flags<[NoXarchOption, CoreOption]>,
- HelpText<"Run the static analyzer">;
- def _assemble : Flag<["--"], "assemble">, Alias<S>;
- def _assert_EQ : Joined<["--"], "assert=">, Alias<A>;
- def _assert : Separate<["--"], "assert">, Alias<A>;
- def _bootclasspath_EQ : Joined<["--"], "bootclasspath=">, Alias<fbootclasspath_EQ>;
- def _bootclasspath : Separate<["--"], "bootclasspath">, Alias<fbootclasspath_EQ>;
- def _classpath_EQ : Joined<["--"], "classpath=">, Alias<fclasspath_EQ>;
- def _classpath : Separate<["--"], "classpath">, Alias<fclasspath_EQ>;
- def _comments_in_macros : Flag<["--"], "comments-in-macros">, Alias<CC>;
- def _comments : Flag<["--"], "comments">, Alias<C>;
- def _compile : Flag<["--"], "compile">, Alias<c>;
- def _constant_cfstrings : Flag<["--"], "constant-cfstrings">;
- def _debug_EQ : Joined<["--"], "debug=">, Alias<g_Flag>;
- def _debug : Flag<["--"], "debug">, Alias<g_Flag>;
- def _define_macro_EQ : Joined<["--"], "define-macro=">, Alias<D>;
- def _define_macro : Separate<["--"], "define-macro">, Alias<D>;
- def _dependencies : Flag<["--"], "dependencies">, Alias<M>;
- def _dyld_prefix_EQ : Joined<["--"], "dyld-prefix=">;
- def _dyld_prefix : Separate<["--"], "dyld-prefix">, Alias<_dyld_prefix_EQ>;
- def _encoding_EQ : Joined<["--"], "encoding=">, Alias<fencoding_EQ>;
- def _encoding : Separate<["--"], "encoding">, Alias<fencoding_EQ>;
- def _entry : Flag<["--"], "entry">, Alias<e>;
- def _extdirs_EQ : Joined<["--"], "extdirs=">, Alias<fextdirs_EQ>;
- def _extdirs : Separate<["--"], "extdirs">, Alias<fextdirs_EQ>;
- def _extra_warnings : Flag<["--"], "extra-warnings">, Alias<W_Joined>;
- def _for_linker_EQ : Joined<["--"], "for-linker=">, Alias<Xlinker>;
- def _for_linker : Separate<["--"], "for-linker">, Alias<Xlinker>;
- def _force_link_EQ : Joined<["--"], "force-link=">, Alias<u>;
- def _force_link : Separate<["--"], "force-link">, Alias<u>;
- def _help_hidden : Flag<["--"], "help-hidden">,
- HelpText<"Display help for hidden options">;
- def _imacros_EQ : Joined<["--"], "imacros=">, Alias<imacros>;
- def _include_barrier : Flag<["--"], "include-barrier">, Alias<I_>;
- def _include_directory_after_EQ : Joined<["--"], "include-directory-after=">, Alias<idirafter>;
- def _include_directory_after : Separate<["--"], "include-directory-after">, Alias<idirafter>;
- def _include_directory_EQ : Joined<["--"], "include-directory=">, Alias<I>;
- def _include_directory : Separate<["--"], "include-directory">, Alias<I>;
- def _include_prefix_EQ : Joined<["--"], "include-prefix=">, Alias<iprefix>;
- def _include_prefix : Separate<["--"], "include-prefix">, Alias<iprefix>;
- def _include_with_prefix_after_EQ : Joined<["--"], "include-with-prefix-after=">, Alias<iwithprefix>;
- def _include_with_prefix_after : Separate<["--"], "include-with-prefix-after">, Alias<iwithprefix>;
- def _include_with_prefix_before_EQ : Joined<["--"], "include-with-prefix-before=">, Alias<iwithprefixbefore>;
- def _include_with_prefix_before : Separate<["--"], "include-with-prefix-before">, Alias<iwithprefixbefore>;
- def _include_with_prefix_EQ : Joined<["--"], "include-with-prefix=">, Alias<iwithprefix>;
- def _include_with_prefix : Separate<["--"], "include-with-prefix">, Alias<iwithprefix>;
- def _include_EQ : Joined<["--"], "include=">, Alias<include_>;
- def _language_EQ : Joined<["--"], "language=">, Alias<x>;
- def _language : Separate<["--"], "language">, Alias<x>;
- def _library_directory_EQ : Joined<["--"], "library-directory=">, Alias<L>;
- def _library_directory : Separate<["--"], "library-directory">, Alias<L>;
- def _no_line_commands : Flag<["--"], "no-line-commands">, Alias<P>;
- def _no_standard_includes : Flag<["--"], "no-standard-includes">, Alias<nostdinc>;
- def _no_standard_libraries : Flag<["--"], "no-standard-libraries">, Alias<nostdlib>;
- def _no_undefined : Flag<["--"], "no-undefined">, Flags<[LinkerInput]>;
- def _no_warnings : Flag<["--"], "no-warnings">, Alias<w>;
- def _optimize_EQ : Joined<["--"], "optimize=">, Alias<O>;
- def _optimize : Flag<["--"], "optimize">, Alias<O>;
- def _output_class_directory_EQ : Joined<["--"], "output-class-directory=">, Alias<foutput_class_dir_EQ>;
- def _output_class_directory : Separate<["--"], "output-class-directory">, Alias<foutput_class_dir_EQ>;
- def _output_EQ : Joined<["--"], "output=">, Alias<o>;
- def _output : Separate<["--"], "output">, Alias<o>;
- def _param : Separate<["--"], "param">, Group<CompileOnly_Group>;
- def _param_EQ : Joined<["--"], "param=">, Alias<_param>;
- def _precompile : Flag<["--"], "precompile">, Flags<[NoXarchOption]>,
- Group<Action_Group>, HelpText<"Only precompile the input">;
- def _prefix_EQ : Joined<["--"], "prefix=">, Alias<B>;
- def _prefix : Separate<["--"], "prefix">, Alias<B>;
- def _preprocess : Flag<["--"], "preprocess">, Alias<E>;
- def _print_diagnostic_categories : Flag<["--"], "print-diagnostic-categories">;
- def _print_file_name : Separate<["--"], "print-file-name">, Alias<print_file_name_EQ>;
- def _print_missing_file_dependencies : Flag<["--"], "print-missing-file-dependencies">, Alias<MG>;
- def _print_prog_name : Separate<["--"], "print-prog-name">, Alias<print_prog_name_EQ>;
- def _profile : Flag<["--"], "profile">, Alias<p>;
- def _resource_EQ : Joined<["--"], "resource=">, Alias<fcompile_resource_EQ>;
- def _resource : Separate<["--"], "resource">, Alias<fcompile_resource_EQ>;
- def _rtlib : Separate<["--"], "rtlib">, Alias<rtlib_EQ>;
- def _serialize_diags : Separate<["-", "--"], "serialize-diagnostics">, Flags<[NoXarchOption]>,
- HelpText<"Serialize compiler diagnostics to a file">;
- // We give --version different semantics from -version.
- def _version : Flag<["--"], "version">,
- Flags<[CoreOption, FlangOption]>,
- HelpText<"Print version information">;
- def _signed_char : Flag<["--"], "signed-char">, Alias<fsigned_char>;
- def _std : Separate<["--"], "std">, Alias<std_EQ>;
- def _stdlib : Separate<["--"], "stdlib">, Alias<stdlib_EQ>;
- def _sysroot_EQ : Joined<["--"], "sysroot=">;
- def _sysroot : Separate<["--"], "sysroot">, Alias<_sysroot_EQ>;
- def _target_help : Flag<["--"], "target-help">;
- def _trace_includes : Flag<["--"], "trace-includes">, Alias<H>;
- def _undefine_macro_EQ : Joined<["--"], "undefine-macro=">, Alias<U>;
- def _undefine_macro : Separate<["--"], "undefine-macro">, Alias<U>;
- def _unsigned_char : Flag<["--"], "unsigned-char">, Alias<funsigned_char>;
- def _user_dependencies : Flag<["--"], "user-dependencies">, Alias<MM>;
- def _verbose : Flag<["--"], "verbose">, Alias<v>;
- def _warn__EQ : Joined<["--"], "warn-=">, Alias<W_Joined>;
- def _warn_ : Joined<["--"], "warn-">, Alias<W_Joined>;
- def _write_dependencies : Flag<["--"], "write-dependencies">, Alias<MD>;
- def _write_user_dependencies : Flag<["--"], "write-user-dependencies">, Alias<MMD>;
- def _ : Joined<["--"], "">, Flags<[Unsupported]>;
- // Hexagon feature flags.
- def mieee_rnd_near : Flag<["-"], "mieee-rnd-near">,
- Group<m_hexagon_Features_Group>;
- def mv5 : Flag<["-"], "mv5">, Group<m_hexagon_Features_Group>, Alias<mcpu_EQ>,
- AliasArgs<["hexagonv5"]>;
- def mv55 : Flag<["-"], "mv55">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv55"]>;
- def mv60 : Flag<["-"], "mv60">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv60"]>;
- def mv62 : Flag<["-"], "mv62">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv62"]>;
- def mv65 : Flag<["-"], "mv65">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv65"]>;
- def mv66 : Flag<["-"], "mv66">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv66"]>;
- def mv67 : Flag<["-"], "mv67">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv67"]>;
- def mv67t : Flag<["-"], "mv67t">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv67t"]>;
- def mv68 : Flag<["-"], "mv68">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv68"]>;
- def mv69 : Flag<["-"], "mv69">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv69"]>;
- def mv71 : Flag<["-"], "mv71">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv71"]>;
- def mv71t : Flag<["-"], "mv71t">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv71t"]>;
- def mv73 : Flag<["-"], "mv73">, Group<m_hexagon_Features_Group>,
- Alias<mcpu_EQ>, AliasArgs<["hexagonv73"]>;
- def mhexagon_hvx : Flag<["-"], "mhvx">, Group<m_hexagon_Features_HVX_Group>,
- HelpText<"Enable Hexagon Vector eXtensions">;
- def mhexagon_hvx_EQ : Joined<["-"], "mhvx=">,
- Group<m_hexagon_Features_HVX_Group>,
- HelpText<"Enable Hexagon Vector eXtensions">;
- def mno_hexagon_hvx : Flag<["-"], "mno-hvx">,
- Group<m_hexagon_Features_HVX_Group>,
- HelpText<"Disable Hexagon Vector eXtensions">;
- def mhexagon_hvx_length_EQ : Joined<["-"], "mhvx-length=">,
- Group<m_hexagon_Features_HVX_Group>, HelpText<"Set Hexagon Vector Length">,
- Values<"64B,128B">;
- def mhexagon_hvx_qfloat : Flag<["-"], "mhvx-qfloat">,
- Group<m_hexagon_Features_HVX_Group>,
- HelpText<"Enable Hexagon HVX QFloat instructions">;
- def mno_hexagon_hvx_qfloat : Flag<["-"], "mno-hvx-qfloat">,
- Group<m_hexagon_Features_HVX_Group>,
- HelpText<"Disable Hexagon HVX QFloat instructions">;
- def mhexagon_hvx_ieee_fp : Flag<["-"], "mhvx-ieee-fp">,
- Group<m_hexagon_Features_Group>,
- HelpText<"Enable Hexagon HVX IEEE floating-point">;
- def mno_hexagon_hvx_ieee_fp : Flag<["-"], "mno-hvx-ieee-fp">,
- Group<m_hexagon_Features_Group>,
- HelpText<"Disable Hexagon HVX IEEE floating-point">;
- def ffixed_r19: Flag<["-"], "ffixed-r19">,
- HelpText<"Reserve register r19 (Hexagon only)">;
- def mmemops : Flag<["-"], "mmemops">, Group<m_hexagon_Features_Group>,
- Flags<[CC1Option]>, HelpText<"Enable generation of memop instructions">;
- def mno_memops : Flag<["-"], "mno-memops">, Group<m_hexagon_Features_Group>,
- Flags<[CC1Option]>, HelpText<"Disable generation of memop instructions">;
- def mpackets : Flag<["-"], "mpackets">, Group<m_hexagon_Features_Group>,
- Flags<[CC1Option]>, HelpText<"Enable generation of instruction packets">;
- def mno_packets : Flag<["-"], "mno-packets">, Group<m_hexagon_Features_Group>,
- Flags<[CC1Option]>, HelpText<"Disable generation of instruction packets">;
- def mnvj : Flag<["-"], "mnvj">, Group<m_hexagon_Features_Group>,
- Flags<[CC1Option]>, HelpText<"Enable generation of new-value jumps">;
- def mno_nvj : Flag<["-"], "mno-nvj">, Group<m_hexagon_Features_Group>,
- Flags<[CC1Option]>, HelpText<"Disable generation of new-value jumps">;
- def mnvs : Flag<["-"], "mnvs">, Group<m_hexagon_Features_Group>,
- Flags<[CC1Option]>, HelpText<"Enable generation of new-value stores">;
- def mno_nvs : Flag<["-"], "mno-nvs">, Group<m_hexagon_Features_Group>,
- Flags<[CC1Option]>, HelpText<"Disable generation of new-value stores">;
- def mcabac: Flag<["-"], "mcabac">, Group<m_hexagon_Features_Group>,
- HelpText<"Enable CABAC instructions">;
- // SPARC feature flags
- def mfpu : Flag<["-"], "mfpu">, Group<m_sparc_Features_Group>;
- def mno_fpu : Flag<["-"], "mno-fpu">, Group<m_sparc_Features_Group>;
- def mfsmuld : Flag<["-"], "mfsmuld">, Group<m_sparc_Features_Group>;
- def mno_fsmuld : Flag<["-"], "mno-fsmuld">, Group<m_sparc_Features_Group>;
- def mpopc : Flag<["-"], "mpopc">, Group<m_sparc_Features_Group>;
- def mno_popc : Flag<["-"], "mno-popc">, Group<m_sparc_Features_Group>;
- def mvis : Flag<["-"], "mvis">, Group<m_sparc_Features_Group>;
- def mno_vis : Flag<["-"], "mno-vis">, Group<m_sparc_Features_Group>;
- def mvis2 : Flag<["-"], "mvis2">, Group<m_sparc_Features_Group>;
- def mno_vis2 : Flag<["-"], "mno-vis2">, Group<m_sparc_Features_Group>;
- def mvis3 : Flag<["-"], "mvis3">, Group<m_sparc_Features_Group>;
- def mno_vis3 : Flag<["-"], "mno-vis3">, Group<m_sparc_Features_Group>;
- def mhard_quad_float : Flag<["-"], "mhard-quad-float">, Group<m_sparc_Features_Group>;
- def msoft_quad_float : Flag<["-"], "msoft-quad-float">, Group<m_sparc_Features_Group>;
- // M68k features flags
- def m68000 : Flag<["-"], "m68000">, Group<m_m68k_Features_Group>;
- def m68010 : Flag<["-"], "m68010">, Group<m_m68k_Features_Group>;
- def m68020 : Flag<["-"], "m68020">, Group<m_m68k_Features_Group>;
- def m68030 : Flag<["-"], "m68030">, Group<m_m68k_Features_Group>;
- def m68040 : Flag<["-"], "m68040">, Group<m_m68k_Features_Group>;
- def m68060 : Flag<["-"], "m68060">, Group<m_m68k_Features_Group>;
- foreach i = {0-6} in
- def ffixed_a#i : Flag<["-"], "ffixed-a"#i>, Group<m_m68k_Features_Group>,
- HelpText<"Reserve the a"#i#" register (M68k only)">;
- foreach i = {0-7} in
- def ffixed_d#i : Flag<["-"], "ffixed-d"#i>, Group<m_m68k_Features_Group>,
- HelpText<"Reserve the d"#i#" register (M68k only)">;
- // X86 feature flags
- def mx87 : Flag<["-"], "mx87">, Group<m_x86_Features_Group>;
- def mno_x87 : Flag<["-"], "mno-x87">, Group<m_x86_Features_Group>;
- def m80387 : Flag<["-"], "m80387">, Alias<mx87>;
- def mno_80387 : Flag<["-"], "mno-80387">, Alias<mno_x87>;
- def mno_fp_ret_in_387 : Flag<["-"], "mno-fp-ret-in-387">, Alias<mno_x87>;
- def mmmx : Flag<["-"], "mmmx">, Group<m_x86_Features_Group>;
- def mno_mmx : Flag<["-"], "mno-mmx">, Group<m_x86_Features_Group>;
- def m3dnow : Flag<["-"], "m3dnow">, Group<m_x86_Features_Group>;
- def mno_3dnow : Flag<["-"], "mno-3dnow">, Group<m_x86_Features_Group>;
- def m3dnowa : Flag<["-"], "m3dnowa">, Group<m_x86_Features_Group>;
- def mno_3dnowa : Flag<["-"], "mno-3dnowa">, Group<m_x86_Features_Group>;
- def mamx_bf16 : Flag<["-"], "mamx-bf16">, Group<m_x86_Features_Group>;
- def mno_amx_bf16 : Flag<["-"], "mno-amx-bf16">, Group<m_x86_Features_Group>;
- def mamx_fp16 : Flag<["-"], "mamx-fp16">, Group<m_x86_Features_Group>;
- def mno_amx_fp16 : Flag<["-"], "mno-amx-fp16">, Group<m_x86_Features_Group>;
- def mamx_int8 : Flag<["-"], "mamx-int8">, Group<m_x86_Features_Group>;
- def mno_amx_int8 : Flag<["-"], "mno-amx-int8">, Group<m_x86_Features_Group>;
- def mamx_tile : Flag<["-"], "mamx-tile">, Group<m_x86_Features_Group>;
- def mno_amx_tile : Flag<["-"], "mno-amx-tile">, Group<m_x86_Features_Group>;
- def mcmpccxadd : Flag<["-"], "mcmpccxadd">, Group<m_x86_Features_Group>;
- def mno_cmpccxadd : Flag<["-"], "mno-cmpccxadd">, Group<m_x86_Features_Group>;
- def msse : Flag<["-"], "msse">, Group<m_x86_Features_Group>;
- def mno_sse : Flag<["-"], "mno-sse">, Group<m_x86_Features_Group>;
- def msse2 : Flag<["-"], "msse2">, Group<m_x86_Features_Group>;
- def mno_sse2 : Flag<["-"], "mno-sse2">, Group<m_x86_Features_Group>;
- def msse3 : Flag<["-"], "msse3">, Group<m_x86_Features_Group>;
- def mno_sse3 : Flag<["-"], "mno-sse3">, Group<m_x86_Features_Group>;
- def mssse3 : Flag<["-"], "mssse3">, Group<m_x86_Features_Group>;
- def mno_ssse3 : Flag<["-"], "mno-ssse3">, Group<m_x86_Features_Group>;
- def msse4_1 : Flag<["-"], "msse4.1">, Group<m_x86_Features_Group>;
- def mno_sse4_1 : Flag<["-"], "mno-sse4.1">, Group<m_x86_Features_Group>;
- def msse4_2 : Flag<["-"], "msse4.2">, Group<m_x86_Features_Group>;
- def mno_sse4_2 : Flag<["-"], "mno-sse4.2">, Group<m_x86_Features_Group>;
- def msse4 : Flag<["-"], "msse4">, Alias<msse4_2>;
- // -mno-sse4 turns off sse4.1 which has the effect of turning off everything
- // later than 4.1. -msse4 turns on 4.2 which has the effect of turning on
- // everything earlier than 4.2.
- def mno_sse4 : Flag<["-"], "mno-sse4">, Alias<mno_sse4_1>;
- def msse4a : Flag<["-"], "msse4a">, Group<m_x86_Features_Group>;
- def mno_sse4a : Flag<["-"], "mno-sse4a">, Group<m_x86_Features_Group>;
- def mavx : Flag<["-"], "mavx">, Group<m_x86_Features_Group>;
- def mno_avx : Flag<["-"], "mno-avx">, Group<m_x86_Features_Group>;
- def mavx2 : Flag<["-"], "mavx2">, Group<m_x86_Features_Group>;
- def mno_avx2 : Flag<["-"], "mno-avx2">, Group<m_x86_Features_Group>;
- def mavx512f : Flag<["-"], "mavx512f">, Group<m_x86_Features_Group>;
- def mno_avx512f : Flag<["-"], "mno-avx512f">, Group<m_x86_Features_Group>;
- def mavx512bf16 : Flag<["-"], "mavx512bf16">, Group<m_x86_Features_Group>;
- def mno_avx512bf16 : Flag<["-"], "mno-avx512bf16">, Group<m_x86_Features_Group>;
- def mavx512bitalg : Flag<["-"], "mavx512bitalg">, Group<m_x86_Features_Group>;
- def mno_avx512bitalg : Flag<["-"], "mno-avx512bitalg">, Group<m_x86_Features_Group>;
- def mavx512bw : Flag<["-"], "mavx512bw">, Group<m_x86_Features_Group>;
- def mno_avx512bw : Flag<["-"], "mno-avx512bw">, Group<m_x86_Features_Group>;
- def mavx512cd : Flag<["-"], "mavx512cd">, Group<m_x86_Features_Group>;
- def mno_avx512cd : Flag<["-"], "mno-avx512cd">, Group<m_x86_Features_Group>;
- def mavx512dq : Flag<["-"], "mavx512dq">, Group<m_x86_Features_Group>;
- def mno_avx512dq : Flag<["-"], "mno-avx512dq">, Group<m_x86_Features_Group>;
- def mavx512er : Flag<["-"], "mavx512er">, Group<m_x86_Features_Group>;
- def mno_avx512er : Flag<["-"], "mno-avx512er">, Group<m_x86_Features_Group>;
- def mavx512fp16 : Flag<["-"], "mavx512fp16">, Group<m_x86_Features_Group>;
- def mno_avx512fp16 : Flag<["-"], "mno-avx512fp16">, Group<m_x86_Features_Group>;
- def mavx512ifma : Flag<["-"], "mavx512ifma">, Group<m_x86_Features_Group>;
- def mno_avx512ifma : Flag<["-"], "mno-avx512ifma">, Group<m_x86_Features_Group>;
- def mavx512pf : Flag<["-"], "mavx512pf">, Group<m_x86_Features_Group>;
- def mno_avx512pf : Flag<["-"], "mno-avx512pf">, Group<m_x86_Features_Group>;
- def mavx512vbmi : Flag<["-"], "mavx512vbmi">, Group<m_x86_Features_Group>;
- def mno_avx512vbmi : Flag<["-"], "mno-avx512vbmi">, Group<m_x86_Features_Group>;
- def mavx512vbmi2 : Flag<["-"], "mavx512vbmi2">, Group<m_x86_Features_Group>;
- def mno_avx512vbmi2 : Flag<["-"], "mno-avx512vbmi2">, Group<m_x86_Features_Group>;
- def mavx512vl : Flag<["-"], "mavx512vl">, Group<m_x86_Features_Group>;
- def mno_avx512vl : Flag<["-"], "mno-avx512vl">, Group<m_x86_Features_Group>;
- def mavx512vnni : Flag<["-"], "mavx512vnni">, Group<m_x86_Features_Group>;
- def mno_avx512vnni : Flag<["-"], "mno-avx512vnni">, Group<m_x86_Features_Group>;
- def mavx512vpopcntdq : Flag<["-"], "mavx512vpopcntdq">, Group<m_x86_Features_Group>;
- def mno_avx512vpopcntdq : Flag<["-"], "mno-avx512vpopcntdq">, Group<m_x86_Features_Group>;
- def mavx512vp2intersect : Flag<["-"], "mavx512vp2intersect">, Group<m_x86_Features_Group>;
- def mno_avx512vp2intersect : Flag<["-"], "mno-avx512vp2intersect">, Group<m_x86_Features_Group>;
- def mavxifma : Flag<["-"], "mavxifma">, Group<m_x86_Features_Group>;
- def mno_avxifma : Flag<["-"], "mno-avxifma">, Group<m_x86_Features_Group>;
- def mavxneconvert : Flag<["-"], "mavxneconvert">, Group<m_x86_Features_Group>;
- def mno_avxneconvert : Flag<["-"], "mno-avxneconvert">, Group<m_x86_Features_Group>;
- def mavxvnniint8 : Flag<["-"], "mavxvnniint8">, Group<m_x86_Features_Group>;
- def mno_avxvnniint8 : Flag<["-"], "mno-avxvnniint8">, Group<m_x86_Features_Group>;
- def mavxvnni : Flag<["-"], "mavxvnni">, Group<m_x86_Features_Group>;
- def mno_avxvnni : Flag<["-"], "mno-avxvnni">, Group<m_x86_Features_Group>;
- def madx : Flag<["-"], "madx">, Group<m_x86_Features_Group>;
- def mno_adx : Flag<["-"], "mno-adx">, Group<m_x86_Features_Group>;
- def maes : Flag<["-"], "maes">, Group<m_x86_Features_Group>;
- def mno_aes : Flag<["-"], "mno-aes">, Group<m_x86_Features_Group>;
- def mbmi : Flag<["-"], "mbmi">, Group<m_x86_Features_Group>;
- def mno_bmi : Flag<["-"], "mno-bmi">, Group<m_x86_Features_Group>;
- def mbmi2 : Flag<["-"], "mbmi2">, Group<m_x86_Features_Group>;
- def mno_bmi2 : Flag<["-"], "mno-bmi2">, Group<m_x86_Features_Group>;
- def mcldemote : Flag<["-"], "mcldemote">, Group<m_x86_Features_Group>;
- def mno_cldemote : Flag<["-"], "mno-cldemote">, Group<m_x86_Features_Group>;
- def mclflushopt : Flag<["-"], "mclflushopt">, Group<m_x86_Features_Group>;
- def mno_clflushopt : Flag<["-"], "mno-clflushopt">, Group<m_x86_Features_Group>;
- def mclwb : Flag<["-"], "mclwb">, Group<m_x86_Features_Group>;
- def mno_clwb : Flag<["-"], "mno-clwb">, Group<m_x86_Features_Group>;
- def mwbnoinvd : Flag<["-"], "mwbnoinvd">, Group<m_x86_Features_Group>;
- def mno_wbnoinvd : Flag<["-"], "mno-wbnoinvd">, Group<m_x86_Features_Group>;
- def mclzero : Flag<["-"], "mclzero">, Group<m_x86_Features_Group>;
- def mno_clzero : Flag<["-"], "mno-clzero">, Group<m_x86_Features_Group>;
- def mcrc32 : Flag<["-"], "mcrc32">, Group<m_x86_Features_Group>;
- def mno_crc32 : Flag<["-"], "mno-crc32">, Group<m_x86_Features_Group>;
- def mcx16 : Flag<["-"], "mcx16">, Group<m_x86_Features_Group>;
- def mno_cx16 : Flag<["-"], "mno-cx16">, Group<m_x86_Features_Group>;
- def menqcmd : Flag<["-"], "menqcmd">, Group<m_x86_Features_Group>;
- def mno_enqcmd : Flag<["-"], "mno-enqcmd">, Group<m_x86_Features_Group>;
- def mf16c : Flag<["-"], "mf16c">, Group<m_x86_Features_Group>;
- def mno_f16c : Flag<["-"], "mno-f16c">, Group<m_x86_Features_Group>;
- def mfma : Flag<["-"], "mfma">, Group<m_x86_Features_Group>;
- def mno_fma : Flag<["-"], "mno-fma">, Group<m_x86_Features_Group>;
- def mfma4 : Flag<["-"], "mfma4">, Group<m_x86_Features_Group>;
- def mno_fma4 : Flag<["-"], "mno-fma4">, Group<m_x86_Features_Group>;
- def mfsgsbase : Flag<["-"], "mfsgsbase">, Group<m_x86_Features_Group>;
- def mno_fsgsbase : Flag<["-"], "mno-fsgsbase">, Group<m_x86_Features_Group>;
- def mfxsr : Flag<["-"], "mfxsr">, Group<m_x86_Features_Group>;
- def mno_fxsr : Flag<["-"], "mno-fxsr">, Group<m_x86_Features_Group>;
- def minvpcid : Flag<["-"], "minvpcid">, Group<m_x86_Features_Group>;
- def mno_invpcid : Flag<["-"], "mno-invpcid">, Group<m_x86_Features_Group>;
- def mgfni : Flag<["-"], "mgfni">, Group<m_x86_Features_Group>;
- def mno_gfni : Flag<["-"], "mno-gfni">, Group<m_x86_Features_Group>;
- def mhreset : Flag<["-"], "mhreset">, Group<m_x86_Features_Group>;
- def mno_hreset : Flag<["-"], "mno-hreset">, Group<m_x86_Features_Group>;
- def mkl : Flag<["-"], "mkl">, Group<m_x86_Features_Group>;
- def mno_kl : Flag<["-"], "mno-kl">, Group<m_x86_Features_Group>;
- def mwidekl : Flag<["-"], "mwidekl">, Group<m_x86_Features_Group>;
- def mno_widekl : Flag<["-"], "mno-widekl">, Group<m_x86_Features_Group>;
- def mlwp : Flag<["-"], "mlwp">, Group<m_x86_Features_Group>;
- def mno_lwp : Flag<["-"], "mno-lwp">, Group<m_x86_Features_Group>;
- def mlzcnt : Flag<["-"], "mlzcnt">, Group<m_x86_Features_Group>;
- def mno_lzcnt : Flag<["-"], "mno-lzcnt">, Group<m_x86_Features_Group>;
- def mmovbe : Flag<["-"], "mmovbe">, Group<m_x86_Features_Group>;
- def mno_movbe : Flag<["-"], "mno-movbe">, Group<m_x86_Features_Group>;
- def mmovdiri : Flag<["-"], "mmovdiri">, Group<m_x86_Features_Group>;
- def mno_movdiri : Flag<["-"], "mno-movdiri">, Group<m_x86_Features_Group>;
- def mmovdir64b : Flag<["-"], "mmovdir64b">, Group<m_x86_Features_Group>;
- def mno_movdir64b : Flag<["-"], "mno-movdir64b">, Group<m_x86_Features_Group>;
- def mmwaitx : Flag<["-"], "mmwaitx">, Group<m_x86_Features_Group>;
- def mno_mwaitx : Flag<["-"], "mno-mwaitx">, Group<m_x86_Features_Group>;
- def mpku : Flag<["-"], "mpku">, Group<m_x86_Features_Group>;
- def mno_pku : Flag<["-"], "mno-pku">, Group<m_x86_Features_Group>;
- def mpclmul : Flag<["-"], "mpclmul">, Group<m_x86_Features_Group>;
- def mno_pclmul : Flag<["-"], "mno-pclmul">, Group<m_x86_Features_Group>;
- def mpconfig : Flag<["-"], "mpconfig">, Group<m_x86_Features_Group>;
- def mno_pconfig : Flag<["-"], "mno-pconfig">, Group<m_x86_Features_Group>;
- def mpopcnt : Flag<["-"], "mpopcnt">, Group<m_x86_Features_Group>;
- def mno_popcnt : Flag<["-"], "mno-popcnt">, Group<m_x86_Features_Group>;
- def mprefetchi : Flag<["-"], "mprefetchi">, Group<m_x86_Features_Group>;
- def mno_prefetchi : Flag<["-"], "mno-prefetchi">, Group<m_x86_Features_Group>;
- def mprefetchwt1 : Flag<["-"], "mprefetchwt1">, Group<m_x86_Features_Group>;
- def mno_prefetchwt1 : Flag<["-"], "mno-prefetchwt1">, Group<m_x86_Features_Group>;
- def mprfchw : Flag<["-"], "mprfchw">, Group<m_x86_Features_Group>;
- def mno_prfchw : Flag<["-"], "mno-prfchw">, Group<m_x86_Features_Group>;
- def mptwrite : Flag<["-"], "mptwrite">, Group<m_x86_Features_Group>;
- def mno_ptwrite : Flag<["-"], "mno-ptwrite">, Group<m_x86_Features_Group>;
- def mraoint : Flag<["-"], "mraoint">, Group<m_x86_Features_Group>;
- def mno_raoint : Flag<["-"], "mno-raoint">, Group<m_x86_Features_Group>;
- def mrdpid : Flag<["-"], "mrdpid">, Group<m_x86_Features_Group>;
- def mno_rdpid : Flag<["-"], "mno-rdpid">, Group<m_x86_Features_Group>;
- def mrdpru : Flag<["-"], "mrdpru">, Group<m_x86_Features_Group>;
- def mno_rdpru : Flag<["-"], "mno-rdpru">, Group<m_x86_Features_Group>;
- def mrdrnd : Flag<["-"], "mrdrnd">, Group<m_x86_Features_Group>;
- def mno_rdrnd : Flag<["-"], "mno-rdrnd">, Group<m_x86_Features_Group>;
- def mrtm : Flag<["-"], "mrtm">, Group<m_x86_Features_Group>;
- def mno_rtm : Flag<["-"], "mno-rtm">, Group<m_x86_Features_Group>;
- def mrdseed : Flag<["-"], "mrdseed">, Group<m_x86_Features_Group>;
- def mno_rdseed : Flag<["-"], "mno-rdseed">, Group<m_x86_Features_Group>;
- def msahf : Flag<["-"], "msahf">, Group<m_x86_Features_Group>;
- def mno_sahf : Flag<["-"], "mno-sahf">, Group<m_x86_Features_Group>;
- def mserialize : Flag<["-"], "mserialize">, Group<m_x86_Features_Group>;
- def mno_serialize : Flag<["-"], "mno-serialize">, Group<m_x86_Features_Group>;
- def msgx : Flag<["-"], "msgx">, Group<m_x86_Features_Group>;
- def mno_sgx : Flag<["-"], "mno-sgx">, Group<m_x86_Features_Group>;
- def msha : Flag<["-"], "msha">, Group<m_x86_Features_Group>;
- def mno_sha : Flag<["-"], "mno-sha">, Group<m_x86_Features_Group>;
- def mtbm : Flag<["-"], "mtbm">, Group<m_x86_Features_Group>;
- def mno_tbm : Flag<["-"], "mno-tbm">, Group<m_x86_Features_Group>;
- def mtsxldtrk : Flag<["-"], "mtsxldtrk">, Group<m_x86_Features_Group>;
- def mno_tsxldtrk : Flag<["-"], "mno-tsxldtrk">, Group<m_x86_Features_Group>;
- def muintr : Flag<["-"], "muintr">, Group<m_x86_Features_Group>;
- def mno_uintr : Flag<["-"], "mno-uintr">, Group<m_x86_Features_Group>;
- def mvaes : Flag<["-"], "mvaes">, Group<m_x86_Features_Group>;
- def mno_vaes : Flag<["-"], "mno-vaes">, Group<m_x86_Features_Group>;
- def mvpclmulqdq : Flag<["-"], "mvpclmulqdq">, Group<m_x86_Features_Group>;
- def mno_vpclmulqdq : Flag<["-"], "mno-vpclmulqdq">, Group<m_x86_Features_Group>;
- def mwaitpkg : Flag<["-"], "mwaitpkg">, Group<m_x86_Features_Group>;
- def mno_waitpkg : Flag<["-"], "mno-waitpkg">, Group<m_x86_Features_Group>;
- def mxop : Flag<["-"], "mxop">, Group<m_x86_Features_Group>;
- def mno_xop : Flag<["-"], "mno-xop">, Group<m_x86_Features_Group>;
- def mxsave : Flag<["-"], "mxsave">, Group<m_x86_Features_Group>;
- def mno_xsave : Flag<["-"], "mno-xsave">, Group<m_x86_Features_Group>;
- def mxsavec : Flag<["-"], "mxsavec">, Group<m_x86_Features_Group>;
- def mno_xsavec : Flag<["-"], "mno-xsavec">, Group<m_x86_Features_Group>;
- def mxsaveopt : Flag<["-"], "mxsaveopt">, Group<m_x86_Features_Group>;
- def mno_xsaveopt : Flag<["-"], "mno-xsaveopt">, Group<m_x86_Features_Group>;
- def mxsaves : Flag<["-"], "mxsaves">, Group<m_x86_Features_Group>;
- def mno_xsaves : Flag<["-"], "mno-xsaves">, Group<m_x86_Features_Group>;
- def mshstk : Flag<["-"], "mshstk">, Group<m_x86_Features_Group>;
- def mno_shstk : Flag<["-"], "mno-shstk">, Group<m_x86_Features_Group>;
- def mretpoline_external_thunk : Flag<["-"], "mretpoline-external-thunk">, Group<m_x86_Features_Group>;
- def mno_retpoline_external_thunk : Flag<["-"], "mno-retpoline-external-thunk">, Group<m_x86_Features_Group>;
- def mvzeroupper : Flag<["-"], "mvzeroupper">, Group<m_x86_Features_Group>;
- def mno_vzeroupper : Flag<["-"], "mno-vzeroupper">, Group<m_x86_Features_Group>;
- // These are legacy user-facing driver-level option spellings. They are always
- // aliases for options that are spelled using the more common Unix / GNU flag
- // style of double-dash and equals-joined flags.
- def target_legacy_spelling : Separate<["-"], "target">,
- Alias<target>,
- Flags<[CoreOption]>;
- // Special internal option to handle -Xlinker --no-demangle.
- def Z_Xlinker__no_demangle : Flag<["-"], "Z-Xlinker-no-demangle">,
- Flags<[Unsupported, NoArgumentUnused]>;
- // Special internal option to allow forwarding arbitrary arguments to linker.
- def Zlinker_input : Separate<["-"], "Zlinker-input">,
- Flags<[Unsupported, NoArgumentUnused]>;
- // Reserved library options.
- def Z_reserved_lib_stdcxx : Flag<["-"], "Z-reserved-lib-stdc++">,
- Flags<[LinkerInput, NoArgumentUnused, Unsupported]>, Group<reserved_lib_Group>;
- def Z_reserved_lib_cckext : Flag<["-"], "Z-reserved-lib-cckext">,
- Flags<[LinkerInput, NoArgumentUnused, Unsupported]>, Group<reserved_lib_Group>;
- // Ignored options
- multiclass BooleanFFlag<string name> {
- def f#NAME : Flag<["-"], "f"#name>;
- def fno_#NAME : Flag<["-"], "fno-"#name>;
- }
- defm : BooleanFFlag<"keep-inline-functions">, Group<clang_ignored_gcc_optimization_f_Group>;
- def fprofile_dir : Joined<["-"], "fprofile-dir=">, Group<f_Group>;
- // The default value matches BinutilsVersion in MCAsmInfo.h.
- def fbinutils_version_EQ : Joined<["-"], "fbinutils-version=">,
- MetaVarName<"<major.minor>">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Produced object files can use all ELF features supported by this "
- "binutils version and newer. If -fno-integrated-as is specified, the "
- "generated assembly will consider GNU as support. 'none' means that all ELF "
- "features can be used, regardless of binutils support. Defaults to 2.26.">;
- def fuse_ld_EQ : Joined<["-"], "fuse-ld=">, Group<f_Group>, Flags<[CoreOption, LinkOption]>;
- def ld_path_EQ : Joined<["--"], "ld-path=">, Group<Link_Group>;
- defm align_labels : BooleanFFlag<"align-labels">, Group<clang_ignored_gcc_optimization_f_Group>;
- def falign_labels_EQ : Joined<["-"], "falign-labels=">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm align_loops : BooleanFFlag<"align-loops">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm align_jumps : BooleanFFlag<"align-jumps">, Group<clang_ignored_gcc_optimization_f_Group>;
- def falign_jumps_EQ : Joined<["-"], "falign-jumps=">, Group<clang_ignored_gcc_optimization_f_Group>;
- // FIXME: This option should be supported and wired up to our diognostics, but
- // ignore it for now to avoid breaking builds that use it.
- def fdiagnostics_show_location_EQ : Joined<["-"], "fdiagnostics-show-location=">, Group<clang_ignored_f_Group>;
- defm fcheck_new : BooleanFFlag<"check-new">, Group<clang_ignored_f_Group>;
- defm caller_saves : BooleanFFlag<"caller-saves">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm reorder_blocks : BooleanFFlag<"reorder-blocks">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm branch_count_reg : BooleanFFlag<"branch-count-reg">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm default_inline : BooleanFFlag<"default-inline">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm fat_lto_objects : BooleanFFlag<"fat-lto-objects">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm float_store : BooleanFFlag<"float-store">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm friend_injection : BooleanFFlag<"friend-injection">, Group<clang_ignored_f_Group>;
- defm function_attribute_list : BooleanFFlag<"function-attribute-list">, Group<clang_ignored_f_Group>;
- defm gcse : BooleanFFlag<"gcse">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm gcse_after_reload: BooleanFFlag<"gcse-after-reload">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm gcse_las: BooleanFFlag<"gcse-las">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm gcse_sm: BooleanFFlag<"gcse-sm">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm gnu : BooleanFFlag<"gnu">, Group<clang_ignored_f_Group>;
- defm implicit_templates : BooleanFFlag<"implicit-templates">, Group<clang_ignored_f_Group>;
- defm implement_inlines : BooleanFFlag<"implement-inlines">, Group<clang_ignored_f_Group>;
- defm merge_constants : BooleanFFlag<"merge-constants">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm modulo_sched : BooleanFFlag<"modulo-sched">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm modulo_sched_allow_regmoves : BooleanFFlag<"modulo-sched-allow-regmoves">,
- Group<clang_ignored_gcc_optimization_f_Group>;
- defm inline_functions_called_once : BooleanFFlag<"inline-functions-called-once">,
- Group<clang_ignored_gcc_optimization_f_Group>;
- def finline_limit_EQ : Joined<["-"], "finline-limit=">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm finline_limit : BooleanFFlag<"inline-limit">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm inline_small_functions : BooleanFFlag<"inline-small-functions">,
- Group<clang_ignored_gcc_optimization_f_Group>;
- defm ipa_cp : BooleanFFlag<"ipa-cp">,
- Group<clang_ignored_gcc_optimization_f_Group>;
- defm ivopts : BooleanFFlag<"ivopts">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm semantic_interposition : BoolFOption<"semantic-interposition",
- LangOpts<"SemanticInterposition">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>>;
- defm non_call_exceptions : BooleanFFlag<"non-call-exceptions">, Group<clang_ignored_f_Group>;
- defm peel_loops : BooleanFFlag<"peel-loops">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm permissive : BooleanFFlag<"permissive">, Group<clang_ignored_f_Group>;
- defm prefetch_loop_arrays : BooleanFFlag<"prefetch-loop-arrays">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm printf : BooleanFFlag<"printf">, Group<clang_ignored_f_Group>;
- defm profile : BooleanFFlag<"profile">, Group<clang_ignored_f_Group>;
- defm profile_correction : BooleanFFlag<"profile-correction">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm profile_generate_sampling : BooleanFFlag<"profile-generate-sampling">, Group<clang_ignored_f_Group>;
- defm profile_reusedist : BooleanFFlag<"profile-reusedist">, Group<clang_ignored_f_Group>;
- defm profile_values : BooleanFFlag<"profile-values">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm regs_graph : BooleanFFlag<"regs-graph">, Group<clang_ignored_f_Group>;
- defm rename_registers : BooleanFFlag<"rename-registers">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm ripa : BooleanFFlag<"ripa">, Group<clang_ignored_f_Group>;
- defm schedule_insns : BooleanFFlag<"schedule-insns">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm schedule_insns2 : BooleanFFlag<"schedule-insns2">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm see : BooleanFFlag<"see">, Group<clang_ignored_f_Group>;
- defm signaling_nans : BooleanFFlag<"signaling-nans">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm single_precision_constant : BooleanFFlag<"single-precision-constant">,
- Group<clang_ignored_gcc_optimization_f_Group>;
- defm spec_constr_count : BooleanFFlag<"spec-constr-count">, Group<clang_ignored_f_Group>;
- defm stack_check : BooleanFFlag<"stack-check">, Group<clang_ignored_f_Group>;
- defm strength_reduce :
- BooleanFFlag<"strength-reduce">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm tls_model : BooleanFFlag<"tls-model">, Group<clang_ignored_f_Group>;
- defm tracer : BooleanFFlag<"tracer">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm tree_dce : BooleanFFlag<"tree-dce">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm tree_salias : BooleanFFlag<"tree-salias">, Group<clang_ignored_f_Group>;
- defm tree_ter : BooleanFFlag<"tree-ter">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm tree_vectorizer_verbose : BooleanFFlag<"tree-vectorizer-verbose">, Group<clang_ignored_f_Group>;
- defm tree_vrp : BooleanFFlag<"tree-vrp">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm : BooleanFFlag<"unit-at-a-time">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm unroll_all_loops : BooleanFFlag<"unroll-all-loops">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm unsafe_loop_optimizations : BooleanFFlag<"unsafe-loop-optimizations">,
- Group<clang_ignored_gcc_optimization_f_Group>;
- defm unswitch_loops : BooleanFFlag<"unswitch-loops">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm use_linker_plugin : BooleanFFlag<"use-linker-plugin">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm vect_cost_model : BooleanFFlag<"vect-cost-model">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm variable_expansion_in_unroller : BooleanFFlag<"variable-expansion-in-unroller">,
- Group<clang_ignored_gcc_optimization_f_Group>;
- defm web : BooleanFFlag<"web">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm whole_program : BooleanFFlag<"whole-program">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm devirtualize : BooleanFFlag<"devirtualize">, Group<clang_ignored_gcc_optimization_f_Group>;
- defm devirtualize_speculatively : BooleanFFlag<"devirtualize-speculatively">,
- Group<clang_ignored_gcc_optimization_f_Group>;
- // Generic gfortran options.
- def A_DASH : Joined<["-"], "A-">, Group<gfortran_Group>;
- def static_libgfortran : Flag<["-"], "static-libgfortran">, Group<gfortran_Group>;
- // "f" options with values for gfortran.
- def fblas_matmul_limit_EQ : Joined<["-"], "fblas-matmul-limit=">, Group<gfortran_Group>;
- def fcheck_EQ : Joined<["-"], "fcheck=">, Group<gfortran_Group>;
- def fcoarray_EQ : Joined<["-"], "fcoarray=">, Group<gfortran_Group>;
- def ffpe_trap_EQ : Joined<["-"], "ffpe-trap=">, Group<gfortran_Group>;
- def ffree_line_length_VALUE : Joined<["-"], "ffree-line-length-">, Group<gfortran_Group>;
- def finit_character_EQ : Joined<["-"], "finit-character=">, Group<gfortran_Group>;
- def finit_integer_EQ : Joined<["-"], "finit-integer=">, Group<gfortran_Group>;
- def finit_logical_EQ : Joined<["-"], "finit-logical=">, Group<gfortran_Group>;
- def finit_real_EQ : Joined<["-"], "finit-real=">, Group<gfortran_Group>;
- def fmax_array_constructor_EQ : Joined<["-"], "fmax-array-constructor=">, Group<gfortran_Group>;
- def fmax_errors_EQ : Joined<["-"], "fmax-errors=">, Group<gfortran_Group>;
- def fmax_stack_var_size_EQ : Joined<["-"], "fmax-stack-var-size=">, Group<gfortran_Group>;
- def fmax_subrecord_length_EQ : Joined<["-"], "fmax-subrecord-length=">, Group<gfortran_Group>;
- def frecord_marker_EQ : Joined<["-"], "frecord-marker=">, Group<gfortran_Group>;
- // "f" flags for gfortran.
- defm aggressive_function_elimination : BooleanFFlag<"aggressive-function-elimination">, Group<gfortran_Group>;
- defm align_commons : BooleanFFlag<"align-commons">, Group<gfortran_Group>;
- defm all_intrinsics : BooleanFFlag<"all-intrinsics">, Group<gfortran_Group>;
- def fautomatic : Flag<["-"], "fautomatic">; // -fno-automatic is significant
- defm backtrace : BooleanFFlag<"backtrace">, Group<gfortran_Group>;
- defm bounds_check : BooleanFFlag<"bounds-check">, Group<gfortran_Group>;
- defm check_array_temporaries : BooleanFFlag<"check-array-temporaries">, Group<gfortran_Group>;
- defm cray_pointer : BooleanFFlag<"cray-pointer">, Group<gfortran_Group>;
- defm d_lines_as_code : BooleanFFlag<"d-lines-as-code">, Group<gfortran_Group>;
- defm d_lines_as_comments : BooleanFFlag<"d-lines-as-comments">, Group<gfortran_Group>;
- defm dollar_ok : BooleanFFlag<"dollar-ok">, Group<gfortran_Group>;
- defm dump_fortran_optimized : BooleanFFlag<"dump-fortran-optimized">, Group<gfortran_Group>;
- defm dump_fortran_original : BooleanFFlag<"dump-fortran-original">, Group<gfortran_Group>;
- defm dump_parse_tree : BooleanFFlag<"dump-parse-tree">, Group<gfortran_Group>;
- defm external_blas : BooleanFFlag<"external-blas">, Group<gfortran_Group>;
- defm f2c : BooleanFFlag<"f2c">, Group<gfortran_Group>;
- defm frontend_optimize : BooleanFFlag<"frontend-optimize">, Group<gfortran_Group>;
- defm init_local_zero : BooleanFFlag<"init-local-zero">, Group<gfortran_Group>;
- defm integer_4_integer_8 : BooleanFFlag<"integer-4-integer-8">, Group<gfortran_Group>;
- defm max_identifier_length : BooleanFFlag<"max-identifier-length">, Group<gfortran_Group>;
- defm module_private : BooleanFFlag<"module-private">, Group<gfortran_Group>;
- defm pack_derived : BooleanFFlag<"pack-derived">, Group<gfortran_Group>;
- //defm protect_parens : BooleanFFlag<"protect-parens">, Group<gfortran_Group>;
- defm range_check : BooleanFFlag<"range-check">, Group<gfortran_Group>;
- defm real_4_real_10 : BooleanFFlag<"real-4-real-10">, Group<gfortran_Group>;
- defm real_4_real_16 : BooleanFFlag<"real-4-real-16">, Group<gfortran_Group>;
- defm real_4_real_8 : BooleanFFlag<"real-4-real-8">, Group<gfortran_Group>;
- defm real_8_real_10 : BooleanFFlag<"real-8-real-10">, Group<gfortran_Group>;
- defm real_8_real_16 : BooleanFFlag<"real-8-real-16">, Group<gfortran_Group>;
- defm real_8_real_4 : BooleanFFlag<"real-8-real-4">, Group<gfortran_Group>;
- defm realloc_lhs : BooleanFFlag<"realloc-lhs">, Group<gfortran_Group>;
- defm recursive : BooleanFFlag<"recursive">, Group<gfortran_Group>;
- defm repack_arrays : BooleanFFlag<"repack-arrays">, Group<gfortran_Group>;
- defm second_underscore : BooleanFFlag<"second-underscore">, Group<gfortran_Group>;
- defm sign_zero : BooleanFFlag<"sign-zero">, Group<gfortran_Group>;
- defm stack_arrays : BooleanFFlag<"stack-arrays">, Group<gfortran_Group>;
- defm underscoring : BooleanFFlag<"underscoring">, Group<gfortran_Group>;
- defm whole_file : BooleanFFlag<"whole-file">, Group<gfortran_Group>;
- // C++ SYCL options
- def fsycl : Flag<["-"], "fsycl">, Flags<[NoXarchOption, CoreOption]>,
- Group<sycl_Group>, HelpText<"Enables SYCL kernels compilation for device">;
- def fno_sycl : Flag<["-"], "fno-sycl">, Flags<[NoXarchOption, CoreOption]>,
- Group<sycl_Group>, HelpText<"Disables SYCL kernels compilation for device">;
- //===----------------------------------------------------------------------===//
- // FLangOption + NoXarchOption
- //===----------------------------------------------------------------------===//
- def flang_experimental_exec : Flag<["-"], "flang-experimental-exec">,
- Flags<[FlangOption, FlangOnlyOption, NoXarchOption, HelpHidden]>,
- HelpText<"Enable support for generating executables (experimental)">;
- //===----------------------------------------------------------------------===//
- // FLangOption + CoreOption + NoXarchOption
- //===----------------------------------------------------------------------===//
- def Xflang : Separate<["-"], "Xflang">,
- HelpText<"Pass <arg> to the flang compiler">, MetaVarName<"<arg>">,
- Flags<[FlangOption, FlangOnlyOption, NoXarchOption, CoreOption]>,
- Group<CompileOnly_Group>;
- //===----------------------------------------------------------------------===//
- // FlangOption and FC1 Options
- //===----------------------------------------------------------------------===//
- let Flags = [FC1Option, FlangOption, FlangOnlyOption] in {
- def cpp : Flag<["-"], "cpp">, Group<f_Group>,
- HelpText<"Enable predefined and command line preprocessor macros">;
- def nocpp : Flag<["-"], "nocpp">, Group<f_Group>,
- HelpText<"Disable predefined and command line preprocessor macros">;
- def module_dir : JoinedOrSeparate<["-"], "module-dir">, MetaVarName<"<dir>">,
- HelpText<"Put MODULE files in <dir>">,
- DocBrief<[{This option specifies where to put .mod files for compiled modules.
- It is also added to the list of directories to be searched by an USE statement.
- The default is the current directory.}]>;
- def ffixed_form : Flag<["-"], "ffixed-form">, Group<f_Group>,
- HelpText<"Process source files in fixed form">;
- def ffree_form : Flag<["-"], "ffree-form">, Group<f_Group>,
- HelpText<"Process source files in free form">;
- def ffixed_line_length_EQ : Joined<["-"], "ffixed-line-length=">, Group<f_Group>,
- HelpText<"Use <value> as character line width in fixed mode">,
- DocBrief<[{Set column after which characters are ignored in typical fixed-form lines in the source
- file}]>;
- def ffixed_line_length_VALUE : Joined<["-"], "ffixed-line-length-">, Group<f_Group>, Alias<ffixed_line_length_EQ>;
- def fconvert_EQ : Joined<["-"], "fconvert=">, Group<f_Group>,
- HelpText<"Set endian conversion of data for unformatted files">;
- def fopenacc : Flag<["-"], "fopenacc">, Group<f_Group>,
- HelpText<"Enable OpenACC">;
- def fdefault_double_8 : Flag<["-"],"fdefault-double-8">, Group<f_Group>,
- HelpText<"Set the default double precision kind to an 8 byte wide type">;
- def fdefault_integer_8 : Flag<["-"],"fdefault-integer-8">, Group<f_Group>,
- HelpText<"Set the default integer kind to an 8 byte wide type">;
- def fdefault_real_8 : Flag<["-"],"fdefault-real-8">, Group<f_Group>,
- HelpText<"Set the default real kind to an 8 byte wide type">;
- def flarge_sizes : Flag<["-"],"flarge-sizes">, Group<f_Group>,
- HelpText<"Use INTEGER(KIND=8) for the result type in size-related intrinsics">;
- def falternative_parameter_statement : Flag<["-"], "falternative-parameter-statement">, Group<f_Group>,
- HelpText<"Enable the old style PARAMETER statement">;
- def fintrinsic_modules_path : Separate<["-"], "fintrinsic-modules-path">, Group<f_Group>, MetaVarName<"<dir>">,
- HelpText<"Specify where to find the compiled intrinsic modules">,
- DocBrief<[{This option specifies the location of pre-compiled intrinsic modules,
- if they are not in the default location expected by the compiler.}]>;
- defm backslash : OptInFC1FFlag<"backslash", "Specify that backslash in string introduces an escape character">;
- defm xor_operator : OptInFC1FFlag<"xor-operator", "Enable .XOR. as a synonym of .NEQV.">;
- defm logical_abbreviations : OptInFC1FFlag<"logical-abbreviations", "Enable logical abbreviations">;
- defm implicit_none : OptInFC1FFlag<"implicit-none", "No implicit typing allowed unless overridden by IMPLICIT statements">;
- def fno_automatic : Flag<["-"], "fno-automatic">, Group<f_Group>,
- HelpText<"Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE">;
- } // let Flags = [FC1Option, FlangOption, FlangOnlyOption]
- def J : JoinedOrSeparate<["-"], "J">,
- Flags<[RenderJoined, FlangOption, FC1Option, FlangOnlyOption]>,
- Group<gfortran_Group>,
- Alias<module_dir>;
- //===----------------------------------------------------------------------===//
- // FC1 Options
- //===----------------------------------------------------------------------===//
- let Flags = [FC1Option, FlangOnlyOption] in {
- def fget_definition : MultiArg<["-"], "fget-definition", 3>,
- HelpText<"Get the symbol definition from <line> <start-column> <end-column>">,
- Group<Action_Group>;
- def test_io : Flag<["-"], "test-io">, Group<Action_Group>,
- HelpText<"Run the InputOuputTest action. Use for development and testing only.">;
- def fdebug_unparse_no_sema : Flag<["-"], "fdebug-unparse-no-sema">, Group<Action_Group>,
- HelpText<"Unparse and stop (skips the semantic checks)">,
- DocBrief<[{Only run the parser, then unparse the parse-tree and output the
- generated Fortran source file. Semantic checks are disabled.}]>;
- def fdebug_unparse : Flag<["-"], "fdebug-unparse">, Group<Action_Group>,
- HelpText<"Unparse and stop.">,
- DocBrief<[{Run the parser and the semantic checks. Then unparse the
- parse-tree and output the generated Fortran source file.}]>;
- def fdebug_unparse_with_symbols : Flag<["-"], "fdebug-unparse-with-symbols">, Group<Action_Group>,
- HelpText<"Unparse and stop.">;
- def fdebug_dump_symbols : Flag<["-"], "fdebug-dump-symbols">, Group<Action_Group>,
- HelpText<"Dump symbols after the semantic analysis">;
- def fdebug_dump_parse_tree : Flag<["-"], "fdebug-dump-parse-tree">, Group<Action_Group>,
- HelpText<"Dump the parse tree">,
- DocBrief<[{Run the Parser and the semantic checks, and then output the
- parse tree.}]>;
- def fdebug_dump_pft : Flag<["-"], "fdebug-dump-pft">, Group<Action_Group>,
- HelpText<"Dump the pre-fir parse tree">;
- def fdebug_dump_parse_tree_no_sema : Flag<["-"], "fdebug-dump-parse-tree-no-sema">, Group<Action_Group>,
- HelpText<"Dump the parse tree (skips the semantic checks)">,
- DocBrief<[{Run the Parser and then output the parse tree. Semantic
- checks are disabled.}]>;
- def fdebug_dump_all : Flag<["-"], "fdebug-dump-all">, Group<Action_Group>,
- HelpText<"Dump symbols and the parse tree after the semantic checks">;
- def fdebug_dump_provenance : Flag<["-"], "fdebug-dump-provenance">, Group<Action_Group>,
- HelpText<"Dump provenance">;
- def fdebug_dump_parsing_log : Flag<["-"], "fdebug-dump-parsing-log">, Group<Action_Group>,
- HelpText<"Run instrumented parse and dump the parsing log">;
- def fdebug_measure_parse_tree : Flag<["-"], "fdebug-measure-parse-tree">, Group<Action_Group>,
- HelpText<"Measure the parse tree">;
- def fdebug_pre_fir_tree : Flag<["-"], "fdebug-pre-fir-tree">, Group<Action_Group>,
- HelpText<"Dump the pre-FIR tree">;
- def fdebug_module_writer : Flag<["-"],"fdebug-module-writer">,
- HelpText<"Enable debug messages while writing module files">;
- def fget_symbols_sources : Flag<["-"], "fget-symbols-sources">, Group<Action_Group>,
- HelpText<"Dump symbols and their source code locations">;
- def module_suffix : Separate<["-"], "module-suffix">, Group<f_Group>, MetaVarName<"<suffix>">,
- HelpText<"Use <suffix> as the suffix for module files (the default value is `.mod`)">;
- def fno_reformat : Flag<["-"], "fno-reformat">, Group<Preprocessor_Group>,
- HelpText<"Dump the cooked character stream in -E mode">;
- defm analyzed_objects_for_unparse : OptOutFC1FFlag<"analyzed-objects-for-unparse", "", "Do not use the analyzed objects when unparsing">;
- def emit_mlir : Flag<["-"], "emit-mlir">, Group<Action_Group>,
- HelpText<"Build the parse tree, then lower it to MLIR">;
- def emit_fir : Flag<["-"], "emit-fir">, Alias<emit_mlir>;
- } // let Flags = [FC1Option, FlangOnlyOption]
- //===----------------------------------------------------------------------===//
- // Target Options (cc1 + cc1as)
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, CC1AsOption, NoDriverOption] in {
- def tune_cpu : Separate<["-"], "tune-cpu">,
- HelpText<"Tune for a specific cpu type">,
- MarshallingInfoString<TargetOpts<"TuneCPU">>;
- def target_abi : Separate<["-"], "target-abi">,
- HelpText<"Target a particular ABI type">,
- MarshallingInfoString<TargetOpts<"ABI">>;
- def target_sdk_version_EQ : Joined<["-"], "target-sdk-version=">,
- HelpText<"The version of target SDK used for compilation">;
- def darwin_target_variant_sdk_version_EQ : Joined<["-"],
- "darwin-target-variant-sdk-version=">,
- HelpText<"The version of darwin target variant SDK used for compilation">;
- } // let Flags = [CC1Option, CC1AsOption, NoDriverOption]
- let Flags = [CC1Option, CC1AsOption] in {
- def darwin_target_variant_triple : Separate<["-"], "darwin-target-variant-triple">,
- HelpText<"Specify the darwin target variant triple">,
- MarshallingInfoString<TargetOpts<"DarwinTargetVariantTriple">>,
- Normalizer<"normalizeTriple">;
- } // let Flags = [CC1Option, CC1AsOption]
- //===----------------------------------------------------------------------===//
- // Target Options (cc1 + cc1as + fc1)
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, CC1AsOption, FC1Option, NoDriverOption] in {
- def target_cpu : Separate<["-"], "target-cpu">,
- HelpText<"Target a specific cpu type">,
- MarshallingInfoString<TargetOpts<"CPU">>;
- def target_feature : Separate<["-"], "target-feature">,
- HelpText<"Target specific attributes">,
- MarshallingInfoStringVector<TargetOpts<"FeaturesAsWritten">>;
- def triple : Separate<["-"], "triple">,
- HelpText<"Specify target triple (e.g. i686-apple-darwin9)">,
- MarshallingInfoString<TargetOpts<"Triple">, "llvm::Triple::normalize(llvm::sys::getDefaultTargetTriple())">,
- AlwaysEmit, Normalizer<"normalizeTriple">;
- } // let Flags = [CC1Option, CC1ASOption, FC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // Target Options (other)
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, NoDriverOption] in {
- def target_linker_version : Separate<["-"], "target-linker-version">,
- HelpText<"Target linker version">,
- MarshallingInfoString<TargetOpts<"LinkerVersion">>;
- def triple_EQ : Joined<["-"], "triple=">, Alias<triple>;
- def mfpmath : Separate<["-"], "mfpmath">,
- HelpText<"Which unit to use for fp math">,
- MarshallingInfoString<TargetOpts<"FPMath">>;
- defm padding_on_unsigned_fixed_point : BoolOption<"f", "padding-on-unsigned-fixed-point",
- LangOpts<"PaddingOnUnsignedFixedPoint">, DefaultFalse,
- PosFlag<SetTrue, [], "Force each unsigned fixed point type to have an extra bit of padding to align their scales with those of signed fixed point types">,
- NegFlag<SetFalse>>,
- ShouldParseIf<ffixed_point.KeyPath>;
- } // let Flags = [CC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // Analyzer Options
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, NoDriverOption] in {
- def analysis_UnoptimizedCFG : Flag<["-"], "unoptimized-cfg">,
- HelpText<"Generate unoptimized CFGs for all analyses">,
- MarshallingInfoFlag<AnalyzerOpts<"UnoptimizedCFG">>;
- def analysis_CFGAddImplicitDtors : Flag<["-"], "cfg-add-implicit-dtors">,
- HelpText<"Add C++ implicit destructors to CFGs for all analyses">;
- def analyzer_constraints : Separate<["-"], "analyzer-constraints">,
- HelpText<"Source Code Analysis - Symbolic Constraint Engines">;
- def analyzer_constraints_EQ : Joined<["-"], "analyzer-constraints=">,
- Alias<analyzer_constraints>;
- def analyzer_output : Separate<["-"], "analyzer-output">,
- HelpText<"Source Code Analysis - Output Options">;
- def analyzer_output_EQ : Joined<["-"], "analyzer-output=">,
- Alias<analyzer_output>;
- def analyzer_purge : Separate<["-"], "analyzer-purge">,
- HelpText<"Source Code Analysis - Dead Symbol Removal Frequency">;
- def analyzer_purge_EQ : Joined<["-"], "analyzer-purge=">, Alias<analyzer_purge>;
- def analyzer_opt_analyze_headers : Flag<["-"], "analyzer-opt-analyze-headers">,
- HelpText<"Force the static analyzer to analyze functions defined in header files">,
- MarshallingInfoFlag<AnalyzerOpts<"AnalyzeAll">>;
- def analyzer_display_progress : Flag<["-"], "analyzer-display-progress">,
- HelpText<"Emit verbose output about the analyzer's progress">,
- MarshallingInfoFlag<AnalyzerOpts<"AnalyzerDisplayProgress">>;
- def analyze_function : Separate<["-"], "analyze-function">,
- HelpText<"Run analysis on specific function (for C++ include parameters in name)">,
- MarshallingInfoString<AnalyzerOpts<"AnalyzeSpecificFunction">>;
- def analyze_function_EQ : Joined<["-"], "analyze-function=">, Alias<analyze_function>;
- def trim_egraph : Flag<["-"], "trim-egraph">,
- HelpText<"Only show error-related paths in the analysis graph">,
- MarshallingInfoFlag<AnalyzerOpts<"TrimGraph">>;
- def analyzer_viz_egraph_graphviz : Flag<["-"], "analyzer-viz-egraph-graphviz">,
- HelpText<"Display exploded graph using GraphViz">,
- MarshallingInfoFlag<AnalyzerOpts<"visualizeExplodedGraphWithGraphViz">>;
- def analyzer_dump_egraph : Separate<["-"], "analyzer-dump-egraph">,
- HelpText<"Dump exploded graph to the specified file">,
- MarshallingInfoString<AnalyzerOpts<"DumpExplodedGraphTo">>;
- def analyzer_dump_egraph_EQ : Joined<["-"], "analyzer-dump-egraph=">, Alias<analyzer_dump_egraph>;
- def analyzer_inline_max_stack_depth : Separate<["-"], "analyzer-inline-max-stack-depth">,
- HelpText<"Bound on stack depth while inlining (4 by default)">,
- // Cap the stack depth at 4 calls (5 stack frames, base + 4 calls).
- MarshallingInfoInt<AnalyzerOpts<"InlineMaxStackDepth">, "5">;
- def analyzer_inline_max_stack_depth_EQ : Joined<["-"], "analyzer-inline-max-stack-depth=">,
- Alias<analyzer_inline_max_stack_depth>;
- def analyzer_inlining_mode : Separate<["-"], "analyzer-inlining-mode">,
- HelpText<"Specify the function selection heuristic used during inlining">;
- def analyzer_inlining_mode_EQ : Joined<["-"], "analyzer-inlining-mode=">, Alias<analyzer_inlining_mode>;
- def analyzer_disable_retry_exhausted : Flag<["-"], "analyzer-disable-retry-exhausted">,
- HelpText<"Do not re-analyze paths leading to exhausted nodes with a different strategy (may decrease code coverage)">,
- MarshallingInfoFlag<AnalyzerOpts<"NoRetryExhausted">>;
- def analyzer_max_loop : Separate<["-"], "analyzer-max-loop">,
- HelpText<"The maximum number of times the analyzer will go through a loop">,
- MarshallingInfoInt<AnalyzerOpts<"maxBlockVisitOnPath">, "4">;
- def analyzer_stats : Flag<["-"], "analyzer-stats">,
- HelpText<"Print internal analyzer statistics.">,
- MarshallingInfoFlag<AnalyzerOpts<"PrintStats">>;
- def analyzer_checker : Separate<["-"], "analyzer-checker">,
- HelpText<"Choose analyzer checkers to enable">,
- ValuesCode<[{
- static constexpr const char VALUES_CODE [] =
- #define GET_CHECKERS
- #define CHECKER(FULLNAME, CLASS, HT, DOC_URI, IS_HIDDEN) FULLNAME ","
- #include "clang/StaticAnalyzer/Checkers/Checkers.inc"
- #undef GET_CHECKERS
- #define GET_PACKAGES
- #define PACKAGE(FULLNAME) FULLNAME ","
- #include "clang/StaticAnalyzer/Checkers/Checkers.inc"
- #undef GET_PACKAGES
- ;
- }]>;
- def analyzer_checker_EQ : Joined<["-"], "analyzer-checker=">,
- Alias<analyzer_checker>;
- def analyzer_disable_checker : Separate<["-"], "analyzer-disable-checker">,
- HelpText<"Choose analyzer checkers to disable">;
- def analyzer_disable_checker_EQ : Joined<["-"], "analyzer-disable-checker=">,
- Alias<analyzer_disable_checker>;
- def analyzer_disable_all_checks : Flag<["-"], "analyzer-disable-all-checks">,
- HelpText<"Disable all static analyzer checks">,
- MarshallingInfoFlag<AnalyzerOpts<"DisableAllCheckers">>;
- def analyzer_checker_help : Flag<["-"], "analyzer-checker-help">,
- HelpText<"Display the list of analyzer checkers that are available">,
- MarshallingInfoFlag<AnalyzerOpts<"ShowCheckerHelp">>;
- def analyzer_checker_help_alpha : Flag<["-"], "analyzer-checker-help-alpha">,
- HelpText<"Display the list of in development analyzer checkers. These "
- "are NOT considered safe, they are unstable and will emit incorrect "
- "reports. Enable ONLY FOR DEVELOPMENT purposes">,
- MarshallingInfoFlag<AnalyzerOpts<"ShowCheckerHelpAlpha">>;
- def analyzer_checker_help_developer : Flag<["-"], "analyzer-checker-help-developer">,
- HelpText<"Display the list of developer-only checkers such as modeling "
- "and debug checkers">,
- MarshallingInfoFlag<AnalyzerOpts<"ShowCheckerHelpDeveloper">>;
- def analyzer_config_help : Flag<["-"], "analyzer-config-help">,
- HelpText<"Display the list of -analyzer-config options. These are meant for "
- "development purposes only!">,
- MarshallingInfoFlag<AnalyzerOpts<"ShowConfigOptionsList">>;
- def analyzer_list_enabled_checkers : Flag<["-"], "analyzer-list-enabled-checkers">,
- HelpText<"Display the list of enabled analyzer checkers">,
- MarshallingInfoFlag<AnalyzerOpts<"ShowEnabledCheckerList">>;
- def analyzer_config : Separate<["-"], "analyzer-config">,
- HelpText<"Choose analyzer options to enable">;
- def analyzer_checker_option_help : Flag<["-"], "analyzer-checker-option-help">,
- HelpText<"Display the list of checker and package options">,
- MarshallingInfoFlag<AnalyzerOpts<"ShowCheckerOptionList">>;
- def analyzer_checker_option_help_alpha : Flag<["-"], "analyzer-checker-option-help-alpha">,
- HelpText<"Display the list of in development checker and package options. "
- "These are NOT considered safe, they are unstable and will emit "
- "incorrect reports. Enable ONLY FOR DEVELOPMENT purposes">,
- MarshallingInfoFlag<AnalyzerOpts<"ShowCheckerOptionAlphaList">>;
- def analyzer_checker_option_help_developer : Flag<["-"], "analyzer-checker-option-help-developer">,
- HelpText<"Display the list of checker and package options meant for "
- "development purposes only">,
- MarshallingInfoFlag<AnalyzerOpts<"ShowCheckerOptionDeveloperList">>;
- def analyzer_config_compatibility_mode : Separate<["-"], "analyzer-config-compatibility-mode">,
- HelpText<"Don't emit errors on invalid analyzer-config inputs">,
- Values<"true,false">, NormalizedValues<[[{false}], [{true}]]>,
- MarshallingInfoEnum<AnalyzerOpts<"ShouldEmitErrorsOnInvalidConfigValue">, [{true}]>;
- def analyzer_config_compatibility_mode_EQ : Joined<["-"], "analyzer-config-compatibility-mode=">,
- Alias<analyzer_config_compatibility_mode>;
- def analyzer_werror : Flag<["-"], "analyzer-werror">,
- HelpText<"Emit analyzer results as errors rather than warnings">,
- MarshallingInfoFlag<AnalyzerOpts<"AnalyzerWerror">>;
- } // let Flags = [CC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // Migrator Options
- //===----------------------------------------------------------------------===//
- def migrator_no_nsalloc_error : Flag<["-"], "no-ns-alloc-error">,
- HelpText<"Do not error on use of NSAllocateCollectable/NSReallocateCollectable">,
- Flags<[CC1Option, NoDriverOption]>,
- MarshallingInfoFlag<MigratorOpts<"NoNSAllocReallocError">>;
- def migrator_no_finalize_removal : Flag<["-"], "no-finalize-removal">,
- HelpText<"Do not remove finalize method in gc mode">,
- Flags<[CC1Option, NoDriverOption]>,
- MarshallingInfoFlag<MigratorOpts<"NoFinalizeRemoval">>;
- //===----------------------------------------------------------------------===//
- // CodeGen Options
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, CC1AsOption, FC1Option, NoDriverOption] in {
- def mrelocation_model : Separate<["-"], "mrelocation-model">,
- HelpText<"The relocation model to use">, Values<"static,pic,ropi,rwpi,ropi-rwpi,dynamic-no-pic">,
- NormalizedValuesScope<"llvm::Reloc">,
- NormalizedValues<["Static", "PIC_", "ROPI", "RWPI", "ROPI_RWPI", "DynamicNoPIC"]>,
- MarshallingInfoEnum<CodeGenOpts<"RelocationModel">, "PIC_">;
- } // let Flags = [CC1Option, CC1AsOption, FC1Option, NoDriverOption]
- let Flags = [CC1Option, CC1AsOption, NoDriverOption] in {
- def debug_info_kind_EQ : Joined<["-"], "debug-info-kind=">;
- def debug_info_macro : Flag<["-"], "debug-info-macro">,
- HelpText<"Emit macro debug information">,
- MarshallingInfoFlag<CodeGenOpts<"MacroDebugInfo">>;
- def default_function_attr : Separate<["-"], "default-function-attr">,
- HelpText<"Apply given attribute to all functions">,
- MarshallingInfoStringVector<CodeGenOpts<"DefaultFunctionAttrs">>;
- def dwarf_version_EQ : Joined<["-"], "dwarf-version=">,
- MarshallingInfoInt<CodeGenOpts<"DwarfVersion">>;
- def debugger_tuning_EQ : Joined<["-"], "debugger-tuning=">,
- Values<"gdb,lldb,sce,dbx">,
- NormalizedValuesScope<"llvm::DebuggerKind">, NormalizedValues<["GDB", "LLDB", "SCE", "DBX"]>,
- MarshallingInfoEnum<CodeGenOpts<"DebuggerTuning">, "Default">;
- def dwarf_debug_flags : Separate<["-"], "dwarf-debug-flags">,
- HelpText<"The string to embed in the Dwarf debug flags record.">,
- MarshallingInfoString<CodeGenOpts<"DwarfDebugFlags">>;
- def record_command_line : Separate<["-"], "record-command-line">,
- HelpText<"The string to embed in the .LLVM.command.line section.">,
- MarshallingInfoString<CodeGenOpts<"RecordCommandLine">>;
- def compress_debug_sections_EQ : Joined<["-", "--"], "compress-debug-sections=">,
- HelpText<"DWARF debug sections compression type">, Values<"none,zlib,zstd">,
- NormalizedValuesScope<"llvm::DebugCompressionType">, NormalizedValues<["None", "Zlib", "Zstd"]>,
- MarshallingInfoEnum<CodeGenOpts<"CompressDebugSections">, "None">;
- def compress_debug_sections : Flag<["-", "--"], "compress-debug-sections">,
- Alias<compress_debug_sections_EQ>, AliasArgs<["zlib"]>;
- def mno_exec_stack : Flag<["-"], "mnoexecstack">,
- HelpText<"Mark the file as not needing an executable stack">,
- MarshallingInfoFlag<CodeGenOpts<"NoExecStack">>;
- def massembler_no_warn : Flag<["-"], "massembler-no-warn">,
- HelpText<"Make assembler not emit warnings">,
- MarshallingInfoFlag<CodeGenOpts<"NoWarn">>;
- def massembler_fatal_warnings : Flag<["-"], "massembler-fatal-warnings">,
- HelpText<"Make assembler warnings fatal">,
- MarshallingInfoFlag<CodeGenOpts<"FatalWarnings">>;
- def mrelax_relocations_no : Flag<["-"], "mrelax-relocations=no">,
- HelpText<"Disable x86 relax relocations">,
- MarshallingInfoNegativeFlag<CodeGenOpts<"RelaxELFRelocations">>;
- def msave_temp_labels : Flag<["-"], "msave-temp-labels">,
- HelpText<"Save temporary labels in the symbol table. "
- "Note this may change .s semantics and shouldn't generally be used "
- "on compiler-generated code.">,
- MarshallingInfoFlag<CodeGenOpts<"SaveTempLabels">>;
- def mno_type_check : Flag<["-"], "mno-type-check">,
- HelpText<"Don't perform type checking of the assembly code (wasm only)">,
- MarshallingInfoFlag<CodeGenOpts<"NoTypeCheck">>;
- def fno_math_builtin : Flag<["-"], "fno-math-builtin">,
- HelpText<"Disable implicit builtin knowledge of math functions">,
- MarshallingInfoFlag<LangOpts<"NoMathBuiltin">>;
- def fno_use_ctor_homing: Flag<["-"], "fno-use-ctor-homing">,
- HelpText<"Don't use constructor homing for debug info">;
- def fuse_ctor_homing: Flag<["-"], "fuse-ctor-homing">,
- HelpText<"Use constructor homing if we are using limited debug info already">;
- def as_secure_log_file : Separate<["-"], "as-secure-log-file">,
- HelpText<"Emit .secure_log_unique directives to this filename.">,
- MarshallingInfoString<CodeGenOpts<"AsSecureLogFile">>;
- } // let Flags = [CC1Option, CC1AsOption, NoDriverOption]
- let Flags = [CC1Option, NoDriverOption] in {
- def disable_llvm_verifier : Flag<["-"], "disable-llvm-verifier">,
- HelpText<"Don't run the LLVM IR verifier pass">,
- MarshallingInfoNegativeFlag<CodeGenOpts<"VerifyModule">>;
- def disable_llvm_passes : Flag<["-"], "disable-llvm-passes">,
- HelpText<"Use together with -emit-llvm to get pristine LLVM IR from the "
- "frontend by not running any LLVM passes at all">,
- MarshallingInfoFlag<CodeGenOpts<"DisableLLVMPasses">>;
- def disable_llvm_optzns : Flag<["-"], "disable-llvm-optzns">,
- Alias<disable_llvm_passes>;
- def disable_lifetimemarkers : Flag<["-"], "disable-lifetime-markers">,
- HelpText<"Disable lifetime-markers emission even when optimizations are "
- "enabled">,
- MarshallingInfoFlag<CodeGenOpts<"DisableLifetimeMarkers">>;
- def disable_O0_optnone : Flag<["-"], "disable-O0-optnone">,
- HelpText<"Disable adding the optnone attribute to functions at O0">,
- MarshallingInfoFlag<CodeGenOpts<"DisableO0ImplyOptNone">>;
- def disable_red_zone : Flag<["-"], "disable-red-zone">,
- HelpText<"Do not emit code that uses the red zone.">,
- MarshallingInfoFlag<CodeGenOpts<"DisableRedZone">>;
- def dwarf_ext_refs : Flag<["-"], "dwarf-ext-refs">,
- HelpText<"Generate debug info with external references to clang modules"
- " or precompiled headers">,
- MarshallingInfoFlag<CodeGenOpts<"DebugTypeExtRefs">>;
- def dwarf_explicit_import : Flag<["-"], "dwarf-explicit-import">,
- HelpText<"Generate explicit import from anonymous namespace to containing"
- " scope">,
- MarshallingInfoFlag<CodeGenOpts<"DebugExplicitImport">>;
- def debug_forward_template_params : Flag<["-"], "debug-forward-template-params">,
- HelpText<"Emit complete descriptions of template parameters in forward"
- " declarations">,
- MarshallingInfoFlag<CodeGenOpts<"DebugFwdTemplateParams">>;
- def fforbid_guard_variables : Flag<["-"], "fforbid-guard-variables">,
- HelpText<"Emit an error if a C++ static local initializer would need a guard variable">,
- MarshallingInfoFlag<CodeGenOpts<"ForbidGuardVariables">>;
- def no_implicit_float : Flag<["-"], "no-implicit-float">,
- HelpText<"Don't generate implicit floating point or vector instructions">,
- MarshallingInfoFlag<CodeGenOpts<"NoImplicitFloat">>;
- def fdump_vtable_layouts : Flag<["-"], "fdump-vtable-layouts">,
- HelpText<"Dump the layouts of all vtables that will be emitted in a translation unit">,
- MarshallingInfoFlag<LangOpts<"DumpVTableLayouts">>;
- def fmerge_functions : Flag<["-"], "fmerge-functions">,
- HelpText<"Permit merging of identical functions when optimizing.">,
- MarshallingInfoFlag<CodeGenOpts<"MergeFunctions">>;
- def coverage_data_file : Separate<["-"], "coverage-data-file">,
- HelpText<"Emit coverage data to this filename.">,
- MarshallingInfoString<CodeGenOpts<"CoverageDataFile">>,
- ShouldParseIf<!strconcat(fprofile_arcs.KeyPath, "||", ftest_coverage.KeyPath)>;
- def coverage_data_file_EQ : Joined<["-"], "coverage-data-file=">,
- Alias<coverage_data_file>;
- def coverage_notes_file : Separate<["-"], "coverage-notes-file">,
- HelpText<"Emit coverage notes to this filename.">,
- MarshallingInfoString<CodeGenOpts<"CoverageNotesFile">>,
- ShouldParseIf<!strconcat(fprofile_arcs.KeyPath, "||", ftest_coverage.KeyPath)>;
- def coverage_notes_file_EQ : Joined<["-"], "coverage-notes-file=">,
- Alias<coverage_notes_file>;
- def coverage_version_EQ : Joined<["-"], "coverage-version=">,
- HelpText<"Four-byte version string for gcov files.">;
- def dump_coverage_mapping : Flag<["-"], "dump-coverage-mapping">,
- HelpText<"Dump the coverage mapping records, for testing">,
- MarshallingInfoFlag<CodeGenOpts<"DumpCoverageMapping">>;
- def fuse_register_sized_bitfield_access: Flag<["-"], "fuse-register-sized-bitfield-access">,
- HelpText<"Use register sized accesses to bit-fields, when possible.">,
- MarshallingInfoFlag<CodeGenOpts<"UseRegisterSizedBitfieldAccess">>;
- def relaxed_aliasing : Flag<["-"], "relaxed-aliasing">,
- HelpText<"Turn off Type Based Alias Analysis">,
- MarshallingInfoFlag<CodeGenOpts<"RelaxedAliasing">>;
- def no_struct_path_tbaa : Flag<["-"], "no-struct-path-tbaa">,
- HelpText<"Turn off struct-path aware Type Based Alias Analysis">,
- MarshallingInfoNegativeFlag<CodeGenOpts<"StructPathTBAA">>;
- def new_struct_path_tbaa : Flag<["-"], "new-struct-path-tbaa">,
- HelpText<"Enable enhanced struct-path aware Type Based Alias Analysis">;
- def mdebug_pass : Separate<["-"], "mdebug-pass">,
- HelpText<"Enable additional debug output">,
- MarshallingInfoString<CodeGenOpts<"DebugPass">>;
- def mframe_pointer_EQ : Joined<["-"], "mframe-pointer=">,
- HelpText<"Specify which frame pointers to retain.">, Values<"all,non-leaf,none">,
- NormalizedValuesScope<"CodeGenOptions::FramePointerKind">, NormalizedValues<["All", "NonLeaf", "None"]>,
- MarshallingInfoEnum<CodeGenOpts<"FramePointer">, "None">;
- def mabi_EQ_ieeelongdouble : Flag<["-"], "mabi=ieeelongdouble">,
- HelpText<"Use IEEE 754 quadruple-precision for long double">,
- MarshallingInfoFlag<LangOpts<"PPCIEEELongDouble">>;
- def mfloat_abi : Separate<["-"], "mfloat-abi">,
- HelpText<"The float ABI to use">,
- MarshallingInfoString<CodeGenOpts<"FloatABI">>;
- def mtp : Separate<["-"], "mtp">,
- HelpText<"Mode for reading thread pointer">;
- def mlimit_float_precision : Separate<["-"], "mlimit-float-precision">,
- HelpText<"Limit float precision to the given value">,
- MarshallingInfoString<CodeGenOpts<"LimitFloatPrecision">>;
- def mregparm : Separate<["-"], "mregparm">,
- HelpText<"Limit the number of registers available for integer arguments">,
- MarshallingInfoInt<CodeGenOpts<"NumRegisterParameters">>;
- def msmall_data_limit : Separate<["-"], "msmall-data-limit">,
- HelpText<"Put global and static data smaller than the limit into a special section">,
- MarshallingInfoInt<CodeGenOpts<"SmallDataLimit">>;
- def funwind_tables_EQ : Joined<["-"], "funwind-tables=">,
- HelpText<"Generate unwinding tables for all functions">,
- MarshallingInfoInt<CodeGenOpts<"UnwindTables">>;
- defm constructor_aliases : BoolOption<"m", "constructor-aliases",
- CodeGenOpts<"CXXCtorDtorAliases">, DefaultFalse,
- PosFlag<SetTrue, [], "Enable">, NegFlag<SetFalse, [], "Disable">,
- BothFlags<[CC1Option], " emitting complete constructors and destructors as aliases when possible">>;
- def mlink_bitcode_file : Separate<["-"], "mlink-bitcode-file">,
- HelpText<"Link the given bitcode file before performing optimizations.">;
- def mlink_builtin_bitcode : Separate<["-"], "mlink-builtin-bitcode">,
- HelpText<"Link and internalize needed symbols from the given bitcode file "
- "before performing optimizations.">;
- def vectorize_loops : Flag<["-"], "vectorize-loops">,
- HelpText<"Run the Loop vectorization passes">,
- MarshallingInfoFlag<CodeGenOpts<"VectorizeLoop">>;
- def vectorize_slp : Flag<["-"], "vectorize-slp">,
- HelpText<"Run the SLP vectorization passes">,
- MarshallingInfoFlag<CodeGenOpts<"VectorizeSLP">>;
- def dependent_lib : Joined<["--"], "dependent-lib=">,
- HelpText<"Add dependent library">,
- MarshallingInfoStringVector<CodeGenOpts<"DependentLibraries">>;
- def linker_option : Joined<["--"], "linker-option=">,
- HelpText<"Add linker option">,
- MarshallingInfoStringVector<CodeGenOpts<"LinkerOptions">>;
- def fsanitize_coverage_type : Joined<["-"], "fsanitize-coverage-type=">,
- HelpText<"Sanitizer coverage type">,
- MarshallingInfoInt<CodeGenOpts<"SanitizeCoverageType">>;
- def fsanitize_coverage_indirect_calls
- : Flag<["-"], "fsanitize-coverage-indirect-calls">,
- HelpText<"Enable sanitizer coverage for indirect calls">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageIndirectCalls">>;
- def fsanitize_coverage_trace_bb
- : Flag<["-"], "fsanitize-coverage-trace-bb">,
- HelpText<"Enable basic block tracing in sanitizer coverage">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageTraceBB">>;
- def fsanitize_coverage_trace_cmp
- : Flag<["-"], "fsanitize-coverage-trace-cmp">,
- HelpText<"Enable cmp instruction tracing in sanitizer coverage">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageTraceCmp">>;
- def fsanitize_coverage_trace_div
- : Flag<["-"], "fsanitize-coverage-trace-div">,
- HelpText<"Enable div instruction tracing in sanitizer coverage">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageTraceDiv">>;
- def fsanitize_coverage_trace_gep
- : Flag<["-"], "fsanitize-coverage-trace-gep">,
- HelpText<"Enable gep instruction tracing in sanitizer coverage">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageTraceGep">>;
- def fsanitize_coverage_8bit_counters
- : Flag<["-"], "fsanitize-coverage-8bit-counters">,
- HelpText<"Enable frequency counters in sanitizer coverage">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverage8bitCounters">>;
- def fsanitize_coverage_inline_8bit_counters
- : Flag<["-"], "fsanitize-coverage-inline-8bit-counters">,
- HelpText<"Enable inline 8-bit counters in sanitizer coverage">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageInline8bitCounters">>;
- def fsanitize_coverage_inline_bool_flag
- : Flag<["-"], "fsanitize-coverage-inline-bool-flag">,
- HelpText<"Enable inline bool flag in sanitizer coverage">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageInlineBoolFlag">>;
- def fsanitize_coverage_pc_table
- : Flag<["-"], "fsanitize-coverage-pc-table">,
- HelpText<"Create a table of coverage-instrumented PCs">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoveragePCTable">>;
- def fsanitize_coverage_control_flow
- : Flag<["-"], "fsanitize-coverage-control-flow">,
- HelpText<"Collect control flow of function">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageControlFlow">>;
- def fsanitize_coverage_trace_pc
- : Flag<["-"], "fsanitize-coverage-trace-pc">,
- HelpText<"Enable PC tracing in sanitizer coverage">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageTracePC">>;
- def fsanitize_coverage_trace_pc_guard
- : Flag<["-"], "fsanitize-coverage-trace-pc-guard">,
- HelpText<"Enable PC tracing with guard in sanitizer coverage">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageTracePCGuard">>;
- def fsanitize_coverage_no_prune
- : Flag<["-"], "fsanitize-coverage-no-prune">,
- HelpText<"Disable coverage pruning (i.e. instrument all blocks/edges)">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageNoPrune">>;
- def fsanitize_coverage_stack_depth
- : Flag<["-"], "fsanitize-coverage-stack-depth">,
- HelpText<"Enable max stack depth tracing">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageStackDepth">>;
- def fsanitize_coverage_trace_loads
- : Flag<["-"], "fsanitize-coverage-trace-loads">,
- HelpText<"Enable tracing of loads">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageTraceLoads">>;
- def fsanitize_coverage_trace_stores
- : Flag<["-"], "fsanitize-coverage-trace-stores">,
- HelpText<"Enable tracing of stores">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeCoverageTraceStores">>;
- def fexperimental_sanitize_metadata_EQ_covered
- : Flag<["-"], "fexperimental-sanitize-metadata=covered">,
- HelpText<"Emit PCs for code covered with binary analysis sanitizers">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeBinaryMetadataCovered">>;
- def fexperimental_sanitize_metadata_EQ_atomics
- : Flag<["-"], "fexperimental-sanitize-metadata=atomics">,
- HelpText<"Emit PCs for atomic operations used by binary analysis sanitizers">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeBinaryMetadataAtomics">>;
- def fexperimental_sanitize_metadata_EQ_uar
- : Flag<["-"], "fexperimental-sanitize-metadata=uar">,
- HelpText<"Emit PCs for start of functions that are subject for use-after-return checking.">,
- MarshallingInfoFlag<CodeGenOpts<"SanitizeBinaryMetadataUAR">>;
- def fpatchable_function_entry_offset_EQ
- : Joined<["-"], "fpatchable-function-entry-offset=">, MetaVarName<"<M>">,
- HelpText<"Generate M NOPs before function entry">,
- MarshallingInfoInt<CodeGenOpts<"PatchableFunctionEntryOffset">>;
- def fprofile_instrument_EQ : Joined<["-"], "fprofile-instrument=">,
- HelpText<"Enable PGO instrumentation">, Values<"none,clang,llvm,csllvm">,
- NormalizedValuesScope<"CodeGenOptions">,
- NormalizedValues<["ProfileNone", "ProfileClangInstr", "ProfileIRInstr", "ProfileCSIRInstr"]>,
- MarshallingInfoEnum<CodeGenOpts<"ProfileInstr">, "ProfileNone">;
- def fprofile_instrument_path_EQ : Joined<["-"], "fprofile-instrument-path=">,
- HelpText<"Generate instrumented code to collect execution counts into "
- "<file> (overridden by LLVM_PROFILE_FILE env var)">,
- MarshallingInfoString<CodeGenOpts<"InstrProfileOutput">>;
- def fprofile_instrument_use_path_EQ :
- Joined<["-"], "fprofile-instrument-use-path=">,
- HelpText<"Specify the profile path in PGO use compilation">,
- MarshallingInfoString<CodeGenOpts<"ProfileInstrumentUsePath">>;
- def flto_visibility_public_std:
- Flag<["-"], "flto-visibility-public-std">,
- HelpText<"Use public LTO visibility for classes in std and stdext namespaces">,
- MarshallingInfoFlag<CodeGenOpts<"LTOVisibilityPublicStd">>;
- defm lto_unit : BoolOption<"f", "lto-unit",
- CodeGenOpts<"LTOUnit">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Emit IR to support LTO unit features (CFI, whole program vtable opt)">,
- NegFlag<SetFalse>>;
- def fverify_debuginfo_preserve
- : Flag<["-"], "fverify-debuginfo-preserve">,
- HelpText<"Enable Debug Info Metadata preservation testing in "
- "optimizations.">,
- MarshallingInfoFlag<CodeGenOpts<"EnableDIPreservationVerify">>;
- def fverify_debuginfo_preserve_export
- : Joined<["-"], "fverify-debuginfo-preserve-export=">,
- MetaVarName<"<file>">,
- HelpText<"Export debug info (by testing original Debug Info) failures "
- "into specified (JSON) file (should be abs path as we use "
- "append mode to insert new JSON objects).">,
- MarshallingInfoString<CodeGenOpts<"DIBugsReportFilePath">>;
- def fwarn_stack_size_EQ
- : Joined<["-"], "fwarn-stack-size=">,
- MarshallingInfoInt<CodeGenOpts<"WarnStackSize">, "UINT_MAX">;
- // The driver option takes the key as a parameter to the -msign-return-address=
- // and -mbranch-protection= options, but CC1 has a separate option so we
- // don't have to parse the parameter twice.
- def msign_return_address_key_EQ : Joined<["-"], "msign-return-address-key=">,
- Values<"a_key,b_key">;
- def mbranch_target_enforce : Flag<["-"], "mbranch-target-enforce">,
- MarshallingInfoFlag<LangOpts<"BranchTargetEnforcement">>;
- def fno_dllexport_inlines : Flag<["-"], "fno-dllexport-inlines">,
- MarshallingInfoNegativeFlag<LangOpts<"DllExportInlines">>;
- def cfguard_no_checks : Flag<["-"], "cfguard-no-checks">,
- HelpText<"Emit Windows Control Flow Guard tables only (no checks)">,
- MarshallingInfoFlag<CodeGenOpts<"ControlFlowGuardNoChecks">>;
- def cfguard : Flag<["-"], "cfguard">,
- HelpText<"Emit Windows Control Flow Guard tables and checks">,
- MarshallingInfoFlag<CodeGenOpts<"ControlFlowGuard">>;
- def ehcontguard : Flag<["-"], "ehcontguard">,
- HelpText<"Emit Windows EH Continuation Guard tables">,
- MarshallingInfoFlag<CodeGenOpts<"EHContGuard">>;
- def fdenormal_fp_math_f32_EQ : Joined<["-"], "fdenormal-fp-math-f32=">,
- Group<f_Group>;
- def fctor_dtor_return_this : Flag<["-"], "fctor-dtor-return-this">,
- HelpText<"Change the C++ ABI to returning `this` pointer from constructors "
- "and non-deleting destructors. (No effect on Microsoft ABI)">,
- MarshallingInfoFlag<CodeGenOpts<"CtorDtorReturnThis">>;
- defm experimental_assignment_tracking :
- BoolOption<"f", "experimental-assignment-tracking",
- CodeGenOpts<"EnableAssignmentTracking">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>, BothFlags<[CoreOption]>>,
- Group<f_Group>;
- } // let Flags = [CC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // Dependency Output Options
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, NoDriverOption] in {
- def sys_header_deps : Flag<["-"], "sys-header-deps">,
- HelpText<"Include system headers in dependency output">,
- MarshallingInfoFlag<DependencyOutputOpts<"IncludeSystemHeaders">>;
- def module_file_deps : Flag<["-"], "module-file-deps">,
- HelpText<"Include module files in dependency output">,
- MarshallingInfoFlag<DependencyOutputOpts<"IncludeModuleFiles">>;
- def header_include_file : Separate<["-"], "header-include-file">,
- HelpText<"Filename (or -) to write header include output to">,
- MarshallingInfoString<DependencyOutputOpts<"HeaderIncludeOutputFile">>;
- def header_include_format_EQ : Joined<["-"], "header-include-format=">,
- HelpText<"set format in which header info is emitted">,
- Values<"textual,json">, NormalizedValues<["HIFMT_Textual", "HIFMT_JSON"]>,
- MarshallingInfoEnum<DependencyOutputOpts<"HeaderIncludeFormat">, "HIFMT_Textual">;
- def header_include_filtering_EQ : Joined<["-"], "header-include-filtering=">,
- HelpText<"set the flag that enables filtering header information">,
- Values<"none,only-direct-system">, NormalizedValues<["HIFIL_None", "HIFIL_Only_Direct_System"]>,
- MarshallingInfoEnum<DependencyOutputOpts<"HeaderIncludeFiltering">, "HIFIL_None">;
- def show_includes : Flag<["--"], "show-includes">,
- HelpText<"Print cl.exe style /showIncludes to stdout">;
- } // let Flags = [CC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // Diagnostic Options
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, NoDriverOption] in {
- def diagnostic_log_file : Separate<["-"], "diagnostic-log-file">,
- HelpText<"Filename (or -) to log diagnostics to">,
- MarshallingInfoString<DiagnosticOpts<"DiagnosticLogFile">>;
- def diagnostic_serialized_file : Separate<["-"], "serialize-diagnostic-file">,
- MetaVarName<"<filename>">,
- HelpText<"File for serializing diagnostics in a binary format">;
- def fdiagnostics_format : Separate<["-"], "fdiagnostics-format">,
- HelpText<"Change diagnostic formatting to match IDE and command line tools">,
- Values<"clang,msvc,vi,sarif,SARIF">,
- NormalizedValuesScope<"DiagnosticOptions">, NormalizedValues<["Clang", "MSVC", "Vi", "SARIF", "SARIF"]>,
- MarshallingInfoEnum<DiagnosticOpts<"Format">, "Clang">;
- def fdiagnostics_show_category : Separate<["-"], "fdiagnostics-show-category">,
- HelpText<"Print diagnostic category">,
- Values<"none,id,name">,
- NormalizedValues<["0", "1", "2"]>,
- MarshallingInfoEnum<DiagnosticOpts<"ShowCategories">, "0">;
- def fno_diagnostics_use_presumed_location : Flag<["-"], "fno-diagnostics-use-presumed-location">,
- HelpText<"Ignore #line directives when displaying diagnostic locations">,
- MarshallingInfoNegativeFlag<DiagnosticOpts<"ShowPresumedLoc">>;
- def ftabstop : Separate<["-"], "ftabstop">, MetaVarName<"<N>">,
- HelpText<"Set the tab stop distance.">,
- MarshallingInfoInt<DiagnosticOpts<"TabStop">, "DiagnosticOptions::DefaultTabStop">;
- def ferror_limit : Separate<["-"], "ferror-limit">, MetaVarName<"<N>">,
- HelpText<"Set the maximum number of errors to emit before stopping (0 = no limit).">,
- MarshallingInfoInt<DiagnosticOpts<"ErrorLimit">>;
- def fmacro_backtrace_limit : Separate<["-"], "fmacro-backtrace-limit">, MetaVarName<"<N>">,
- HelpText<"Set the maximum number of entries to print in a macro expansion backtrace (0 = no limit).">,
- MarshallingInfoInt<DiagnosticOpts<"MacroBacktraceLimit">, "DiagnosticOptions::DefaultMacroBacktraceLimit">;
- def ftemplate_backtrace_limit : Separate<["-"], "ftemplate-backtrace-limit">, MetaVarName<"<N>">,
- HelpText<"Set the maximum number of entries to print in a template instantiation backtrace (0 = no limit).">,
- MarshallingInfoInt<DiagnosticOpts<"TemplateBacktraceLimit">, "DiagnosticOptions::DefaultTemplateBacktraceLimit">;
- def fconstexpr_backtrace_limit : Separate<["-"], "fconstexpr-backtrace-limit">, MetaVarName<"<N>">,
- HelpText<"Set the maximum number of entries to print in a constexpr evaluation backtrace (0 = no limit).">,
- MarshallingInfoInt<DiagnosticOpts<"ConstexprBacktraceLimit">, "DiagnosticOptions::DefaultConstexprBacktraceLimit">;
- def fspell_checking_limit : Separate<["-"], "fspell-checking-limit">, MetaVarName<"<N>">,
- HelpText<"Set the maximum number of times to perform spell checking on unrecognized identifiers (0 = no limit).">,
- MarshallingInfoInt<DiagnosticOpts<"SpellCheckingLimit">, "DiagnosticOptions::DefaultSpellCheckingLimit">;
- def fcaret_diagnostics_max_lines :
- Separate<["-"], "fcaret-diagnostics-max-lines">, MetaVarName<"<N>">,
- HelpText<"Set the maximum number of source lines to show in a caret diagnostic">,
- MarshallingInfoInt<DiagnosticOpts<"SnippetLineLimit">, "DiagnosticOptions::DefaultSnippetLineLimit">;
- def verify_EQ : CommaJoined<["-"], "verify=">,
- MetaVarName<"<prefixes>">,
- HelpText<"Verify diagnostic output using comment directives that start with"
- " prefixes in the comma-separated sequence <prefixes>">;
- def verify : Flag<["-"], "verify">,
- HelpText<"Equivalent to -verify=expected">;
- def verify_ignore_unexpected : Flag<["-"], "verify-ignore-unexpected">,
- HelpText<"Ignore unexpected diagnostic messages">;
- def verify_ignore_unexpected_EQ : CommaJoined<["-"], "verify-ignore-unexpected=">,
- HelpText<"Ignore unexpected diagnostic messages">;
- def Wno_rewrite_macros : Flag<["-"], "Wno-rewrite-macros">,
- HelpText<"Silence ObjC rewriting warnings">,
- MarshallingInfoFlag<DiagnosticOpts<"NoRewriteMacros">>;
- } // let Flags = [CC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // Frontend Options
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, NoDriverOption] in {
- // This isn't normally used, it is just here so we can parse a
- // CompilerInvocation out of a driver-derived argument vector.
- def cc1 : Flag<["-"], "cc1">;
- def cc1as : Flag<["-"], "cc1as">;
- def ast_merge : Separate<["-"], "ast-merge">,
- MetaVarName<"<ast file>">,
- HelpText<"Merge the given AST file into the translation unit being compiled.">,
- MarshallingInfoStringVector<FrontendOpts<"ASTMergeFiles">>;
- def aux_target_cpu : Separate<["-"], "aux-target-cpu">,
- HelpText<"Target a specific auxiliary cpu type">;
- def aux_target_feature : Separate<["-"], "aux-target-feature">,
- HelpText<"Target specific auxiliary attributes">;
- def aux_triple : Separate<["-"], "aux-triple">,
- HelpText<"Auxiliary target triple.">,
- MarshallingInfoString<FrontendOpts<"AuxTriple">>;
- def code_completion_at : Separate<["-"], "code-completion-at">,
- MetaVarName<"<file>:<line>:<column>">,
- HelpText<"Dump code-completion information at a location">;
- def remap_file : Separate<["-"], "remap-file">,
- MetaVarName<"<from>;<to>">,
- HelpText<"Replace the contents of the <from> file with the contents of the <to> file">;
- def code_completion_at_EQ : Joined<["-"], "code-completion-at=">,
- Alias<code_completion_at>;
- def code_completion_macros : Flag<["-"], "code-completion-macros">,
- HelpText<"Include macros in code-completion results">,
- MarshallingInfoFlag<FrontendOpts<"CodeCompleteOpts.IncludeMacros">>;
- def code_completion_patterns : Flag<["-"], "code-completion-patterns">,
- HelpText<"Include code patterns in code-completion results">,
- MarshallingInfoFlag<FrontendOpts<"CodeCompleteOpts.IncludeCodePatterns">>;
- def no_code_completion_globals : Flag<["-"], "no-code-completion-globals">,
- HelpText<"Do not include global declarations in code-completion results.">,
- MarshallingInfoNegativeFlag<FrontendOpts<"CodeCompleteOpts.IncludeGlobals">>;
- def no_code_completion_ns_level_decls : Flag<["-"], "no-code-completion-ns-level-decls">,
- HelpText<"Do not include declarations inside namespaces (incl. global namespace) in the code-completion results.">,
- MarshallingInfoNegativeFlag<FrontendOpts<"CodeCompleteOpts.IncludeNamespaceLevelDecls">>;
- def code_completion_brief_comments : Flag<["-"], "code-completion-brief-comments">,
- HelpText<"Include brief documentation comments in code-completion results.">,
- MarshallingInfoFlag<FrontendOpts<"CodeCompleteOpts.IncludeBriefComments">>;
- def code_completion_with_fixits : Flag<["-"], "code-completion-with-fixits">,
- HelpText<"Include code completion results which require small fix-its.">,
- MarshallingInfoFlag<FrontendOpts<"CodeCompleteOpts.IncludeFixIts">>;
- def disable_free : Flag<["-"], "disable-free">,
- HelpText<"Disable freeing of memory on exit">,
- MarshallingInfoFlag<FrontendOpts<"DisableFree">>;
- defm clear_ast_before_backend : BoolOption<"",
- "clear-ast-before-backend",
- CodeGenOpts<"ClearASTBeforeBackend">,
- DefaultFalse,
- PosFlag<SetTrue, [], "Clear">,
- NegFlag<SetFalse, [], "Don't clear">,
- BothFlags<[], " the Clang AST before running backend code generation">>;
- defm enable_noundef_analysis : BoolOption<"",
- "enable-noundef-analysis",
- CodeGenOpts<"EnableNoundefAttrs">,
- DefaultTrue,
- PosFlag<SetTrue, [], "Enable">,
- NegFlag<SetFalse, [], "Disable">,
- BothFlags<[], " analyzing function argument and return types for mandatory definedness">>;
- defm opaque_pointers : BoolOption<"",
- "opaque-pointers",
- CodeGenOpts<"OpaquePointers">,
- DefaultTrue,
- PosFlag<SetTrue, [], "Enable">,
- NegFlag<SetFalse, [], "Disable">,
- BothFlags<[], " opaque pointers">>;
- def discard_value_names : Flag<["-"], "discard-value-names">,
- HelpText<"Discard value names in LLVM IR">,
- MarshallingInfoFlag<CodeGenOpts<"DiscardValueNames">>;
- def plugin_arg : JoinedAndSeparate<["-"], "plugin-arg-">,
- MetaVarName<"<name> <arg>">,
- HelpText<"Pass <arg> to plugin <name>">;
- def add_plugin : Separate<["-"], "add-plugin">, MetaVarName<"<name>">,
- HelpText<"Use the named plugin action in addition to the default action">,
- MarshallingInfoStringVector<FrontendOpts<"AddPluginActions">>;
- def ast_dump_filter : Separate<["-"], "ast-dump-filter">,
- MetaVarName<"<dump_filter>">,
- HelpText<"Use with -ast-dump or -ast-print to dump/print only AST declaration"
- " nodes having a certain substring in a qualified name. Use"
- " -ast-list to list all filterable declaration node names.">,
- MarshallingInfoString<FrontendOpts<"ASTDumpFilter">>;
- def ast_dump_filter_EQ : Joined<["-"], "ast-dump-filter=">,
- Alias<ast_dump_filter>;
- def fno_modules_global_index : Flag<["-"], "fno-modules-global-index">,
- HelpText<"Do not automatically generate or update the global module index">,
- MarshallingInfoNegativeFlag<FrontendOpts<"UseGlobalModuleIndex">>;
- def fno_modules_error_recovery : Flag<["-"], "fno-modules-error-recovery">,
- HelpText<"Do not automatically import modules for error recovery">,
- MarshallingInfoNegativeFlag<LangOpts<"ModulesErrorRecovery">>;
- def fmodule_map_file_home_is_cwd : Flag<["-"], "fmodule-map-file-home-is-cwd">,
- HelpText<"Use the current working directory as the home directory of "
- "module maps specified by -fmodule-map-file=<FILE>">,
- MarshallingInfoFlag<HeaderSearchOpts<"ModuleMapFileHomeIsCwd">>;
- def fmodule_file_home_is_cwd : Flag<["-"], "fmodule-file-home-is-cwd">,
- HelpText<"Use the current working directory as the base directory of "
- "compiled module files.">,
- MarshallingInfoFlag<HeaderSearchOpts<"ModuleFileHomeIsCwd">>;
- def fmodule_feature : Separate<["-"], "fmodule-feature">,
- MetaVarName<"<feature>">,
- HelpText<"Enable <feature> in module map requires declarations">,
- MarshallingInfoStringVector<LangOpts<"ModuleFeatures">>;
- def fmodules_embed_file_EQ : Joined<["-"], "fmodules-embed-file=">,
- MetaVarName<"<file>">,
- HelpText<"Embed the contents of the specified file into the module file "
- "being compiled.">,
- MarshallingInfoStringVector<FrontendOpts<"ModulesEmbedFiles">>;
- def fmodules_embed_all_files : Joined<["-"], "fmodules-embed-all-files">,
- HelpText<"Embed the contents of all files read by this compilation into "
- "the produced module file.">,
- MarshallingInfoFlag<FrontendOpts<"ModulesEmbedAllFiles">>;
- defm fimplicit_modules_use_lock : BoolOption<"f", "implicit-modules-use-lock",
- FrontendOpts<"BuildingImplicitModuleUsesLock">, DefaultTrue,
- NegFlag<SetFalse>,
- PosFlag<SetTrue, [],
- "Use filesystem locks for implicit modules builds to avoid "
- "duplicating work in competing clang invocations.">>;
- // FIXME: We only need this in C++ modules / Modules TS if we might textually
- // enter a different module (eg, when building a header unit).
- def fmodules_local_submodule_visibility :
- Flag<["-"], "fmodules-local-submodule-visibility">,
- HelpText<"Enforce name visibility rules across submodules of the same "
- "top-level module.">,
- MarshallingInfoFlag<LangOpts<"ModulesLocalVisibility">>,
- ImpliedByAnyOf<[fmodules_ts.KeyPath, fcxx_modules.KeyPath]>;
- def fmodules_codegen :
- Flag<["-"], "fmodules-codegen">,
- HelpText<"Generate code for uses of this module that assumes an explicit "
- "object file will be built for the module">,
- MarshallingInfoFlag<LangOpts<"ModulesCodegen">>;
- def fmodules_debuginfo :
- Flag<["-"], "fmodules-debuginfo">,
- HelpText<"Generate debug info for types in an object file built from this "
- "module and do not generate them elsewhere">,
- MarshallingInfoFlag<LangOpts<"ModulesDebugInfo">>;
- def fmodule_format_EQ : Joined<["-"], "fmodule-format=">,
- HelpText<"Select the container format for clang modules and PCH. "
- "Supported options are 'raw' and 'obj'.">,
- MarshallingInfoString<HeaderSearchOpts<"ModuleFormat">, [{"raw"}]>;
- def ftest_module_file_extension_EQ :
- Joined<["-"], "ftest-module-file-extension=">,
- HelpText<"introduce a module file extension for testing purposes. "
- "The argument is parsed as blockname:major:minor:hashed:user info">;
- defm recovery_ast : BoolOption<"f", "recovery-ast",
- LangOpts<"RecoveryAST">, DefaultTrue,
- NegFlag<SetFalse>, PosFlag<SetTrue, [], "Preserve expressions in AST rather "
- "than dropping them when encountering semantic errors">>;
- defm recovery_ast_type : BoolOption<"f", "recovery-ast-type",
- LangOpts<"RecoveryASTType">, DefaultTrue,
- NegFlag<SetFalse>, PosFlag<SetTrue, [], "Preserve the type for recovery "
- "expressions when possible">>;
- let Group = Action_Group in {
- def Eonly : Flag<["-"], "Eonly">,
- HelpText<"Just run preprocessor, no output (for timings)">;
- def dump_raw_tokens : Flag<["-"], "dump-raw-tokens">,
- HelpText<"Lex file in raw mode and dump raw tokens">;
- def analyze : Flag<["-"], "analyze">,
- HelpText<"Run static analysis engine">;
- def dump_tokens : Flag<["-"], "dump-tokens">,
- HelpText<"Run preprocessor, dump internal rep of tokens">;
- def fixit : Flag<["-"], "fixit">,
- HelpText<"Apply fix-it advice to the input source">;
- def fixit_EQ : Joined<["-"], "fixit=">,
- HelpText<"Apply fix-it advice creating a file with the given suffix">;
- def print_preamble : Flag<["-"], "print-preamble">,
- HelpText<"Print the \"preamble\" of a file, which is a candidate for implicit"
- " precompiled headers.">;
- def emit_html : Flag<["-"], "emit-html">,
- HelpText<"Output input source as HTML">;
- def ast_print : Flag<["-"], "ast-print">,
- HelpText<"Build ASTs and then pretty-print them">;
- def ast_list : Flag<["-"], "ast-list">,
- HelpText<"Build ASTs and print the list of declaration node qualified names">;
- def ast_dump : Flag<["-"], "ast-dump">,
- HelpText<"Build ASTs and then debug dump them">;
- def ast_dump_EQ : Joined<["-"], "ast-dump=">,
- HelpText<"Build ASTs and then debug dump them in the specified format. "
- "Supported formats include: default, json">;
- def ast_dump_all : Flag<["-"], "ast-dump-all">,
- HelpText<"Build ASTs and then debug dump them, forcing deserialization">;
- def ast_dump_all_EQ : Joined<["-"], "ast-dump-all=">,
- HelpText<"Build ASTs and then debug dump them in the specified format, "
- "forcing deserialization. Supported formats include: default, json">;
- def ast_dump_decl_types : Flag<["-"], "ast-dump-decl-types">,
- HelpText<"Include declaration types in AST dumps">,
- MarshallingInfoFlag<FrontendOpts<"ASTDumpDeclTypes">>;
- def templight_dump : Flag<["-"], "templight-dump">,
- HelpText<"Dump templight information to stdout">;
- def ast_dump_lookups : Flag<["-"], "ast-dump-lookups">,
- HelpText<"Build ASTs and then debug dump their name lookup tables">,
- MarshallingInfoFlag<FrontendOpts<"ASTDumpLookups">>;
- def ast_view : Flag<["-"], "ast-view">,
- HelpText<"Build ASTs and view them with GraphViz">;
- def emit_module : Flag<["-"], "emit-module">,
- HelpText<"Generate pre-compiled module file from a module map">;
- def emit_module_interface : Flag<["-"], "emit-module-interface">,
- HelpText<"Generate pre-compiled module file from a C++ module interface">;
- def emit_header_unit : Flag<["-"], "emit-header-unit">,
- HelpText<"Generate C++20 header units from header files">;
- def emit_pch : Flag<["-"], "emit-pch">,
- HelpText<"Generate pre-compiled header file">;
- def emit_llvm_only : Flag<["-"], "emit-llvm-only">,
- HelpText<"Build ASTs and convert to LLVM, discarding output">;
- def emit_codegen_only : Flag<["-"], "emit-codegen-only">,
- HelpText<"Generate machine code, but discard output">;
- def rewrite_test : Flag<["-"], "rewrite-test">,
- HelpText<"Rewriter playground">;
- def rewrite_macros : Flag<["-"], "rewrite-macros">,
- HelpText<"Expand macros without full preprocessing">;
- def migrate : Flag<["-"], "migrate">,
- HelpText<"Migrate source code">;
- def compiler_options_dump : Flag<["-"], "compiler-options-dump">,
- HelpText<"Dump the compiler configuration options">;
- def print_dependency_directives_minimized_source : Flag<["-"],
- "print-dependency-directives-minimized-source">,
- HelpText<"Print the output of the dependency directives source minimizer">;
- }
- defm emit_llvm_uselists : BoolOption<"", "emit-llvm-uselists",
- CodeGenOpts<"EmitLLVMUseLists">, DefaultFalse,
- PosFlag<SetTrue, [], "Preserve">,
- NegFlag<SetFalse, [], "Don't preserve">,
- BothFlags<[], " order of LLVM use-lists when serializing">>;
- def mt_migrate_directory : Separate<["-"], "mt-migrate-directory">,
- HelpText<"Directory for temporary files produced during ARC or ObjC migration">,
- MarshallingInfoString<FrontendOpts<"MTMigrateDir">>;
- def arcmt_action_EQ : Joined<["-"], "arcmt-action=">, Flags<[CC1Option, NoDriverOption]>,
- HelpText<"The ARC migration action to take">,
- Values<"check,modify,migrate">,
- NormalizedValuesScope<"FrontendOptions">,
- NormalizedValues<["ARCMT_Check", "ARCMT_Modify", "ARCMT_Migrate"]>,
- MarshallingInfoEnum<FrontendOpts<"ARCMTAction">, "ARCMT_None">;
- def opt_record_file : Separate<["-"], "opt-record-file">,
- HelpText<"File name to use for YAML optimization record output">,
- MarshallingInfoString<CodeGenOpts<"OptRecordFile">>;
- def opt_record_passes : Separate<["-"], "opt-record-passes">,
- HelpText<"Only record remark information for passes whose names match the given regular expression">;
- def opt_record_format : Separate<["-"], "opt-record-format">,
- HelpText<"The format used for serializing remarks (default: YAML)">;
- def print_stats : Flag<["-"], "print-stats">,
- HelpText<"Print performance metrics and statistics">,
- MarshallingInfoFlag<FrontendOpts<"ShowStats">>;
- def stats_file : Joined<["-"], "stats-file=">,
- HelpText<"Filename to write statistics to">,
- MarshallingInfoString<FrontendOpts<"StatsFile">>;
- def fdump_record_layouts_simple : Flag<["-"], "fdump-record-layouts-simple">,
- HelpText<"Dump record layout information in a simple form used for testing">,
- MarshallingInfoFlag<LangOpts<"DumpRecordLayoutsSimple">>;
- def fdump_record_layouts_canonical : Flag<["-"], "fdump-record-layouts-canonical">,
- HelpText<"Dump record layout information with canonical field types">,
- MarshallingInfoFlag<LangOpts<"DumpRecordLayoutsCanonical">>;
- def fdump_record_layouts_complete : Flag<["-"], "fdump-record-layouts-complete">,
- HelpText<"Dump record layout information for all complete types">,
- MarshallingInfoFlag<LangOpts<"DumpRecordLayoutsComplete">>;
- def fdump_record_layouts : Flag<["-"], "fdump-record-layouts">,
- HelpText<"Dump record layout information">,
- MarshallingInfoFlag<LangOpts<"DumpRecordLayouts">>,
- ImpliedByAnyOf<[fdump_record_layouts_simple.KeyPath, fdump_record_layouts_complete.KeyPath, fdump_record_layouts_canonical.KeyPath]>;
- def fix_what_you_can : Flag<["-"], "fix-what-you-can">,
- HelpText<"Apply fix-it advice even in the presence of unfixable errors">,
- MarshallingInfoFlag<FrontendOpts<"FixWhatYouCan">>;
- def fix_only_warnings : Flag<["-"], "fix-only-warnings">,
- HelpText<"Apply fix-it advice only for warnings, not errors">,
- MarshallingInfoFlag<FrontendOpts<"FixOnlyWarnings">>;
- def fixit_recompile : Flag<["-"], "fixit-recompile">,
- HelpText<"Apply fix-it changes and recompile">,
- MarshallingInfoFlag<FrontendOpts<"FixAndRecompile">>;
- def fixit_to_temp : Flag<["-"], "fixit-to-temporary">,
- HelpText<"Apply fix-it changes to temporary files">,
- MarshallingInfoFlag<FrontendOpts<"FixToTemporaries">>;
- def foverride_record_layout_EQ : Joined<["-"], "foverride-record-layout=">,
- HelpText<"Override record layouts with those in the given file">,
- MarshallingInfoString<FrontendOpts<"OverrideRecordLayoutsFile">>;
- def pch_through_header_EQ : Joined<["-"], "pch-through-header=">,
- HelpText<"Stop PCH generation after including this file. When using a PCH, "
- "skip tokens until after this file is included.">,
- MarshallingInfoString<PreprocessorOpts<"PCHThroughHeader">>;
- def pch_through_hdrstop_create : Flag<["-"], "pch-through-hdrstop-create">,
- HelpText<"When creating a PCH, stop PCH generation after #pragma hdrstop.">,
- MarshallingInfoFlag<PreprocessorOpts<"PCHWithHdrStopCreate">>;
- def pch_through_hdrstop_use : Flag<["-"], "pch-through-hdrstop-use">,
- HelpText<"When using a PCH, skip tokens until after a #pragma hdrstop.">;
- def fno_pch_timestamp : Flag<["-"], "fno-pch-timestamp">,
- HelpText<"Disable inclusion of timestamp in precompiled headers">,
- MarshallingInfoNegativeFlag<FrontendOpts<"IncludeTimestamps">>;
- def building_pch_with_obj : Flag<["-"], "building-pch-with-obj">,
- HelpText<"This compilation is part of building a PCH with corresponding object file.">,
- MarshallingInfoFlag<LangOpts<"BuildingPCHWithObjectFile">>;
- def aligned_alloc_unavailable : Flag<["-"], "faligned-alloc-unavailable">,
- HelpText<"Aligned allocation/deallocation functions are unavailable">,
- MarshallingInfoFlag<LangOpts<"AlignedAllocationUnavailable">>,
- ShouldParseIf<faligned_allocation.KeyPath>;
- } // let Flags = [CC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // Language Options
- //===----------------------------------------------------------------------===//
- def version : Flag<["-"], "version">,
- HelpText<"Print the compiler version">,
- Flags<[CC1Option, CC1AsOption, FC1Option, NoDriverOption]>,
- MarshallingInfoFlag<FrontendOpts<"ShowVersion">>;
- def main_file_name : Separate<["-"], "main-file-name">,
- HelpText<"Main file name to use for debug info and source if missing">,
- Flags<[CC1Option, CC1AsOption, NoDriverOption]>,
- MarshallingInfoString<CodeGenOpts<"MainFileName">>;
- def split_dwarf_output : Separate<["-"], "split-dwarf-output">,
- HelpText<"File name to use for split dwarf debug info output">,
- Flags<[CC1Option, CC1AsOption, NoDriverOption]>,
- MarshallingInfoString<CodeGenOpts<"SplitDwarfOutput">>;
- let Flags = [CC1Option, FC1Option, NoDriverOption] in {
- def mreassociate : Flag<["-"], "mreassociate">,
- HelpText<"Allow reassociation transformations for floating-point instructions">,
- MarshallingInfoFlag<LangOpts<"AllowFPReassoc">>, ImpliedByAnyOf<[funsafe_math_optimizations.KeyPath]>;
- def menable_no_nans : Flag<["-"], "menable-no-nans">,
- HelpText<"Allow optimization to assume there are no NaNs.">,
- MarshallingInfoFlag<LangOpts<"NoHonorNaNs">>, ImpliedByAnyOf<[ffinite_math_only.KeyPath]>;
- def menable_no_infinities : Flag<["-"], "menable-no-infs">,
- HelpText<"Allow optimization to assume there are no infinities.">,
- MarshallingInfoFlag<LangOpts<"NoHonorInfs">>, ImpliedByAnyOf<[ffinite_math_only.KeyPath]>;
- def pic_level : Separate<["-"], "pic-level">,
- HelpText<"Value for __PIC__">,
- MarshallingInfoInt<LangOpts<"PICLevel">>;
- def pic_is_pie : Flag<["-"], "pic-is-pie">,
- HelpText<"File is for a position independent executable">,
- MarshallingInfoFlag<LangOpts<"PIE">>;
- } // let Flags = [CC1Option, FC1Option, NoDriverOption]
- let Flags = [CC1Option, NoDriverOption] in {
- def fblocks_runtime_optional : Flag<["-"], "fblocks-runtime-optional">,
- HelpText<"Weakly link in the blocks runtime">,
- MarshallingInfoFlag<LangOpts<"BlocksRuntimeOptional">>;
- def fexternc_nounwind : Flag<["-"], "fexternc-nounwind">,
- HelpText<"Assume all functions with C linkage do not unwind">,
- MarshallingInfoFlag<LangOpts<"ExternCNoUnwind">>;
- def split_dwarf_file : Separate<["-"], "split-dwarf-file">,
- HelpText<"Name of the split dwarf debug info file to encode in the object file">,
- MarshallingInfoString<CodeGenOpts<"SplitDwarfFile">>;
- def fno_wchar : Flag<["-"], "fno-wchar">,
- HelpText<"Disable C++ builtin type wchar_t">,
- MarshallingInfoNegativeFlag<LangOpts<"WChar">, cplusplus.KeyPath>,
- ShouldParseIf<cplusplus.KeyPath>;
- def fconstant_string_class : Separate<["-"], "fconstant-string-class">,
- MetaVarName<"<class name>">,
- HelpText<"Specify the class to use for constant Objective-C string objects.">,
- MarshallingInfoString<LangOpts<"ObjCConstantStringClass">>;
- def fobjc_arc_cxxlib_EQ : Joined<["-"], "fobjc-arc-cxxlib=">,
- HelpText<"Objective-C++ Automatic Reference Counting standard library kind">,
- Values<"libc++,libstdc++,none">,
- NormalizedValues<["ARCXX_libcxx", "ARCXX_libstdcxx", "ARCXX_nolib"]>,
- MarshallingInfoEnum<PreprocessorOpts<"ObjCXXARCStandardLibrary">, "ARCXX_nolib">;
- def fobjc_runtime_has_weak : Flag<["-"], "fobjc-runtime-has-weak">,
- HelpText<"The target Objective-C runtime supports ARC weak operations">;
- def fobjc_dispatch_method_EQ : Joined<["-"], "fobjc-dispatch-method=">,
- HelpText<"Objective-C dispatch method to use">,
- Values<"legacy,non-legacy,mixed">,
- NormalizedValuesScope<"CodeGenOptions">, NormalizedValues<["Legacy", "NonLegacy", "Mixed"]>,
- MarshallingInfoEnum<CodeGenOpts<"ObjCDispatchMethod">, "Legacy">;
- def disable_objc_default_synthesize_properties : Flag<["-"], "disable-objc-default-synthesize-properties">,
- HelpText<"disable the default synthesis of Objective-C properties">,
- MarshallingInfoNegativeFlag<LangOpts<"ObjCDefaultSynthProperties">>;
- def fencode_extended_block_signature : Flag<["-"], "fencode-extended-block-signature">,
- HelpText<"enable extended encoding of block type signature">,
- MarshallingInfoFlag<LangOpts<"EncodeExtendedBlockSig">>;
- def function_alignment : Separate<["-"], "function-alignment">,
- HelpText<"default alignment for functions">,
- MarshallingInfoInt<LangOpts<"FunctionAlignment">>;
- def fhalf_no_semantic_interposition : Flag<["-"], "fhalf-no-semantic-interposition">,
- HelpText<"Like -fno-semantic-interposition but don't use local aliases">,
- MarshallingInfoFlag<LangOpts<"HalfNoSemanticInterposition">>;
- def fno_validate_pch : Flag<["-"], "fno-validate-pch">,
- HelpText<"Disable validation of precompiled headers">,
- MarshallingInfoFlag<PreprocessorOpts<"DisablePCHOrModuleValidation">, "DisableValidationForModuleKind::None">,
- Normalizer<"makeFlagToValueNormalizer(DisableValidationForModuleKind::All)">;
- def fallow_pcm_with_errors : Flag<["-"], "fallow-pcm-with-compiler-errors">,
- HelpText<"Accept a PCM file that was created with compiler errors">,
- MarshallingInfoFlag<FrontendOpts<"AllowPCMWithCompilerErrors">>;
- def fallow_pch_with_errors : Flag<["-"], "fallow-pch-with-compiler-errors">,
- HelpText<"Accept a PCH file that was created with compiler errors">,
- MarshallingInfoFlag<PreprocessorOpts<"AllowPCHWithCompilerErrors">>,
- ImpliedByAnyOf<[fallow_pcm_with_errors.KeyPath]>;
- def fallow_pch_with_different_modules_cache_path :
- Flag<["-"], "fallow-pch-with-different-modules-cache-path">,
- HelpText<"Accept a PCH file that was created with a different modules cache path">,
- MarshallingInfoFlag<PreprocessorOpts<"AllowPCHWithDifferentModulesCachePath">>;
- def fno_modules_share_filemanager : Flag<["-"], "fno-modules-share-filemanager">,
- HelpText<"Disable sharing the FileManager when building a module implicitly">,
- MarshallingInfoNegativeFlag<FrontendOpts<"ModulesShareFileManager">>;
- def dump_deserialized_pch_decls : Flag<["-"], "dump-deserialized-decls">,
- HelpText<"Dump declarations that are deserialized from PCH, for testing">,
- MarshallingInfoFlag<PreprocessorOpts<"DumpDeserializedPCHDecls">>;
- def error_on_deserialized_pch_decl : Separate<["-"], "error-on-deserialized-decl">,
- HelpText<"Emit error if a specific declaration is deserialized from PCH, for testing">;
- def error_on_deserialized_pch_decl_EQ : Joined<["-"], "error-on-deserialized-decl=">,
- Alias<error_on_deserialized_pch_decl>;
- def static_define : Flag<["-"], "static-define">,
- HelpText<"Should __STATIC__ be defined">,
- MarshallingInfoFlag<LangOpts<"Static">>;
- def stack_protector : Separate<["-"], "stack-protector">,
- HelpText<"Enable stack protectors">,
- Values<"0,1,2,3">,
- NormalizedValuesScope<"LangOptions">,
- NormalizedValues<["SSPOff", "SSPOn", "SSPStrong", "SSPReq"]>,
- MarshallingInfoEnum<LangOpts<"StackProtector">, "SSPOff">;
- def stack_protector_buffer_size : Separate<["-"], "stack-protector-buffer-size">,
- HelpText<"Lower bound for a buffer to be considered for stack protection">,
- MarshallingInfoInt<CodeGenOpts<"SSPBufferSize">, "8">;
- def ftype_visibility : Joined<["-"], "ftype-visibility=">,
- HelpText<"Default type visibility">,
- MarshallingInfoVisibility<LangOpts<"TypeVisibilityMode">, fvisibility_EQ.KeyPath>;
- def fapply_global_visibility_to_externs : Flag<["-"], "fapply-global-visibility-to-externs">,
- HelpText<"Apply global symbol visibility to external declarations without an explicit visibility">,
- MarshallingInfoFlag<LangOpts<"SetVisibilityForExternDecls">>;
- def ftemplate_depth : Separate<["-"], "ftemplate-depth">,
- HelpText<"Maximum depth of recursive template instantiation">,
- MarshallingInfoInt<LangOpts<"InstantiationDepth">, "1024">;
- def foperator_arrow_depth : Separate<["-"], "foperator-arrow-depth">,
- HelpText<"Maximum number of 'operator->'s to call for a member access">,
- MarshallingInfoInt<LangOpts<"ArrowDepth">, "256">;
- def fconstexpr_depth : Separate<["-"], "fconstexpr-depth">,
- HelpText<"Maximum depth of recursive constexpr function calls">,
- MarshallingInfoInt<LangOpts<"ConstexprCallDepth">, "512">;
- def fconstexpr_steps : Separate<["-"], "fconstexpr-steps">,
- HelpText<"Maximum number of steps in constexpr function evaluation">,
- MarshallingInfoInt<LangOpts<"ConstexprStepLimit">, "1048576">;
- def fbracket_depth : Separate<["-"], "fbracket-depth">,
- HelpText<"Maximum nesting level for parentheses, brackets, and braces">,
- MarshallingInfoInt<LangOpts<"BracketDepth">, "256">;
- defm const_strings : BoolOption<"f", "const-strings",
- LangOpts<"ConstStrings">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Use">, NegFlag<SetFalse, [], "Don't use">,
- BothFlags<[], " a const qualified type for string literals in C and ObjC">>;
- def fno_bitfield_type_align : Flag<["-"], "fno-bitfield-type-align">,
- HelpText<"Ignore bit-field types when aligning structures">,
- MarshallingInfoFlag<LangOpts<"NoBitFieldTypeAlign">>;
- def ffake_address_space_map : Flag<["-"], "ffake-address-space-map">,
- HelpText<"Use a fake address space map; OpenCL testing purposes only">,
- MarshallingInfoFlag<LangOpts<"FakeAddressSpaceMap">>;
- def faddress_space_map_mangling_EQ : Joined<["-"], "faddress-space-map-mangling=">,
- HelpText<"Set the mode for address space map based mangling; OpenCL testing purposes only">,
- Values<"target,no,yes">,
- NormalizedValuesScope<"LangOptions">,
- NormalizedValues<["ASMM_Target", "ASMM_Off", "ASMM_On"]>,
- MarshallingInfoEnum<LangOpts<"AddressSpaceMapMangling">, "ASMM_Target">;
- def funknown_anytype : Flag<["-"], "funknown-anytype">,
- HelpText<"Enable parser support for the __unknown_anytype type; for testing purposes only">,
- MarshallingInfoFlag<LangOpts<"ParseUnknownAnytype">>;
- def fdebugger_support : Flag<["-"], "fdebugger-support">,
- HelpText<"Enable special debugger support behavior">,
- MarshallingInfoFlag<LangOpts<"DebuggerSupport">>;
- def fdebugger_cast_result_to_id : Flag<["-"], "fdebugger-cast-result-to-id">,
- HelpText<"Enable casting unknown expression results to id">,
- MarshallingInfoFlag<LangOpts<"DebuggerCastResultToId">>;
- def fdebugger_objc_literal : Flag<["-"], "fdebugger-objc-literal">,
- HelpText<"Enable special debugger support for Objective-C subscripting and literals">,
- MarshallingInfoFlag<LangOpts<"DebuggerObjCLiteral">>;
- defm deprecated_macro : BoolOption<"f", "deprecated-macro",
- LangOpts<"Deprecated">, DefaultFalse,
- PosFlag<SetTrue, [], "Defines">, NegFlag<SetFalse, [], "Undefines">,
- BothFlags<[], " the __DEPRECATED macro">>;
- def fobjc_subscripting_legacy_runtime : Flag<["-"], "fobjc-subscripting-legacy-runtime">,
- HelpText<"Allow Objective-C array and dictionary subscripting in legacy runtime">;
- // TODO: Enforce values valid for MSVtorDispMode.
- def vtordisp_mode_EQ : Joined<["-"], "vtordisp-mode=">,
- HelpText<"Control vtordisp placement on win32 targets">,
- MarshallingInfoInt<LangOpts<"VtorDispMode">, "1">;
- def fnative_half_type: Flag<["-"], "fnative-half-type">,
- HelpText<"Use the native half type for __fp16 instead of promoting to float">,
- MarshallingInfoFlag<LangOpts<"NativeHalfType">>,
- ImpliedByAnyOf<[open_cl.KeyPath, render_script.KeyPath]>;
- def fnative_half_arguments_and_returns : Flag<["-"], "fnative-half-arguments-and-returns">,
- HelpText<"Use the native __fp16 type for arguments and returns (and skip ABI-specific lowering)">,
- MarshallingInfoFlag<LangOpts<"NativeHalfArgsAndReturns">>,
- ImpliedByAnyOf<[open_cl.KeyPath, render_script.KeyPath, hlsl.KeyPath]>;
- def fdefault_calling_conv_EQ : Joined<["-"], "fdefault-calling-conv=">,
- HelpText<"Set default calling convention">,
- Values<"cdecl,fastcall,stdcall,vectorcall,regcall">,
- NormalizedValuesScope<"LangOptions">,
- NormalizedValues<["DCC_CDecl", "DCC_FastCall", "DCC_StdCall", "DCC_VectorCall", "DCC_RegCall"]>,
- MarshallingInfoEnum<LangOpts<"DefaultCallingConv">, "DCC_None">;
- // These options cannot be marshalled, because they are used to set up the LangOptions defaults.
- def finclude_default_header : Flag<["-"], "finclude-default-header">,
- HelpText<"Include default header file for OpenCL and HLSL">;
- def fdeclare_opencl_builtins : Flag<["-"], "fdeclare-opencl-builtins">,
- HelpText<"Add OpenCL builtin function declarations (experimental)">;
- def fpreserve_vec3_type : Flag<["-"], "fpreserve-vec3-type">,
- HelpText<"Preserve 3-component vector type">,
- MarshallingInfoFlag<CodeGenOpts<"PreserveVec3Type">>,
- ImpliedByAnyOf<[hlsl.KeyPath]>;
- def fwchar_type_EQ : Joined<["-"], "fwchar-type=">,
- HelpText<"Select underlying type for wchar_t">,
- Values<"char,short,int">,
- NormalizedValues<["1", "2", "4"]>,
- MarshallingInfoEnum<LangOpts<"WCharSize">, "0">;
- defm signed_wchar : BoolOption<"f", "signed-wchar",
- LangOpts<"WCharIsSigned">, DefaultTrue,
- NegFlag<SetFalse, [CC1Option], "Use an unsigned">, PosFlag<SetTrue, [], "Use a signed">,
- BothFlags<[], " type for wchar_t">>;
- def fcompatibility_qualified_id_block_param_type_checking : Flag<["-"], "fcompatibility-qualified-id-block-type-checking">,
- HelpText<"Allow using blocks with parameters of more specific type than "
- "the type system guarantees when a parameter is qualified id">,
- MarshallingInfoFlag<LangOpts<"CompatibilityQualifiedIdBlockParamTypeChecking">>;
- def fpass_by_value_is_noalias: Flag<["-"], "fpass-by-value-is-noalias">,
- HelpText<"Allows assuming by-value parameters do not alias any other value. "
- "Has no effect on non-trivially-copyable classes in C++.">, Group<f_Group>,
- MarshallingInfoFlag<CodeGenOpts<"PassByValueIsNoAlias">>;
- // FIXME: Remove these entirely once functionality/tests have been excised.
- def fobjc_gc_only : Flag<["-"], "fobjc-gc-only">, Group<f_Group>,
- HelpText<"Use GC exclusively for Objective-C related memory management">;
- def fobjc_gc : Flag<["-"], "fobjc-gc">, Group<f_Group>,
- HelpText<"Enable Objective-C garbage collection">;
- def fexperimental_max_bitint_width_EQ:
- Joined<["-"], "fexperimental-max-bitint-width=">, Group<f_Group>,
- MetaVarName<"<N>">,
- HelpText<"Set the maximum bitwidth for _BitInt (this option is expected to be removed in the future)">,
- MarshallingInfoInt<LangOpts<"MaxBitIntWidth">>;
- } // let Flags = [CC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // Header Search Options
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, NoDriverOption] in {
- def nostdsysteminc : Flag<["-"], "nostdsysteminc">,
- HelpText<"Disable standard system #include directories">,
- MarshallingInfoNegativeFlag<HeaderSearchOpts<"UseStandardSystemIncludes">>;
- def fdisable_module_hash : Flag<["-"], "fdisable-module-hash">,
- HelpText<"Disable the module hash">,
- MarshallingInfoFlag<HeaderSearchOpts<"DisableModuleHash">>;
- def fmodules_hash_content : Flag<["-"], "fmodules-hash-content">,
- HelpText<"Enable hashing the content of a module file">,
- MarshallingInfoFlag<HeaderSearchOpts<"ModulesHashContent">>;
- def fmodules_strict_context_hash : Flag<["-"], "fmodules-strict-context-hash">,
- HelpText<"Enable hashing of all compiler options that could impact the "
- "semantics of a module in an implicit build">,
- MarshallingInfoFlag<HeaderSearchOpts<"ModulesStrictContextHash">>;
- def c_isystem : Separate<["-"], "c-isystem">, MetaVarName<"<directory>">,
- HelpText<"Add directory to the C SYSTEM include search path">;
- def objc_isystem : Separate<["-"], "objc-isystem">,
- MetaVarName<"<directory>">,
- HelpText<"Add directory to the ObjC SYSTEM include search path">;
- def objcxx_isystem : Separate<["-"], "objcxx-isystem">,
- MetaVarName<"<directory>">,
- HelpText<"Add directory to the ObjC++ SYSTEM include search path">;
- def internal_isystem : Separate<["-"], "internal-isystem">,
- MetaVarName<"<directory>">,
- HelpText<"Add directory to the internal system include search path; these "
- "are assumed to not be user-provided and are used to model system "
- "and standard headers' paths.">;
- def internal_externc_isystem : Separate<["-"], "internal-externc-isystem">,
- MetaVarName<"<directory>">,
- HelpText<"Add directory to the internal system include search path with "
- "implicit extern \"C\" semantics; these are assumed to not be "
- "user-provided and are used to model system and standard headers' "
- "paths.">;
- } // let Flags = [CC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // Preprocessor Options
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, NoDriverOption] in {
- def chain_include : Separate<["-"], "chain-include">, MetaVarName<"<file>">,
- HelpText<"Include and chain a header file after turning it into PCH">;
- def preamble_bytes_EQ : Joined<["-"], "preamble-bytes=">,
- HelpText<"Assume that the precompiled header is a precompiled preamble "
- "covering the first N bytes of the main file">;
- def detailed_preprocessing_record : Flag<["-"], "detailed-preprocessing-record">,
- HelpText<"include a detailed record of preprocessing actions">,
- MarshallingInfoFlag<PreprocessorOpts<"DetailedRecord">>;
- def setup_static_analyzer : Flag<["-"], "setup-static-analyzer">,
- HelpText<"Set up preprocessor for static analyzer (done automatically when static analyzer is run).">,
- MarshallingInfoFlag<PreprocessorOpts<"SetUpStaticAnalyzer">>;
- def disable_pragma_debug_crash : Flag<["-"], "disable-pragma-debug-crash">,
- HelpText<"Disable any #pragma clang __debug that can lead to crashing behavior. This is meant for testing.">,
- MarshallingInfoFlag<PreprocessorOpts<"DisablePragmaDebugCrash">>;
- def source_date_epoch : Separate<["-"], "source-date-epoch">,
- MetaVarName<"<time since Epoch in seconds>">,
- HelpText<"Time to be used in __DATE__, __TIME__, and __TIMESTAMP__ macros">;
- } // let Flags = [CC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // CUDA Options
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, NoDriverOption] in {
- def fcuda_is_device : Flag<["-"], "fcuda-is-device">,
- HelpText<"Generate code for CUDA device">,
- MarshallingInfoFlag<LangOpts<"CUDAIsDevice">>;
- def fcuda_include_gpubinary : Separate<["-"], "fcuda-include-gpubinary">,
- HelpText<"Incorporate CUDA device-side binary into host object file.">,
- MarshallingInfoString<CodeGenOpts<"CudaGpuBinaryFileName">>;
- def fcuda_allow_variadic_functions : Flag<["-"], "fcuda-allow-variadic-functions">,
- HelpText<"Allow variadic functions in CUDA device code.">,
- MarshallingInfoFlag<LangOpts<"CUDAAllowVariadicFunctions">>;
- def fno_cuda_host_device_constexpr : Flag<["-"], "fno-cuda-host-device-constexpr">,
- HelpText<"Don't treat unattributed constexpr functions as __host__ __device__.">,
- MarshallingInfoNegativeFlag<LangOpts<"CUDAHostDeviceConstexpr">>;
- } // let Flags = [CC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // OpenMP Options
- //===----------------------------------------------------------------------===//
- def fopenmp_is_device : Flag<["-"], "fopenmp-is-device">,
- HelpText<"Generate code only for an OpenMP target device.">,
- Flags<[CC1Option, NoDriverOption]>;
- def fopenmp_host_ir_file_path : Separate<["-"], "fopenmp-host-ir-file-path">,
- HelpText<"Path to the IR file produced by the frontend for the host.">,
- Flags<[CC1Option, NoDriverOption]>;
- //===----------------------------------------------------------------------===//
- // SYCL Options
- //===----------------------------------------------------------------------===//
- def fsycl_is_device : Flag<["-"], "fsycl-is-device">,
- HelpText<"Generate code for SYCL device.">,
- Flags<[CC1Option, NoDriverOption]>,
- MarshallingInfoFlag<LangOpts<"SYCLIsDevice">>;
- def fsycl_is_host : Flag<["-"], "fsycl-is-host">,
- HelpText<"SYCL host compilation">,
- Flags<[CC1Option, NoDriverOption]>,
- MarshallingInfoFlag<LangOpts<"SYCLIsHost">>;
- def sycl_std_EQ : Joined<["-"], "sycl-std=">, Group<sycl_Group>,
- Flags<[CC1Option, NoArgumentUnused, CoreOption]>,
- HelpText<"SYCL language standard to compile for.">,
- Values<"2020,2017,121,1.2.1,sycl-1.2.1">,
- NormalizedValues<["SYCL_2020", "SYCL_2017", "SYCL_2017", "SYCL_2017", "SYCL_2017"]>,
- NormalizedValuesScope<"LangOptions">,
- MarshallingInfoEnum<LangOpts<"SYCLVersion">, "SYCL_None">,
- ShouldParseIf<!strconcat(fsycl_is_device.KeyPath, "||", fsycl_is_host.KeyPath)>;
- defm cuda_approx_transcendentals : BoolFOption<"cuda-approx-transcendentals",
- LangOpts<"CUDADeviceApproxTranscendentals">, DefaultFalse,
- PosFlag<SetTrue, [CC1Option], "Use">, NegFlag<SetFalse, [], "Don't use">,
- BothFlags<[], " approximate transcendental functions">>,
- ShouldParseIf<fcuda_is_device.KeyPath>;
- //===----------------------------------------------------------------------===//
- // Frontend Options - cc1 + fc1
- //===----------------------------------------------------------------------===//
- let Flags = [CC1Option, FC1Option, NoDriverOption] in {
- let Group = Action_Group in {
- def emit_obj : Flag<["-"], "emit-obj">,
- HelpText<"Emit native object files">;
- def init_only : Flag<["-"], "init-only">,
- HelpText<"Only execute frontend initialization">;
- def emit_llvm_bc : Flag<["-"], "emit-llvm-bc">,
- HelpText<"Build ASTs then convert to LLVM, emit .bc file">;
- } // let Group = Action_Group
- def load : Separate<["-"], "load">, MetaVarName<"<dsopath>">,
- HelpText<"Load the named plugin (dynamic shared object)">;
- def plugin : Separate<["-"], "plugin">, MetaVarName<"<name>">,
- HelpText<"Use the named plugin action instead of the default action (use \"help\" to list available options)">;
- defm debug_pass_manager : BoolOption<"f", "debug-pass-manager",
- CodeGenOpts<"DebugPassManager">, DefaultFalse,
- PosFlag<SetTrue, [], "Prints debug information for the new pass manager">,
- NegFlag<SetFalse, [], "Disables debug printing for the new pass manager">>;
- } // let Flags = [CC1Option, FC1Option, NoDriverOption]
- //===----------------------------------------------------------------------===//
- // cc1as-only Options
- //===----------------------------------------------------------------------===//
- let Flags = [CC1AsOption, NoDriverOption] in {
- // Language Options
- def n : Flag<["-"], "n">,
- HelpText<"Don't automatically start assembly file with a text section">;
- // Frontend Options
- def filetype : Separate<["-"], "filetype">,
- HelpText<"Specify the output file type ('asm', 'null', or 'obj')">;
- // Transliterate Options
- def output_asm_variant : Separate<["-"], "output-asm-variant">,
- HelpText<"Select the asm variant index to use for output">;
- def show_encoding : Flag<["-"], "show-encoding">,
- HelpText<"Show instruction encoding information in transliterate mode">;
- def show_inst : Flag<["-"], "show-inst">,
- HelpText<"Show internal instruction representation in transliterate mode">;
- // Assemble Options
- def dwarf_debug_producer : Separate<["-"], "dwarf-debug-producer">,
- HelpText<"The string to embed in the Dwarf debug AT_producer record.">;
- def defsym : Separate<["-"], "defsym">,
- HelpText<"Define a value for a symbol">;
- } // let Flags = [CC1AsOption]
- //===----------------------------------------------------------------------===//
- // clang-cl Options
- //===----------------------------------------------------------------------===//
- def cl_Group : OptionGroup<"<clang-cl options>">, Flags<[CLDXCOption]>,
- HelpText<"CL.EXE COMPATIBILITY OPTIONS">;
- def cl_compile_Group : OptionGroup<"<clang-cl compile-only options>">,
- Group<cl_Group>;
- def cl_ignored_Group : OptionGroup<"<clang-cl ignored options>">,
- Group<cl_Group>;
- class CLFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
- Group<cl_Group>, Flags<[CLOption, NoXarchOption]>;
- class CLDXCFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
- Group<cl_Group>, Flags<[CLDXCOption, NoXarchOption]>;
- class CLCompileFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
- Group<cl_compile_Group>, Flags<[CLOption, NoXarchOption]>;
- class CLIgnoredFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
- Group<cl_ignored_Group>, Flags<[CLOption, NoXarchOption]>;
- class CLJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
- Group<cl_Group>, Flags<[CLOption, NoXarchOption]>;
- class CLDXCJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
- Group<cl_Group>, Flags<[CLDXCOption, NoXarchOption]>;
- class CLCompileJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
- Group<cl_compile_Group>, Flags<[CLOption, NoXarchOption]>;
- class CLIgnoredJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
- Group<cl_ignored_Group>, Flags<[CLOption, NoXarchOption, HelpHidden]>;
- class CLJoinedOrSeparate<string name> : Option<["/", "-"], name,
- KIND_JOINED_OR_SEPARATE>, Group<cl_Group>, Flags<[CLOption, NoXarchOption]>;
- class CLDXCJoinedOrSeparate<string name> : Option<["/", "-"], name,
- KIND_JOINED_OR_SEPARATE>, Group<cl_Group>, Flags<[CLDXCOption, NoXarchOption]>;
- class CLCompileJoinedOrSeparate<string name> : Option<["/", "-"], name,
- KIND_JOINED_OR_SEPARATE>, Group<cl_compile_Group>,
- Flags<[CLOption, NoXarchOption]>;
- class CLRemainingArgsJoined<string name> : Option<["/", "-"], name,
- KIND_REMAINING_ARGS_JOINED>, Group<cl_Group>, Flags<[CLOption, NoXarchOption]>;
- // Aliases:
- // (We don't put any of these in cl_compile_Group as the options they alias are
- // already in the right group.)
- def _SLASH_Brepro : CLFlag<"Brepro">,
- HelpText<"Do not write current time into COFF output (breaks link.exe /incremental)">,
- Alias<mno_incremental_linker_compatible>;
- def _SLASH_Brepro_ : CLFlag<"Brepro-">,
- HelpText<"Write current time into COFF output (default)">,
- Alias<mincremental_linker_compatible>;
- def _SLASH_C : CLFlag<"C">,
- HelpText<"Do not discard comments when preprocessing">, Alias<C>;
- def _SLASH_c : CLFlag<"c">, HelpText<"Compile only">, Alias<c>;
- def _SLASH_d1PP : CLFlag<"d1PP">,
- HelpText<"Retain macro definitions in /E mode">, Alias<dD>;
- def _SLASH_d1reportAllClassLayout : CLFlag<"d1reportAllClassLayout">,
- HelpText<"Dump record layout information">,
- Alias<Xclang>, AliasArgs<["-fdump-record-layouts"]>;
- def _SLASH_diagnostics_caret : CLFlag<"diagnostics:caret">,
- HelpText<"Enable caret and column diagnostics (default)">;
- def _SLASH_diagnostics_column : CLFlag<"diagnostics:column">,
- HelpText<"Disable caret diagnostics but keep column info">;
- def _SLASH_diagnostics_classic : CLFlag<"diagnostics:classic">,
- HelpText<"Disable column and caret diagnostics">;
- def _SLASH_D : CLJoinedOrSeparate<"D">, HelpText<"Define macro">,
- MetaVarName<"<macro[=value]>">, Alias<D>;
- def _SLASH_E : CLFlag<"E">, HelpText<"Preprocess to stdout">, Alias<E>;
- def _SLASH_external_COLON_I : CLJoinedOrSeparate<"external:I">, Alias<isystem>,
- HelpText<"Add directory to include search path with warnings suppressed">,
- MetaVarName<"<dir>">;
- def _SLASH_fp_contract : CLFlag<"fp:contract">, HelpText<"">, Alias<ffp_contract>, AliasArgs<["on"]>;
- def _SLASH_fp_except : CLFlag<"fp:except">, HelpText<"">, Alias<ffp_exception_behavior_EQ>, AliasArgs<["strict"]>;
- def _SLASH_fp_except_ : CLFlag<"fp:except-">, HelpText<"">, Alias<ffp_exception_behavior_EQ>, AliasArgs<["ignore"]>;
- def _SLASH_fp_fast : CLFlag<"fp:fast">, HelpText<"">, Alias<ffast_math>;
- def _SLASH_fp_precise : CLFlag<"fp:precise">, HelpText<"">, Alias<ffp_model_EQ>, AliasArgs<["precise"]>;
- def _SLASH_fp_strict : CLFlag<"fp:strict">, HelpText<"">, Alias<ffp_model_EQ>, AliasArgs<["strict"]>;
- def _SLASH_fsanitize_EQ_address : CLFlag<"fsanitize=address">,
- HelpText<"Enable AddressSanitizer">,
- Alias<fsanitize_EQ>, AliasArgs<["address"]>;
- def _SLASH_GA : CLFlag<"GA">, Alias<ftlsmodel_EQ>, AliasArgs<["local-exec"]>,
- HelpText<"Assume thread-local variables are defined in the executable">;
- def _SLASH_GR : CLFlag<"GR">, HelpText<"Emit RTTI data (default)">;
- def _SLASH_GR_ : CLFlag<"GR-">, HelpText<"Do not emit RTTI data">;
- def _SLASH_GF : CLIgnoredFlag<"GF">,
- HelpText<"Enable string pooling (default)">;
- def _SLASH_GF_ : CLFlag<"GF-">, HelpText<"Disable string pooling">,
- Alias<fwritable_strings>;
- def _SLASH_GS : CLFlag<"GS">,
- HelpText<"Enable buffer security check (default)">;
- def _SLASH_GS_ : CLFlag<"GS-">, HelpText<"Disable buffer security check">;
- def : CLFlag<"Gs">, HelpText<"Use stack probes (default)">,
- Alias<mstack_probe_size>, AliasArgs<["4096"]>;
- def _SLASH_Gs : CLJoined<"Gs">,
- HelpText<"Set stack probe size (default 4096)">, Alias<mstack_probe_size>;
- def _SLASH_Gy : CLFlag<"Gy">, HelpText<"Put each function in its own section">,
- Alias<ffunction_sections>;
- def _SLASH_Gy_ : CLFlag<"Gy-">,
- HelpText<"Do not put each function in its own section (default)">,
- Alias<fno_function_sections>;
- def _SLASH_Gw : CLFlag<"Gw">, HelpText<"Put each data item in its own section">,
- Alias<fdata_sections>;
- def _SLASH_Gw_ : CLFlag<"Gw-">,
- HelpText<"Do not put each data item in its own section (default)">,
- Alias<fno_data_sections>;
- def _SLASH_help : CLFlag<"help">, Alias<help>,
- HelpText<"Display available options">;
- def _SLASH_HELP : CLFlag<"HELP">, Alias<help>;
- def _SLASH_hotpatch : CLFlag<"hotpatch">, Alias<fms_hotpatch>,
- HelpText<"Create hotpatchable image">;
- def _SLASH_I : CLDXCJoinedOrSeparate<"I">,
- HelpText<"Add directory to include search path">, MetaVarName<"<dir>">,
- Alias<I>;
- def _SLASH_J : CLFlag<"J">, HelpText<"Make char type unsigned">,
- Alias<funsigned_char>;
- // The _SLASH_O option handles all the /O flags, but we also provide separate
- // aliased options to provide separate help messages.
- def _SLASH_O : CLDXCJoined<"O">,
- HelpText<"Set multiple /O flags at once; e.g. '/O2y-' for '/O2 /Oy-'">,
- MetaVarName<"<flags>">;
- def : CLFlag<"O1">, Alias<_SLASH_O>, AliasArgs<["1"]>,
- HelpText<"Optimize for size (like /Og /Os /Oy /Ob2 /GF /Gy)">;
- def : CLFlag<"O2">, Alias<_SLASH_O>, AliasArgs<["2"]>,
- HelpText<"Optimize for speed (like /Og /Oi /Ot /Oy /Ob2 /GF /Gy)">;
- def : CLFlag<"Ob0">, Alias<_SLASH_O>, AliasArgs<["b0"]>,
- HelpText<"Disable function inlining">;
- def : CLFlag<"Ob1">, Alias<_SLASH_O>, AliasArgs<["b1"]>,
- HelpText<"Only inline functions explicitly or implicitly marked inline">;
- def : CLFlag<"Ob2">, Alias<_SLASH_O>, AliasArgs<["b2"]>,
- HelpText<"Inline functions as deemed beneficial by the compiler">;
- def : CLDXCFlag<"Od">, Alias<_SLASH_O>, AliasArgs<["d"]>,
- HelpText<"Disable optimization">;
- def : CLFlag<"Og">, Alias<_SLASH_O>, AliasArgs<["g"]>,
- HelpText<"No effect">;
- def : CLFlag<"Oi">, Alias<_SLASH_O>, AliasArgs<["i"]>,
- HelpText<"Enable use of builtin functions">;
- def : CLFlag<"Oi-">, Alias<_SLASH_O>, AliasArgs<["i-"]>,
- HelpText<"Disable use of builtin functions">;
- def : CLFlag<"Os">, Alias<_SLASH_O>, AliasArgs<["s"]>,
- HelpText<"Optimize for size">;
- def : CLFlag<"Ot">, Alias<_SLASH_O>, AliasArgs<["t"]>,
- HelpText<"Optimize for speed">;
- def : CLFlag<"Ox">, Alias<_SLASH_O>, AliasArgs<["x"]>,
- HelpText<"Deprecated (like /Og /Oi /Ot /Oy /Ob2); use /O2">;
- def : CLFlag<"Oy">, Alias<_SLASH_O>, AliasArgs<["y"]>,
- HelpText<"Enable frame pointer omission (x86 only)">;
- def : CLFlag<"Oy-">, Alias<_SLASH_O>, AliasArgs<["y-"]>,
- HelpText<"Disable frame pointer omission (x86 only, default)">;
- def _SLASH_QUESTION : CLFlag<"?">, Alias<help>,
- HelpText<"Display available options">;
- def _SLASH_Qvec : CLFlag<"Qvec">,
- HelpText<"Enable the loop vectorization passes">, Alias<fvectorize>;
- def _SLASH_Qvec_ : CLFlag<"Qvec-">,
- HelpText<"Disable the loop vectorization passes">, Alias<fno_vectorize>;
- def _SLASH_showIncludes : CLFlag<"showIncludes">,
- HelpText<"Print info about included files to stderr">;
- def _SLASH_showIncludes_user : CLFlag<"showIncludes:user">,
- HelpText<"Like /showIncludes but omit system headers">;
- def _SLASH_showFilenames : CLFlag<"showFilenames">,
- HelpText<"Print the name of each compiled file">;
- def _SLASH_showFilenames_ : CLFlag<"showFilenames-">,
- HelpText<"Do not print the name of each compiled file (default)">;
- def _SLASH_source_charset : CLCompileJoined<"source-charset:">,
- HelpText<"Set source encoding, supports only UTF-8">,
- Alias<finput_charset_EQ>;
- def _SLASH_execution_charset : CLCompileJoined<"execution-charset:">,
- HelpText<"Set runtime encoding, supports only UTF-8">,
- Alias<fexec_charset_EQ>;
- def _SLASH_std : CLCompileJoined<"std:">,
- HelpText<"Set language version (c++14,c++17,c++20,c++latest,c11,c17)">;
- def _SLASH_U : CLJoinedOrSeparate<"U">, HelpText<"Undefine macro">,
- MetaVarName<"<macro>">, Alias<U>;
- def _SLASH_validate_charset : CLFlag<"validate-charset">,
- Alias<W_Joined>, AliasArgs<["invalid-source-encoding"]>;
- def _SLASH_validate_charset_ : CLFlag<"validate-charset-">,
- Alias<W_Joined>, AliasArgs<["no-invalid-source-encoding"]>;
- def _SLASH_external_W0 : CLFlag<"external:W0">, HelpText<"Ignore warnings from system headers (default)">, Alias<Wno_system_headers>;
- def _SLASH_external_W1 : CLFlag<"external:W1">, HelpText<"Enable -Wsystem-headers">, Alias<Wsystem_headers>;
- def _SLASH_external_W2 : CLFlag<"external:W2">, HelpText<"Enable -Wsystem-headers">, Alias<Wsystem_headers>;
- def _SLASH_external_W3 : CLFlag<"external:W3">, HelpText<"Enable -Wsystem-headers">, Alias<Wsystem_headers>;
- def _SLASH_external_W4 : CLFlag<"external:W4">, HelpText<"Enable -Wsystem-headers">, Alias<Wsystem_headers>;
- def _SLASH_W0 : CLFlag<"W0">, HelpText<"Disable all warnings">, Alias<w>;
- def _SLASH_W1 : CLFlag<"W1">, HelpText<"Enable -Wall">, Alias<Wall>;
- def _SLASH_W2 : CLFlag<"W2">, HelpText<"Enable -Wall">, Alias<Wall>;
- def _SLASH_W3 : CLFlag<"W3">, HelpText<"Enable -Wall">, Alias<Wall>;
- def _SLASH_W4 : CLFlag<"W4">, HelpText<"Enable -Wall and -Wextra">, Alias<WCL4>;
- def _SLASH_Wall : CLFlag<"Wall">, HelpText<"Enable -Weverything">,
- Alias<W_Joined>, AliasArgs<["everything"]>;
- def _SLASH_WX : CLFlag<"WX">, HelpText<"Treat warnings as errors">,
- Alias<W_Joined>, AliasArgs<["error"]>;
- def _SLASH_WX_ : CLFlag<"WX-">,
- HelpText<"Do not treat warnings as errors (default)">,
- Alias<W_Joined>, AliasArgs<["no-error"]>;
- def _SLASH_w_flag : CLFlag<"w">, HelpText<"Disable all warnings">, Alias<w>;
- def _SLASH_wd : CLCompileJoined<"wd">;
- def _SLASH_vd : CLJoined<"vd">, HelpText<"Control vtordisp placement">,
- Alias<vtordisp_mode_EQ>;
- def _SLASH_X : CLFlag<"X">,
- HelpText<"Do not add %INCLUDE% to include search path">, Alias<nostdlibinc>;
- def _SLASH_Zc_sizedDealloc : CLFlag<"Zc:sizedDealloc">,
- HelpText<"Enable C++14 sized global deallocation functions">,
- Alias<fsized_deallocation>;
- def _SLASH_Zc_sizedDealloc_ : CLFlag<"Zc:sizedDealloc-">,
- HelpText<"Disable C++14 sized global deallocation functions">,
- Alias<fno_sized_deallocation>;
- def _SLASH_Zc_alignedNew : CLFlag<"Zc:alignedNew">,
- HelpText<"Enable C++17 aligned allocation functions">,
- Alias<faligned_allocation>;
- def _SLASH_Zc_alignedNew_ : CLFlag<"Zc:alignedNew-">,
- HelpText<"Disable C++17 aligned allocation functions">,
- Alias<fno_aligned_allocation>;
- def _SLASH_Zc_char8_t : CLFlag<"Zc:char8_t">,
- HelpText<"Enable char8_t from C++2a">,
- Alias<fchar8__t>;
- def _SLASH_Zc_char8_t_ : CLFlag<"Zc:char8_t-">,
- HelpText<"Disable char8_t from c++2a">,
- Alias<fno_char8__t>;
- def _SLASH_Zc_strictStrings : CLFlag<"Zc:strictStrings">,
- HelpText<"Treat string literals as const">, Alias<W_Joined>,
- AliasArgs<["error=c++11-compat-deprecated-writable-strings"]>;
- def _SLASH_Zc_threadSafeInit : CLFlag<"Zc:threadSafeInit">,
- HelpText<"Enable thread-safe initialization of static variables">,
- Alias<fthreadsafe_statics>;
- def _SLASH_Zc_threadSafeInit_ : CLFlag<"Zc:threadSafeInit-">,
- HelpText<"Disable thread-safe initialization of static variables">,
- Alias<fno_threadsafe_statics>;
- def _SLASH_Zc_trigraphs : CLFlag<"Zc:trigraphs">,
- HelpText<"Enable trigraphs">, Alias<ftrigraphs>;
- def _SLASH_Zc_trigraphs_off : CLFlag<"Zc:trigraphs-">,
- HelpText<"Disable trigraphs (default)">, Alias<fno_trigraphs>;
- def _SLASH_Zc_twoPhase : CLFlag<"Zc:twoPhase">,
- HelpText<"Enable two-phase name lookup in templates">,
- Alias<fno_delayed_template_parsing>;
- def _SLASH_Zc_twoPhase_ : CLFlag<"Zc:twoPhase-">,
- HelpText<"Disable two-phase name lookup in templates (default)">,
- Alias<fdelayed_template_parsing>;
- def _SLASH_Zc_wchar_t : CLFlag<"Zc:wchar_t">,
- HelpText<"Enable C++ builtin type wchar_t (default)">;
- def _SLASH_Zc_wchar_t_ : CLFlag<"Zc:wchar_t-">,
- HelpText<"Disable C++ builtin type wchar_t">;
- def _SLASH_Z7 : CLFlag<"Z7">,
- HelpText<"Enable CodeView debug information in object files">;
- def _SLASH_ZH_MD5 : CLFlag<"ZH:MD5">,
- HelpText<"Use MD5 for file checksums in debug info (default)">,
- Alias<gsrc_hash_EQ>, AliasArgs<["md5"]>;
- def _SLASH_ZH_SHA1 : CLFlag<"ZH:SHA1">,
- HelpText<"Use SHA1 for file checksums in debug info">,
- Alias<gsrc_hash_EQ>, AliasArgs<["sha1"]>;
- def _SLASH_ZH_SHA_256 : CLFlag<"ZH:SHA_256">,
- HelpText<"Use SHA256 for file checksums in debug info">,
- Alias<gsrc_hash_EQ>, AliasArgs<["sha256"]>;
- def _SLASH_Zi : CLFlag<"Zi">, Alias<_SLASH_Z7>,
- HelpText<"Like /Z7">;
- def _SLASH_Zp : CLJoined<"Zp">,
- HelpText<"Set default maximum struct packing alignment">,
- Alias<fpack_struct_EQ>;
- def _SLASH_Zp_flag : CLFlag<"Zp">,
- HelpText<"Set default maximum struct packing alignment to 1">,
- Alias<fpack_struct_EQ>, AliasArgs<["1"]>;
- def _SLASH_Zs : CLFlag<"Zs">, HelpText<"Run the preprocessor, parser and semantic analysis stages">,
- Alias<fsyntax_only>;
- def _SLASH_openmp_ : CLFlag<"openmp-">,
- HelpText<"Disable OpenMP support">, Alias<fno_openmp>;
- def _SLASH_openmp : CLFlag<"openmp">, HelpText<"Enable OpenMP support">,
- Alias<fopenmp>;
- def _SLASH_openmp_experimental : CLFlag<"openmp:experimental">,
- HelpText<"Enable OpenMP support with experimental SIMD support">,
- Alias<fopenmp>;
- def _SLASH_tune : CLCompileJoined<"tune:">,
- HelpText<"Set CPU for optimization without affecting instruction set">,
- Alias<mtune_EQ>;
- def _SLASH_QIntel_jcc_erratum : CLFlag<"QIntel-jcc-erratum">,
- HelpText<"Align branches within 32-byte boundaries to mitigate the performance impact of the Intel JCC erratum.">,
- Alias<mbranches_within_32B_boundaries>;
- def _SLASH_arm64EC : CLFlag<"arm64EC">,
- HelpText<"Set build target to arm64ec">;
- // Non-aliases:
- def _SLASH_arch : CLCompileJoined<"arch:">,
- HelpText<"Set architecture for code generation">;
- def _SLASH_M_Group : OptionGroup<"</M group>">, Group<cl_compile_Group>;
- def _SLASH_volatile_Group : OptionGroup<"</volatile group>">,
- Group<cl_compile_Group>;
- def _SLASH_EH : CLJoined<"EH">, HelpText<"Set exception handling model">;
- def _SLASH_EP : CLFlag<"EP">,
- HelpText<"Disable linemarker output and preprocess to stdout">;
- def _SLASH_external_env : CLJoined<"external:env:">,
- HelpText<"Add dirs in env var <var> to include search path with warnings suppressed">,
- MetaVarName<"<var>">;
- def _SLASH_FA : CLJoined<"FA">,
- HelpText<"Output assembly code file during compilation">;
- def _SLASH_Fa : CLJoined<"Fa">,
- HelpText<"Set assembly output file name (with /FA)">,
- MetaVarName<"<file or dir/>">;
- def _SLASH_FI : CLJoinedOrSeparate<"FI">,
- HelpText<"Include file before parsing">, Alias<include_>;
- def _SLASH_Fe : CLJoined<"Fe">,
- HelpText<"Set output executable file name">,
- MetaVarName<"<file or dir/>">;
- def _SLASH_Fe_COLON : CLJoined<"Fe:">, Alias<_SLASH_Fe>;
- def _SLASH_Fi : CLCompileJoined<"Fi">,
- HelpText<"Set preprocess output file name (with /P)">,
- MetaVarName<"<file>">;
- def _SLASH_Fo : CLCompileJoined<"Fo">,
- HelpText<"Set output object file (with /c)">,
- MetaVarName<"<file or dir/>">;
- def _SLASH_guard : CLJoined<"guard:">,
- HelpText<"Enable Control Flow Guard with /guard:cf, or only the table with /guard:cf,nochecks. "
- "Enable EH Continuation Guard with /guard:ehcont">;
- def _SLASH_GX : CLFlag<"GX">,
- HelpText<"Deprecated; use /EHsc">;
- def _SLASH_GX_ : CLFlag<"GX-">,
- HelpText<"Deprecated (like not passing /EH)">;
- def _SLASH_imsvc : CLJoinedOrSeparate<"imsvc">,
- HelpText<"Add <dir> to system include search path, as if in %INCLUDE%">,
- MetaVarName<"<dir>">;
- def _SLASH_JMC : CLFlag<"JMC">,
- HelpText<"Enable just-my-code debugging">;
- def _SLASH_JMC_ : CLFlag<"JMC-">,
- HelpText<"Disable just-my-code debugging (default)">;
- def _SLASH_LD : CLFlag<"LD">, HelpText<"Create DLL">;
- def _SLASH_LDd : CLFlag<"LDd">, HelpText<"Create debug DLL">;
- def _SLASH_link : CLRemainingArgsJoined<"link">,
- HelpText<"Forward options to the linker">, MetaVarName<"<options>">;
- def _SLASH_MD : Option<["/", "-"], "MD", KIND_FLAG>, Group<_SLASH_M_Group>,
- Flags<[CLOption, NoXarchOption]>, HelpText<"Use DLL run-time">;
- def _SLASH_MDd : Option<["/", "-"], "MDd", KIND_FLAG>, Group<_SLASH_M_Group>,
- Flags<[CLOption, NoXarchOption]>, HelpText<"Use DLL debug run-time">;
- def _SLASH_MT : Option<["/", "-"], "MT", KIND_FLAG>, Group<_SLASH_M_Group>,
- Flags<[CLOption, NoXarchOption]>, HelpText<"Use static run-time">;
- def _SLASH_MTd : Option<["/", "-"], "MTd", KIND_FLAG>, Group<_SLASH_M_Group>,
- Flags<[CLOption, NoXarchOption]>, HelpText<"Use static debug run-time">;
- def _SLASH_o : CLJoinedOrSeparate<"o">,
- HelpText<"Deprecated (set output file name); use /Fe or /Fe">,
- MetaVarName<"<file or dir/>">;
- def _SLASH_P : CLFlag<"P">, HelpText<"Preprocess to file">;
- def _SLASH_permissive : CLFlag<"permissive">,
- HelpText<"Enable some non conforming code to compile">;
- def _SLASH_permissive_ : CLFlag<"permissive-">,
- HelpText<"Disable non conforming code from compiling (default)">;
- def _SLASH_Tc : CLCompileJoinedOrSeparate<"Tc">,
- HelpText<"Treat <file> as C source file">, MetaVarName<"<file>">;
- def _SLASH_TC : CLCompileFlag<"TC">, HelpText<"Treat all source files as C">;
- def _SLASH_Tp : CLCompileJoinedOrSeparate<"Tp">,
- HelpText<"Treat <file> as C++ source file">, MetaVarName<"<file>">;
- def _SLASH_TP : CLCompileFlag<"TP">, HelpText<"Treat all source files as C++">;
- def _SLASH_diasdkdir : CLJoinedOrSeparate<"diasdkdir">,
- HelpText<"Path to the DIA SDK">, MetaVarName<"<dir>">;
- def _SLASH_vctoolsdir : CLJoinedOrSeparate<"vctoolsdir">,
- HelpText<"Path to the VCToolChain">, MetaVarName<"<dir>">;
- def _SLASH_vctoolsversion : CLJoinedOrSeparate<"vctoolsversion">,
- HelpText<"For use with /winsysroot, defaults to newest found">;
- def _SLASH_winsdkdir : CLJoinedOrSeparate<"winsdkdir">,
- HelpText<"Path to the Windows SDK">, MetaVarName<"<dir>">;
- def _SLASH_winsdkversion : CLJoinedOrSeparate<"winsdkversion">,
- HelpText<"Full version of the Windows SDK, defaults to newest found">;
- def _SLASH_winsysroot : CLJoinedOrSeparate<"winsysroot">,
- HelpText<"Same as \"/diasdkdir <dir>/DIA SDK\" /vctoolsdir <dir>/VC/Tools/MSVC/<vctoolsversion> \"/winsdkdir <dir>/Windows Kits/10\"">,
- MetaVarName<"<dir>">;
- def _SLASH_volatile_iso : Option<["/", "-"], "volatile:iso", KIND_FLAG>,
- Group<_SLASH_volatile_Group>, Flags<[CLOption, NoXarchOption]>,
- HelpText<"Volatile loads and stores have standard semantics">;
- def _SLASH_vmb : CLFlag<"vmb">,
- HelpText<"Use a best-case representation method for member pointers">;
- def _SLASH_vmg : CLFlag<"vmg">,
- HelpText<"Use a most-general representation for member pointers">;
- def _SLASH_vms : CLFlag<"vms">,
- HelpText<"Set the default most-general representation to single inheritance">;
- def _SLASH_vmm : CLFlag<"vmm">,
- HelpText<"Set the default most-general representation to "
- "multiple inheritance">;
- def _SLASH_vmv : CLFlag<"vmv">,
- HelpText<"Set the default most-general representation to "
- "virtual inheritance">;
- def _SLASH_volatile_ms : Option<["/", "-"], "volatile:ms", KIND_FLAG>,
- Group<_SLASH_volatile_Group>, Flags<[CLOption, NoXarchOption]>,
- HelpText<"Volatile loads and stores have acquire and release semantics">;
- def _SLASH_clang : CLJoined<"clang:">,
- HelpText<"Pass <arg> to the clang driver">, MetaVarName<"<arg>">;
- def _SLASH_Zl : CLFlag<"Zl">, Alias<fms_omit_default_lib>,
- HelpText<"Do not let object file auto-link default libraries">;
- def _SLASH_Yc : CLJoined<"Yc">,
- HelpText<"Generate a pch file for all code up to and including <filename>">,
- MetaVarName<"<filename>">;
- def _SLASH_Yu : CLJoined<"Yu">,
- HelpText<"Load a pch file and use it instead of all code up to "
- "and including <filename>">,
- MetaVarName<"<filename>">;
- def _SLASH_Y_ : CLFlag<"Y-">,
- HelpText<"Disable precompiled headers, overrides /Yc and /Yu">;
- def _SLASH_Zc_dllexportInlines : CLFlag<"Zc:dllexportInlines">,
- HelpText<"dllexport/dllimport inline member functions of dllexport/import classes (default)">;
- def _SLASH_Zc_dllexportInlines_ : CLFlag<"Zc:dllexportInlines-">,
- HelpText<"Do not dllexport/dllimport inline member functions of dllexport/import classes">;
- def _SLASH_Fp : CLJoined<"Fp">,
- HelpText<"Set pch file name (with /Yc and /Yu)">, MetaVarName<"<file>">;
- def _SLASH_Gd : CLFlag<"Gd">,
- HelpText<"Set __cdecl as a default calling convention">;
- def _SLASH_Gr : CLFlag<"Gr">,
- HelpText<"Set __fastcall as a default calling convention">;
- def _SLASH_Gz : CLFlag<"Gz">,
- HelpText<"Set __stdcall as a default calling convention">;
- def _SLASH_Gv : CLFlag<"Gv">,
- HelpText<"Set __vectorcall as a default calling convention">;
- def _SLASH_Gregcall : CLFlag<"Gregcall">,
- HelpText<"Set __regcall as a default calling convention">;
- // Ignored:
- def _SLASH_analyze_ : CLIgnoredFlag<"analyze-">;
- def _SLASH_bigobj : CLIgnoredFlag<"bigobj">;
- def _SLASH_cgthreads : CLIgnoredJoined<"cgthreads">;
- def _SLASH_d2FastFail : CLIgnoredFlag<"d2FastFail">;
- def _SLASH_d2Zi_PLUS : CLIgnoredFlag<"d2Zi+">;
- def _SLASH_errorReport : CLIgnoredJoined<"errorReport">;
- def _SLASH_FC : CLIgnoredFlag<"FC">;
- def _SLASH_Fd : CLIgnoredJoined<"Fd">;
- def _SLASH_FS : CLIgnoredFlag<"FS">;
- def _SLASH_kernel_ : CLIgnoredFlag<"kernel-">;
- def _SLASH_nologo : CLIgnoredFlag<"nologo">;
- def _SLASH_RTC : CLIgnoredJoined<"RTC">;
- def _SLASH_sdl : CLIgnoredFlag<"sdl">;
- def _SLASH_sdl_ : CLIgnoredFlag<"sdl-">;
- def _SLASH_utf8 : CLIgnoredFlag<"utf-8">,
- HelpText<"Set source and runtime encoding to UTF-8 (default)">;
- def _SLASH_w : CLIgnoredJoined<"w">;
- def _SLASH_Wv_ : CLIgnoredJoined<"Wv">;
- def _SLASH_Zc___cplusplus : CLIgnoredFlag<"Zc:__cplusplus">;
- def _SLASH_Zc_auto : CLIgnoredFlag<"Zc:auto">;
- def _SLASH_Zc_forScope : CLIgnoredFlag<"Zc:forScope">;
- def _SLASH_Zc_inline : CLIgnoredFlag<"Zc:inline">;
- def _SLASH_Zc_rvalueCast : CLIgnoredFlag<"Zc:rvalueCast">;
- def _SLASH_Zc_ternary : CLIgnoredFlag<"Zc:ternary">;
- def _SLASH_Zm : CLIgnoredJoined<"Zm">;
- def _SLASH_Zo : CLIgnoredFlag<"Zo">;
- def _SLASH_Zo_ : CLIgnoredFlag<"Zo-">;
- // Unsupported:
- def _SLASH_await : CLFlag<"await">;
- def _SLASH_await_COLON : CLJoined<"await:">;
- def _SLASH_constexpr : CLJoined<"constexpr:">;
- def _SLASH_AI : CLJoinedOrSeparate<"AI">;
- def _SLASH_Bt : CLFlag<"Bt">;
- def _SLASH_Bt_plus : CLFlag<"Bt+">;
- def _SLASH_clr : CLJoined<"clr">;
- def _SLASH_d1 : CLJoined<"d1">;
- def _SLASH_d2 : CLJoined<"d2">;
- def _SLASH_doc : CLJoined<"doc">;
- def _SLASH_experimental : CLJoined<"experimental:">;
- def _SLASH_exportHeader : CLFlag<"exportHeader">;
- def _SLASH_external : CLJoined<"external:">;
- def _SLASH_favor : CLJoined<"favor">;
- def _SLASH_fsanitize_address_use_after_return : CLJoined<"fsanitize-address-use-after-return">;
- def _SLASH_fno_sanitize_address_vcasan_lib : CLJoined<"fno-sanitize-address-vcasan-lib">;
- def _SLASH_F : CLJoinedOrSeparate<"F">;
- def _SLASH_Fm : CLJoined<"Fm">;
- def _SLASH_Fr : CLJoined<"Fr">;
- def _SLASH_FR : CLJoined<"FR">;
- def _SLASH_FU : CLJoinedOrSeparate<"FU">;
- def _SLASH_Fx : CLFlag<"Fx">;
- def _SLASH_G1 : CLFlag<"G1">;
- def _SLASH_G2 : CLFlag<"G2">;
- def _SLASH_Ge : CLFlag<"Ge">;
- def _SLASH_Gh : CLFlag<"Gh">;
- def _SLASH_GH : CLFlag<"GH">;
- def _SLASH_GL : CLFlag<"GL">;
- def _SLASH_GL_ : CLFlag<"GL-">;
- def _SLASH_Gm : CLFlag<"Gm">;
- def _SLASH_Gm_ : CLFlag<"Gm-">;
- def _SLASH_GT : CLFlag<"GT">;
- def _SLASH_GZ : CLFlag<"GZ">;
- def _SLASH_H : CLFlag<"H">;
- def _SLASH_headername : CLJoined<"headerName:">;
- def _SLASH_headerUnit : CLJoinedOrSeparate<"headerUnit">;
- def _SLASH_headerUnitAngle : CLJoinedOrSeparate<"headerUnit:angle">;
- def _SLASH_headerUnitQuote : CLJoinedOrSeparate<"headerUnit:quote">;
- def _SLASH_homeparams : CLFlag<"homeparams">;
- def _SLASH_kernel : CLFlag<"kernel">;
- def _SLASH_LN : CLFlag<"LN">;
- def _SLASH_MP : CLJoined<"MP">;
- def _SLASH_Qfast_transcendentals : CLFlag<"Qfast_transcendentals">;
- def _SLASH_QIfist : CLFlag<"QIfist">;
- def _SLASH_Qimprecise_fwaits : CLFlag<"Qimprecise_fwaits">;
- def _SLASH_Qpar : CLFlag<"Qpar">;
- def _SLASH_Qpar_report : CLJoined<"Qpar-report">;
- def _SLASH_Qsafe_fp_loads : CLFlag<"Qsafe_fp_loads">;
- def _SLASH_Qspectre : CLFlag<"Qspectre">;
- def _SLASH_Qspectre_load : CLFlag<"Qspectre-load">;
- def _SLASH_Qspectre_load_cf : CLFlag<"Qspectre-load-cf">;
- def _SLASH_Qvec_report : CLJoined<"Qvec-report">;
- def _SLASH_reference : CLJoinedOrSeparate<"reference">;
- def _SLASH_sourceDependencies : CLJoinedOrSeparate<"sourceDependencies">;
- def _SLASH_sourceDependenciesDirectives : CLJoinedOrSeparate<"sourceDependencies:directives">;
- def _SLASH_translateInclude : CLFlag<"translateInclude">;
- def _SLASH_u : CLFlag<"u">;
- def _SLASH_V : CLFlag<"V">;
- def _SLASH_WL : CLFlag<"WL">;
- def _SLASH_Wp64 : CLFlag<"Wp64">;
- def _SLASH_Yd : CLFlag<"Yd">;
- def _SLASH_Yl : CLJoined<"Yl">;
- def _SLASH_Za : CLFlag<"Za">;
- def _SLASH_Zc : CLJoined<"Zc:">;
- def _SLASH_Ze : CLFlag<"Ze">;
- def _SLASH_Zg : CLFlag<"Zg">;
- def _SLASH_ZI : CLFlag<"ZI">;
- def _SLASH_ZW : CLJoined<"ZW">;
- //===----------------------------------------------------------------------===//
- // clang-dxc Options
- //===----------------------------------------------------------------------===//
- def dxc_Group : OptionGroup<"<clang-dxc options>">, Flags<[DXCOption]>,
- HelpText<"dxc compatibility options">;
- class DXCFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
- Group<dxc_Group>, Flags<[DXCOption, NoXarchOption]>;
- class DXCJoinedOrSeparate<string name> : Option<["/", "-"], name,
- KIND_JOINED_OR_SEPARATE>, Group<dxc_Group>, Flags<[DXCOption, NoXarchOption]>;
- def dxc_help : Option<["/", "-", "--"], "help", KIND_JOINED>,
- Group<dxc_Group>, Flags<[DXCOption, NoXarchOption]>, Alias<help>,
- HelpText<"Display available options">;
- def dxc_no_stdinc : DXCFlag<"hlsl-no-stdinc">,
- HelpText<"HLSL only. Disables all standard includes containing non-native compiler types and functions.">;
- def Fo : DXCJoinedOrSeparate<"Fo">, Alias<o>,
- HelpText<"Output object file">;
- def dxil_validator_version : Option<["/", "-"], "validator-version", KIND_SEPARATE>,
- Group<dxc_Group>, Flags<[DXCOption, NoXarchOption, CC1Option, HelpHidden]>,
- HelpText<"Override validator version for module. Format: <major.minor>;"
- "Default: DXIL.dll version or current internal version">,
- MarshallingInfoString<TargetOpts<"DxilValidatorVersion">>;
- def target_profile : DXCJoinedOrSeparate<"T">, MetaVarName<"<profile>">,
- HelpText<"Set target profile">,
- Values<"ps_6_0, ps_6_1, ps_6_2, ps_6_3, ps_6_4, ps_6_5, ps_6_6, ps_6_7,"
- "vs_6_0, vs_6_1, vs_6_2, vs_6_3, vs_6_4, vs_6_5, vs_6_6, vs_6_7,"
- "gs_6_0, gs_6_1, gs_6_2, gs_6_3, gs_6_4, gs_6_5, gs_6_6, gs_6_7,"
- "hs_6_0, hs_6_1, hs_6_2, hs_6_3, hs_6_4, hs_6_5, hs_6_6, hs_6_7,"
- "ds_6_0, ds_6_1, ds_6_2, ds_6_3, ds_6_4, ds_6_5, ds_6_6, ds_6_7,"
- "cs_6_0, cs_6_1, cs_6_2, cs_6_3, cs_6_4, cs_6_5, cs_6_6, cs_6_7,"
- "lib_6_3, lib_6_4, lib_6_5, lib_6_6, lib_6_7, lib_6_x,"
- "ms_6_5, ms_6_6, ms_6_7,"
- "as_6_5, as_6_6, as_6_7">;
- def dxc_D : Option<["--", "/", "-"], "D", KIND_JOINED_OR_SEPARATE>,
- Group<dxc_Group>, Flags<[DXCOption, NoXarchOption]>, Alias<D>;
- def emit_pristine_llvm : DXCFlag<"emit-pristine-llvm">,
- HelpText<"Emit pristine LLVM IR from the frontend by not running any LLVM passes at all."
- "Same as -S + -emit-llvm + -disable-llvm-passes.">;
- def fcgl : DXCFlag<"fcgl">, Alias<emit_pristine_llvm>;
- def enable_16bit_types : DXCFlag<"enable-16bit-types">, Alias<fnative_half_type>,
- HelpText<"Enable 16-bit types and disable min precision types."
- "Available in HLSL 2018 and shader model 6.2.">;
- def hlsl_entrypoint : Option<["-"], "hlsl-entry", KIND_SEPARATE>,
- Group<dxc_Group>,
- Flags<[CC1Option]>,
- MarshallingInfoString<TargetOpts<"HLSLEntry">, "\"main\"">,
- HelpText<"Entry point name for hlsl">;
- def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>,
- Group<dxc_Group>,
- Flags<[DXCOption, NoXarchOption]>,
- HelpText<"Entry point name">;
|