mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-07 11:26:02 +03:00
Add new CLI options -fno-moduleinfo and -fno-rtti
Using the same names as GDC.
This commit is contained in:
parent
a2bd6a6c95
commit
406df56b82
6 changed files with 15 additions and 5 deletions
|
@ -575,6 +575,12 @@ cl::opt<bool>
|
||||||
cl::desc("Disable generation of exception stack unwinding "
|
cl::desc("Disable generation of exception stack unwinding "
|
||||||
"code, assuming no Exceptions will be thrown"));
|
"code, assuming no Exceptions will be thrown"));
|
||||||
|
|
||||||
|
cl::opt<bool> fNoModuleInfo("fno-moduleinfo", cl::ZeroOrMore,
|
||||||
|
cl::desc("Disable generation of ModuleInfos"));
|
||||||
|
|
||||||
|
cl::opt<bool> fNoRTTI("fno-rtti", cl::ZeroOrMore,
|
||||||
|
cl::desc("Disable generation of TypeInfos"));
|
||||||
|
|
||||||
cl::opt<bool>
|
cl::opt<bool>
|
||||||
fSplitStack("fsplit-stack", cl::ZeroOrMore,
|
fSplitStack("fsplit-stack", cl::ZeroOrMore,
|
||||||
cl::desc("Use segmented stack (see Clang documentation)"));
|
cl::desc("Use segmented stack (see Clang documentation)"));
|
||||||
|
|
|
@ -101,6 +101,8 @@ void setDefaultMathOptions(llvm::TargetOptions &targetOptions);
|
||||||
extern cl::opt<bool> fNoDiscardValueNames;
|
extern cl::opt<bool> fNoDiscardValueNames;
|
||||||
extern cl::opt<bool> fNullPointerIsValid;
|
extern cl::opt<bool> fNullPointerIsValid;
|
||||||
extern cl::opt<bool> fNoExceptions;
|
extern cl::opt<bool> fNoExceptions;
|
||||||
|
extern cl::opt<bool> fNoModuleInfo;
|
||||||
|
extern cl::opt<bool> fNoRTTI;
|
||||||
extern cl::opt<bool> fSplitStack;
|
extern cl::opt<bool> fSplitStack;
|
||||||
|
|
||||||
// Arguments to -d-debug
|
// Arguments to -d-debug
|
||||||
|
|
|
@ -337,6 +337,8 @@ void parseCommandLine(Strings &sourceFiles) {
|
||||||
global.params.obj = !dontWriteObj;
|
global.params.obj = !dontWriteObj;
|
||||||
global.params.useInlineAsm = !noAsm;
|
global.params.useInlineAsm = !noAsm;
|
||||||
global.params.useExceptions = !fNoExceptions;
|
global.params.useExceptions = !fNoExceptions;
|
||||||
|
global.params.useModuleInfo = !fNoModuleInfo;
|
||||||
|
global.params.useTypeInfo = !fNoRTTI;
|
||||||
|
|
||||||
// String options
|
// String options
|
||||||
global.params.objname = opts::fromPathString(objectFile);
|
global.params.objname = opts::fromPathString(objectFile);
|
||||||
|
|
|
@ -449,8 +449,8 @@ void codegenModule(IRState *irs, Module *m) {
|
||||||
fatal();
|
fatal();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skip emission of all the additional module metadata if:
|
// Skip emission of the ModuleInfo if:
|
||||||
// a) the -betterC switch is on,
|
// a) the -betterC or -fno-moduleinfo switch is on,
|
||||||
// b) requested explicitly by the user via pragma(LDC_no_moduleinfo),
|
// b) requested explicitly by the user via pragma(LDC_no_moduleinfo),
|
||||||
// c) there's no ModuleInfo declaration, or if
|
// c) there's no ModuleInfo declaration, or if
|
||||||
// d) the module is a C file.
|
// d) the module is a C file.
|
||||||
|
|
|
@ -2162,7 +2162,7 @@ public:
|
||||||
LOG_SCOPE;
|
LOG_SCOPE;
|
||||||
|
|
||||||
// TODO: still required?
|
// TODO: still required?
|
||||||
if (global.params.betterC) {
|
if (!global.params.useGC) {
|
||||||
error(
|
error(
|
||||||
e->loc,
|
e->loc,
|
||||||
"array concatenation of expression `%s` requires the GC which is not "
|
"array concatenation of expression `%s` requires the GC which is not "
|
||||||
|
|
|
@ -64,9 +64,9 @@ public:
|
||||||
/// Return the LLVM type of this Aggregate (w/o the reference for classes)
|
/// Return the LLVM type of this Aggregate (w/o the reference for classes)
|
||||||
llvm::StructType *getLLStructType();
|
llvm::StructType *getLLStructType();
|
||||||
|
|
||||||
|
|
||||||
/// Whether to suppress the TypeInfo definition for the aggregate via
|
/// Whether to suppress the TypeInfo definition for the aggregate via
|
||||||
/// `-betterC`, no `object.TypeInfo`, or `pragma(LDC_no_typeinfo)`.
|
/// `-betterC` / `-fno-rtti`, no `object.TypeInfo`, or
|
||||||
|
/// `pragma(LDC_no_typeinfo)`.
|
||||||
bool suppressTypeInfo() const;
|
bool suppressTypeInfo() const;
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue