diff options
Diffstat (limited to 'gcc/d/d-lang.cc')
-rw-r--r-- | gcc/d/d-lang.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/d/d-lang.cc b/gcc/d/d-lang.cc index dbf7a8b..576eefc 100644 --- a/gcc/d/d-lang.cc +++ b/gcc/d/d-lang.cc @@ -674,6 +674,7 @@ d_handle_option (size_t scode, const char *arg, HOST_WIDE_INT value, case OPT_ftransition_all: global.params.vfield = value; global.params.vgc = value; + global.params.vin = value; global.params.vmarkdown= value; global.params.vtls = value; break; @@ -682,6 +683,10 @@ d_handle_option (size_t scode, const char *arg, HOST_WIDE_INT value, global.params.vfield = value; break; + case OPT_ftransition_in: + global.params.vin = value; + break; + case OPT_ftransition_nogc: global.params.vgc = value; break; @@ -1176,6 +1181,14 @@ d_parse_file (void) { Module *m = modules[i]; + /* If this is the `__main` module, check that `D main` hasn't already + been declared in user code before running semantic on it. */ + if (m == main_module && global.hasMainFunction) + { + modules.remove (i); + continue; + } + if (global.params.verbose) message ("semantic %s", m->toChars ()); @@ -1357,6 +1370,9 @@ d_parse_file (void) for (size_t i = 0; i < modules.length; i++) { Module *m = modules[i]; + + /* Skip generating code for header files, or when the module wasn't + specified by `-fonly=`. */ if ((m->isHdrFile && m != main_module) || (d_option.fonly && m != Module::rootModule)) continue; |