mirror of
https://github.com/intel/llvm.git
synced 2026-01-24 08:30:34 +08:00
Add support for Borland extensions via option -fborland-extensions
(original patch r112791 was reverted due to a bug). llvm-svn: 112915
This commit is contained in:
@@ -168,6 +168,10 @@ Enable support for Pascal-style strings with "\pfoo".
|
||||
|
||||
Enable support for Microsoft extensions.
|
||||
|
||||
=item B<-fborland-extensions>
|
||||
|
||||
Enable support for Borland extensions.
|
||||
|
||||
=item B<-fwritable-strings>
|
||||
|
||||
Make all string literals default to writable. This disables uniquing of
|
||||
|
||||
@@ -34,6 +34,7 @@ public:
|
||||
unsigned HexFloats : 1; // C99 Hexadecimal float constants.
|
||||
unsigned C99 : 1; // C99 Support
|
||||
unsigned Microsoft : 1; // Microsoft extensions.
|
||||
unsigned Borland : 1; // Borland extensions.
|
||||
unsigned CPlusPlus : 1; // C++ Support
|
||||
unsigned CPlusPlus0x : 1; // C++0x Support
|
||||
unsigned CXXOperatorNames : 1; // Treat C++ operator names as keywords.
|
||||
@@ -140,7 +141,7 @@ public:
|
||||
HexFloats = 0;
|
||||
GC = ObjC1 = ObjC2 = ObjCNonFragileABI = ObjCNonFragileABI2 = 0;
|
||||
NoConstantCFStrings = 0; InlineVisibilityHidden = 0;
|
||||
C99 = Microsoft = CPlusPlus = CPlusPlus0x = 0;
|
||||
C99 = Microsoft = Borland = CPlusPlus = CPlusPlus0x = 0;
|
||||
CXXOperatorNames = PascalStrings = WritableStrings = ConstStrings = 0;
|
||||
Exceptions = SjLjExceptions = Freestanding = NoBuiltin = 0;
|
||||
NeXTRuntime = 1;
|
||||
|
||||
@@ -418,6 +418,8 @@ def fmath_errno : Flag<"-fmath-errno">,
|
||||
HelpText<"Require math functions to indicate errors by setting errno">;
|
||||
def fms_extensions : Flag<"-fms-extensions">,
|
||||
HelpText<"Accept some non-standard constructs used in Microsoft header files ">;
|
||||
def fborland_extensions : Flag<"-fborland-extensions">,
|
||||
HelpText<"Accept non-standard constructs supported by the Borland compiler">;
|
||||
def main_file_name : Separate<"-main-file-name">,
|
||||
HelpText<"Main file name to use for debug info">;
|
||||
def fno_elide_constructors : Flag<"-fno-elide-constructors">,
|
||||
|
||||
@@ -243,6 +243,7 @@ def fast : Flag<"-fast">, Group<f_Group>;
|
||||
def fasynchronous_unwind_tables : Flag<"-fasynchronous-unwind-tables">, Group<f_Group>;
|
||||
def fblocks : Flag<"-fblocks">, Group<f_Group>;
|
||||
def fbootclasspath_EQ : Joined<"-fbootclasspath=">, Group<f_Group>;
|
||||
def fborland_extensions : Flag<"-fborland-extensions">, Group<f_Group>;
|
||||
def fbuiltin_strcat : Flag<"-fbuiltin-strcat">, Group<f_Group>;
|
||||
def fbuiltin_strcpy : Flag<"-fbuiltin-strcpy">, Group<f_Group>;
|
||||
def fbuiltin : Flag<"-fbuiltin">, Group<f_Group>;
|
||||
@@ -302,6 +303,7 @@ 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>;
|
||||
def fno_blocks : Flag<"-fno-blocks">, Group<f_Group>;
|
||||
def fno_borland_extensions : Flag<"-fno-borland-extensions">, Group<f_Group>;
|
||||
def fno_builtin_strcat : Flag<"-fno-builtin-strcat">, Group<f_Group>;
|
||||
def fno_builtin_strcpy : Flag<"-fno-builtin-strcpy">, Group<f_Group>;
|
||||
def fno_builtin : Flag<"-fno-builtin">, Group<f_Group>;
|
||||
|
||||
@@ -1215,6 +1215,11 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
getToolChain().getTriple().getOS() == llvm::Triple::Win32))
|
||||
CmdArgs.push_back("-fms-extensions");
|
||||
|
||||
// -fborland-extensions=0 is default.
|
||||
if (Args.hasFlag(options::OPT_fborland_extensions,
|
||||
options::OPT_fno_borland_extensions, false))
|
||||
CmdArgs.push_back("-fborland-extensions");
|
||||
|
||||
// -fgnu-keywords default varies depending on language; only pass if
|
||||
// specified.
|
||||
if (Arg *A = Args.getLastArg(options::OPT_fgnu_keywords,
|
||||
|
||||
@@ -526,6 +526,8 @@ static void LangOptsToArgs(const LangOptions &Opts,
|
||||
Res.push_back("-fgnu-keywords");
|
||||
if (Opts.Microsoft)
|
||||
Res.push_back("-fms-extensions");
|
||||
if (Opts.Borland)
|
||||
Res.push_back("-fborland-extensions");
|
||||
if (Opts.ObjCNonFragileABI)
|
||||
Res.push_back("-fobjc-nonfragile-abi");
|
||||
if (Opts.ObjCNonFragileABI2)
|
||||
@@ -1317,6 +1319,7 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
|
||||
!Opts.AsmPreprocessor);
|
||||
Opts.PascalStrings = Args.hasArg(OPT_fpascal_strings);
|
||||
Opts.Microsoft = Args.hasArg(OPT_fms_extensions);
|
||||
Opts.Borland = Args.hasArg(OPT_fborland_extensions);
|
||||
Opts.WritableStrings = Args.hasArg(OPT_fwritable_strings);
|
||||
Opts.ConstStrings = Args.hasArg(OPT_Wwrite_strings);
|
||||
if (Args.hasArg(OPT_fno_lax_vector_conversions))
|
||||
|
||||
6
clang/test/SemaCXX/borland-extensions.cpp
Normal file
6
clang/test/SemaCXX/borland-extensions.cpp
Normal file
@@ -0,0 +1,6 @@
|
||||
// RUN: %clang_cc1 %s -fsyntax-only -verify -fborland-extensions
|
||||
|
||||
// Borland extensions
|
||||
|
||||
// 1. test -fborland-extensions
|
||||
int dummy_function() { return 0; }
|
||||
Reference in New Issue
Block a user