LangOptions.h revision a4d71455f0d418e16cc0c5c5aa55a3bad3494aee
15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer//===--- LangOptions.h - C Language Family Language Options -----*- C++ -*-===// 25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// 35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// The LLVM Compiler Infrastructure 45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// 50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner// This file is distributed under the University of Illinois Open Source 60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner// License. See LICENSE.TXT for details. 75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// 85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer//===----------------------------------------------------------------------===// 95f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// 105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// This file defines the LangOptions interface. 115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// 125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer//===----------------------------------------------------------------------===// 135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#ifndef LLVM_CLANG_LANGOPTIONS_H 155f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#define LLVM_CLANG_LANGOPTIONS_H 165f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 171b0969590e712d7d52fc9c0d43d3ab85c36d07a6Daniel Dunbar#include <string> 181b0969590e712d7d52fc9c0d43d3ab85c36d07a6Daniel Dunbar 195f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencernamespace clang { 205f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 215f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer/// LangOptions - This class keeps track of the various options that can be 225f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer/// enabled, which controls the dialect of C that is accepted. 23ea684e699ea84e61711e279f5fa7a1b9f3d46bc2Cedric Venetclass LangOptions { 24ea684e699ea84e61711e279f5fa7a1b9f3d46bc2Cedric Venetpublic: 255f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer unsigned Trigraphs : 1; // Trigraphs in source files. 26d658b562e80d6ef7a1118e34ff12802c6e2fccedChris Lattner unsigned BCPLComment : 1; // BCPL-style '//' comments. 27e4f2142d00fa5fdb580c4e2413da91882d955381Chris Lattner unsigned Bool : 1; // 'bool', 'true', 'false' keywords. 285f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer unsigned DollarIdents : 1; // '$' allowed in identifiers. 29c1571453de3db2b26c15cc13115fac4ece84aa7cDaniel Dunbar unsigned AsmPreprocessor : 1; // Preprocessor in asm mode. 307e9c90b1a7402dfeca87980cb07e36bedc1a42b8Chris Lattner unsigned GNUMode : 1; // True in gnu99 mode false in c99 mode (etc) 31eb5d7b752651283de5abfcc2f91df7227582a08dChandler Carruth unsigned GNUKeywords : 1; // True if GNU-only keywords are allowed 32d658b562e80d6ef7a1118e34ff12802c6e2fccedChris Lattner unsigned ImplicitInt : 1; // C89 implicit 'int'. 333426b9bdc236df389f3aa00b56bf9154659511f2Chris Lattner unsigned Digraphs : 1; // C94, C99 and C++ 345f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer unsigned HexFloats : 1; // C99 Hexadecimal float constants. 355f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer unsigned C99 : 1; // C99 Support 365f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer unsigned Microsoft : 1; // Microsoft extensions. 375f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer unsigned CPlusPlus : 1; // C++ Support 38d4b80f1a0e946aa38c5db7d6f8afcdf05ed57116Chris Lattner unsigned CPlusPlus0x : 1; // C++0x Support 395f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer unsigned CXXOperatorNames : 1; // Treat C++ operator names as keywords. 401eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 4101d9dbf4ae627e2ba42fc23485789a33fa296516Ted Kremenek unsigned ObjC1 : 1; // Objective-C 1 support enabled. 4201d9dbf4ae627e2ba42fc23485789a33fa296516Ted Kremenek unsigned ObjC2 : 1; // Objective-C 2 support enabled. 4330bc57187be7535c57ef1ca8ff3e765653e94332Fariborz Jahanian unsigned ObjCNonFragileABI : 1; // Objective-C modern abi enabled 44412e798941ca64e2e6b084323915fa9aa5f6bdf3Fariborz Jahanian unsigned ObjCNonFragileABI2 : 1; // Objective-C enhanced modern abi enabled 451eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 46ee98ac5a1330db432b188dd2d38b6631aac47bf1Anders Carlsson unsigned PascalStrings : 1; // Allow Pascal strings 4745e8cbdce25c2e16c7aac2036a591f6190097ae6Chris Lattner unsigned WritableStrings : 1; // Allow writable strings 484b7a834e0fecddd9eaf1f4567867c718e4eebf50John McCall unsigned ConstStrings : 1; // Add const qualifier to strings (-Wwrite-strings) 49695dbb697d78d4c507e12b0acc6129b9650d4c3eAnders Carlsson unsigned LaxVectorConversions : 1; 504e3629e676c7d86d988df29dfeeaa3a8c9f0cf29Nate Begeman unsigned AltiVec : 1; // Support AltiVec-style vector initializers. 516379a7a15335e0af543a942efe9cfd514a83dab8Daniel Dunbar unsigned Exceptions : 1; // Support exception handling. 5273482884560be041d86eccbd7dd5a6918677393bDaniel Dunbar unsigned SjLjExceptions : 1; // Use setjmp-longjump exception handling. 53de05057932cebc3f43911f87d75869cb7b705a19Mike Stump unsigned RTTI : 1; // Support RTTI information. 54f77ac86f4eca528a04b817d7ad7f045a47d52712Daniel Dunbar 55f77ac86f4eca528a04b817d7ad7f045a47d52712Daniel Dunbar unsigned NeXTRuntime : 1; // Use NeXT runtime. 563573c0c0b44a1ac8f76a00af1bc75e94ca03d704Douglas Gregor unsigned Freestanding : 1; // Freestanding implementation 577644f0726c310ec4224085eaea5f9aff8b957d90Chris Lattner unsigned NoBuiltin : 1; // Do not use builtin functions (-fno-builtin) 58f77ac86f4eca528a04b817d7ad7f045a47d52712Daniel Dunbar 59e1b29efab32d02e114046d33cca242a88585bf8aAnders Carlsson unsigned ThreadsafeStatics : 1; // Whether static initializers are protected 60c1571453de3db2b26c15cc13115fac4ece84aa7cDaniel Dunbar // by locks. 615345c391c65d1780a0d7b0102b7f735cc3f82732Daniel Dunbar unsigned POSIXThreads : 1; // Compiling with POSIX thread support 625345c391c65d1780a0d7b0102b7f735cc3f82732Daniel Dunbar // (-pthread) 635618bd4a52c45fbbb605e3ba885663b2164db8a3Steve Naroff unsigned Blocks : 1; // block extension to C 64d604c40e933c445ff33ac83d62cc6b1adcf7014cDaniel Dunbar unsigned EmitAllDecls : 1; // Emit all declarations, even if 65d604c40e933c445ff33ac83d62cc6b1adcf7014cDaniel Dunbar // they are unused. 66ef2abfee3ea16ec74942dc09e9e425f46aeb2582Daniel Dunbar unsigned MathErrno : 1; // Math functions must respect errno 67ef2abfee3ea16ec74942dc09e9e425f46aeb2582Daniel Dunbar // (modulo the platform support). 68ef2abfee3ea16ec74942dc09e9e425f46aeb2582Daniel Dunbar 69810f6d5d6223adaab0ccf0139f40de6484ad1bb5Chris Lattner unsigned HeinousExtensions : 1; // Extensions that we really don't like and 70810f6d5d6223adaab0ccf0139f40de6484ad1bb5Chris Lattner // may be ripped out at any time. 717cd2e93125e2f3b6ca01b24ed0c3fd7e94683fd9Fariborz Jahanian 724ca076fffdfa72ebfab364c8de091b89fc291ae6Anders Carlsson unsigned Optimize : 1; // Whether __OPTIMIZE__ should be defined. 731eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump unsigned OptimizeSize : 1; // Whether __OPTIMIZE_SIZE__ should be 744ca076fffdfa72ebfab364c8de091b89fc291ae6Anders Carlsson // defined. 753bbc75302fd43cf13d868b46c94ff8794b302e43Daniel Dunbar unsigned Static : 1; // Should __STATIC__ be defined (as 763bbc75302fd43cf13d868b46c94ff8794b302e43Daniel Dunbar // opposed to __DYNAMIC__). 779fd0b1f845a61e71dd8099f596532d34c519630aDaniel Dunbar unsigned PICLevel : 2; // The value for __PIC__, if non-zero. 789fd0b1f845a61e71dd8099f596532d34c519630aDaniel Dunbar 793bbc75302fd43cf13d868b46c94ff8794b302e43Daniel Dunbar unsigned GNUInline : 1; // Should GNU inline semantics be 803bbc75302fd43cf13d868b46c94ff8794b302e43Daniel Dunbar // used (instead of C99 semantics). 813bbc75302fd43cf13d868b46c94ff8794b302e43Daniel Dunbar unsigned NoInline : 1; // Should __NO_INLINE__ be defined. 823bbc75302fd43cf13d868b46c94ff8794b302e43Daniel Dunbar 83448f5e6c191b40c90a67c48547df420d16f48b96Fariborz Jahanian unsigned ObjCGCBitmapPrint : 1; // Enable printing of gc's bitmap layout 84448f5e6c191b40c90a67c48547df420d16f48b96Fariborz Jahanian // for __weak/__strong ivars. 85448f5e6c191b40c90a67c48547df420d16f48b96Fariborz Jahanian 861eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump unsigned AccessControl : 1; // Whether C++ access control should 87a33d9b4ebf732a5da6d56fd7319ff6c020789b1cAnders Carlsson // be enabled. 8815b91764d08e886391c865c4a444d7b51141c284Eli Friedman unsigned CharIsSigned : 1; // Whether char is a signed or unsigned type 89a6fda124bf380479529d6a80b84b62cacd3cb707John Thompson unsigned ShortWChar : 1; // Force wchar_t to be unsigned short int. 904e3629e676c7d86d988df29dfeeaa3a8c9f0cf29Nate Begeman 914e3629e676c7d86d988df29dfeeaa3a8c9f0cf29Nate Begeman unsigned OpenCL : 1; // OpenCL C99 language extensions. 92fc2844846e91398205fddc71196fe9dda04e105fNuno Lopes 93fc2844846e91398205fddc71196fe9dda04e105fNuno Lopes unsigned AssumeSaneOperatorNew : 1; // Whether to add __attribute__((malloc)) 94fc2844846e91398205fddc71196fe9dda04e105fNuno Lopes // to the declaration of C++'s new 95fc2844846e91398205fddc71196fe9dda04e105fNuno Lopes // operators 9692f5822df6a0d7571df44b5d279ed4f017fbb0e6Anders Carlsson unsigned ElideConstructors : 1; // Whether C++ copy constructors should be 9792f5822df6a0d7571df44b5d279ed4f017fbb0e6Anders Carlsson // elided if possible. 98824d7ea07a4e9208925daa6ae9289fb2b39bce9fAnders Carlsson unsigned CatchUndefined : 1; // Generate code to check for undefined ops. 99b69eca5d2196c06870d3eeb62d689feebaaa8a4dDaniel Dunbar unsigned DumpRecordLayouts : 1; /// Dump the layout of IRgen'd records. 100046c294a43024874ff35656c6e785b64e72f1f36Anders Carlsson unsigned DumpVTableLayouts : 1; /// Dump the layouts of emitted vtables. 10133e982bf782d851bfe5767acb1336fcf3419ac6bFariborz Jahanian unsigned NoConstantCFStrings : 1; // Do not do CF strings 1027cf84d66965a7706004d8590b5af5fe54b85f525Douglas Gregor unsigned InlineVisibilityHidden : 1; // Whether inline C++ methods have 1037cf84d66965a7706004d8590b5af5fe54b85f525Douglas Gregor // hidden visibility by default. 104fb937b8c5f1c5dc9cfd4223b5cae230cc42b0287Daniel Dunbar 105fb937b8c5f1c5dc9cfd4223b5cae230cc42b0287Daniel Dunbar // FIXME: This is just a temporary option, for testing purposes. 106fb937b8c5f1c5dc9cfd4223b5cae230cc42b0287Daniel Dunbar unsigned NoBitFieldTypeAlign : 1; 107fb937b8c5f1c5dc9cfd4223b5cae230cc42b0287Daniel Dunbar 10801d9dbf4ae627e2ba42fc23485789a33fa296516Ted Kremenekprivate: 109a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner // We declare multibit enums as unsigned because MSVC insists on making enums 110a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner // signed. Set/Query these values using accessors. 111a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner unsigned GC : 2; // Objective-C Garbage Collection modes. 1127cd2e93125e2f3b6ca01b24ed0c3fd7e94683fd9Fariborz Jahanian unsigned SymbolVisibility : 3; // Symbol's visibility. 113a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner unsigned StackProtector : 2; // Whether stack protectors are on. 114a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner unsigned SignedOverflowBehavior : 2; // How to handle signed integer overflow. 1157cd2e93125e2f3b6ca01b24ed0c3fd7e94683fd9Fariborz Jahanian 1161eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumppublic: 11726dce44534602660ea9f4152bffc5436fc5fe3b2Douglas Gregor unsigned InstantiationDepth; // Maximum template instantiation depth. 11801d9dbf4ae627e2ba42fc23485789a33fa296516Ted Kremenek 1191b0969590e712d7d52fc9c0d43d3ab85c36d07a6Daniel Dunbar std::string ObjCConstantStringClass; 1208a5a9aaddb627c0884c2ed8db55cc29fdb601195David Chisnall 12101d9dbf4ae627e2ba42fc23485789a33fa296516Ted Kremenek enum GCMode { NonGC, GCOnly, HybridGC }; 1224ebe3e4c811a376c423a544f5e76ee2e96533324Bill Wendling enum StackProtectorMode { SSPOff, SSPOn, SSPReq }; 1231eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump enum VisibilityMode { 1241eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump Default, 1251eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump Protected, 12604d4078425614bf9fd58d606335c1f5f74ee7fa4Daniel Dunbar Hidden 12704d4078425614bf9fd58d606335c1f5f74ee7fa4Daniel Dunbar }; 128a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner 129a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner enum SignedOverflowBehaviorTy { 130a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner SOB_Undefined, // Default C standard behavior. 131a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner SOB_Defined, // -fwrapv 132a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner SOB_Trapping // -ftrapv 133a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner }; 1341eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 1355f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer LangOptions() { 136e4f2142d00fa5fdb580c4e2413da91882d955381Chris Lattner Trigraphs = BCPLComment = Bool = DollarIdents = AsmPreprocessor = 0; 137eb5d7b752651283de5abfcc2f91df7227582a08dChandler Carruth GNUMode = GNUKeywords = ImplicitInt = Digraphs = 0; 138d658b562e80d6ef7a1118e34ff12802c6e2fccedChris Lattner HexFloats = 0; 139412e798941ca64e2e6b084323915fa9aa5f6bdf3Fariborz Jahanian GC = ObjC1 = ObjC2 = ObjCNonFragileABI = ObjCNonFragileABI2 = 0; 1407cf84d66965a7706004d8590b5af5fe54b85f525Douglas Gregor NoConstantCFStrings = 0; InlineVisibilityHidden = 0; 141c71133f0cf820f0708b9dd141563b910530498c1Eli Friedman C99 = Microsoft = CPlusPlus = CPlusPlus0x = 0; 1424b7a834e0fecddd9eaf1f4567867c718e4eebf50John McCall CXXOperatorNames = PascalStrings = WritableStrings = ConstStrings = 0; 14373482884560be041d86eccbd7dd5a6918677393bDaniel Dunbar Exceptions = SjLjExceptions = Freestanding = NoBuiltin = 0; 144c5a97ec19408c3dca4b6a6385f11d8c783b94d0bDaniel Dunbar NeXTRuntime = 1; 145de05057932cebc3f43911f87d75869cb7b705a19Mike Stump RTTI = 1; 146b0f90ccbc1079bb054071b836aa6dd265f33f3a2Anders Carlsson LaxVectorConversions = 1; 147810f6d5d6223adaab0ccf0139f40de6484ad1bb5Chris Lattner HeinousExtensions = 0; 14845483f7a1b3e57b4603b141bee80596b2d4dd443Bill Wendling AltiVec = OpenCL = StackProtector = 0; 1498a5a9aaddb627c0884c2ed8db55cc29fdb601195David Chisnall 15004d4078425614bf9fd58d606335c1f5f74ee7fa4Daniel Dunbar SymbolVisibility = (unsigned) Default; 1517cf84d66965a7706004d8590b5af5fe54b85f525Douglas Gregor 152a508b7de6c5246ab04ed69d0ab4e9977ec1fb4d4Anders Carlsson ThreadsafeStatics = 1; 1535345c391c65d1780a0d7b0102b7f735cc3f82732Daniel Dunbar POSIXThreads = 0; 154ae0ee03fd9d36446ee70e502fdaf5ed5acec269fChris Lattner Blocks = 0; 155d604c40e933c445ff33ac83d62cc6b1adcf7014cDaniel Dunbar EmitAllDecls = 0; 156ef2abfee3ea16ec74942dc09e9e425f46aeb2582Daniel Dunbar MathErrno = 1; 157a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner SignedOverflowBehavior = SOB_Undefined; 158a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner 159fc2844846e91398205fddc71196fe9dda04e105fNuno Lopes AssumeSaneOperatorNew = 1; 160fc2844846e91398205fddc71196fe9dda04e105fNuno Lopes 161a33d9b4ebf732a5da6d56fd7319ff6c020789b1cAnders Carlsson // FIXME: The default should be 1. 162a33d9b4ebf732a5da6d56fd7319ff6c020789b1cAnders Carlsson AccessControl = 0; 16392f5822df6a0d7571df44b5d279ed4f017fbb0e6Anders Carlsson ElideConstructors = 1; 1641eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 165a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner SignedOverflowBehavior = 0; 166448f5e6c191b40c90a67c48547df420d16f48b96Fariborz Jahanian ObjCGCBitmapPrint = 0; 1672add47387d39ee6c40dcb0e9f3d51c27ad1e113cMike Stump 168e2e69ef80ac09a489d00ce104e2e87867dc3dd26Douglas Gregor InstantiationDepth = 1024; 1691eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 1704ca076fffdfa72ebfab364c8de091b89fc291ae6Anders Carlsson Optimize = 0; 1714ca076fffdfa72ebfab364c8de091b89fc291ae6Anders Carlsson OptimizeSize = 0; 1729fd0b1f845a61e71dd8099f596532d34c519630aDaniel Dunbar 1733bbc75302fd43cf13d868b46c94ff8794b302e43Daniel Dunbar Static = 0; 1749fd0b1f845a61e71dd8099f596532d34c519630aDaniel Dunbar PICLevel = 0; 175c9abc043af88f90d177a5bd147f627b78ca49fdeDaniel Dunbar 1763bbc75302fd43cf13d868b46c94ff8794b302e43Daniel Dunbar GNUInline = 0; 1773bbc75302fd43cf13d868b46c94ff8794b302e43Daniel Dunbar NoInline = 0; 1783bbc75302fd43cf13d868b46c94ff8794b302e43Daniel Dunbar 17915b91764d08e886391c865c4a444d7b51141c284Eli Friedman CharIsSigned = 1; 18040d1bb6383c14d5f8249d0640e8088a91b694c66John Thompson ShortWChar = 0; 1819c276ae0f24d4cee8f7954069d4b8eae45d0447dMike Stump CatchUndefined = 0; 182b69eca5d2196c06870d3eeb62d689feebaaa8a4dDaniel Dunbar DumpRecordLayouts = 0; 183046c294a43024874ff35656c6e785b64e72f1f36Anders Carlsson DumpVTableLayouts = 0; 184fb937b8c5f1c5dc9cfd4223b5cae230cc42b0287Daniel Dunbar NoBitFieldTypeAlign = 0; 1855f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer } 1861eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 18701d9dbf4ae627e2ba42fc23485789a33fa296516Ted Kremenek GCMode getGCMode() const { return (GCMode) GC; } 18801d9dbf4ae627e2ba42fc23485789a33fa296516Ted Kremenek void setGCMode(GCMode m) { GC = (unsigned) m; } 1897cd2e93125e2f3b6ca01b24ed0c3fd7e94683fd9Fariborz Jahanian 1904ebe3e4c811a376c423a544f5e76ee2e96533324Bill Wendling StackProtectorMode getStackProtectorMode() const { 1914ebe3e4c811a376c423a544f5e76ee2e96533324Bill Wendling return static_cast<StackProtectorMode>(StackProtector); 1924ebe3e4c811a376c423a544f5e76ee2e96533324Bill Wendling } 1934ebe3e4c811a376c423a544f5e76ee2e96533324Bill Wendling void setStackProtectorMode(StackProtectorMode m) { 1944ebe3e4c811a376c423a544f5e76ee2e96533324Bill Wendling StackProtector = static_cast<unsigned>(m); 1954ebe3e4c811a376c423a544f5e76ee2e96533324Bill Wendling } 1964ebe3e4c811a376c423a544f5e76ee2e96533324Bill Wendling 1971eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump VisibilityMode getVisibilityMode() const { 1981eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump return (VisibilityMode) SymbolVisibility; 19904d4078425614bf9fd58d606335c1f5f74ee7fa4Daniel Dunbar } 2007cd2e93125e2f3b6ca01b24ed0c3fd7e94683fd9Fariborz Jahanian void setVisibilityMode(VisibilityMode v) { SymbolVisibility = (unsigned) v; } 201a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner 202a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner SignedOverflowBehaviorTy getSignedOverflowBehavior() const { 203a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner return (SignedOverflowBehaviorTy)SignedOverflowBehavior; 204a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner } 205a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner void setSignedOverflowBehavior(SignedOverflowBehaviorTy V) { 206a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner SignedOverflowBehavior = (unsigned)V; 207a4d71455f0d418e16cc0c5c5aa55a3bad3494aeeChris Lattner } 2085f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer}; 2095f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 2105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer} // end namespace clang 2115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 2125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#endif 213