r312007 - [modules-ts] Omit submodule semantics for TS modules
Author: borisk Date: Tue Aug 29 08:30:18 2017 New Revision: 312007 URL: http://llvm.org/viewvc/llvm-project?rev=312007&view=rev Log: [modules-ts] Omit submodule semantics for TS modules If a TS module name has more than one component (e.g., foo.bar) then we erroneously activated the submodule semantics when encountering a module declaration in the module implementation unit (e.g., 'module foo.bar;'). Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D35678 Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp cfe/trunk/test/CXX/modules-ts/dcl.dcl/dcl.module/dcl.module.import/p1.cpp Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=312007&r1=312006&r2=312007&view=diff == --- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Tue Aug 29 08:30:18 2017 @@ -1601,7 +1601,22 @@ CompilerInstance::loadModule(SourceLocat Module::NameVisibilityKind Visibility, bool IsInclusionDirective) { // Determine what file we're searching from. - StringRef ModuleName = Path[0].first->getName(); + // FIXME: Should we be deciding whether this is a submodule (here and + // below) based on -fmodules-ts or should we pass a flag and make the + // caller decide? + std::string ModuleName; + if (getLangOpts().ModulesTS) { +// FIXME: Same code as Sema::ActOnModuleDecl() so there is probably a +// better place/way to do this. +for (auto &Piece : Path) { + if (!ModuleName.empty()) +ModuleName += "."; + ModuleName += Piece.first->getName(); +} + } + else +ModuleName = Path[0].first->getName(); + SourceLocation ModuleNameLoc = Path[0].second; // If we've already handled this import, just return the cached result. @@ -1816,7 +1831,7 @@ CompilerInstance::loadModule(SourceLocat // Verify that the rest of the module path actually corresponds to // a submodule. - if (Path.size() > 1) { + if (!getLangOpts().ModulesTS && Path.size() > 1) { for (unsigned I = 1, N = Path.size(); I != N; ++I) { StringRef Name = Path[I].first->getName(); clang::Module *Sub = Module->findSubmodule(Name); Modified: cfe/trunk/test/CXX/modules-ts/dcl.dcl/dcl.module/dcl.module.import/p1.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/modules-ts/dcl.dcl/dcl.module/dcl.module.import/p1.cpp?rev=312007&r1=312006&r2=312007&view=diff == --- cfe/trunk/test/CXX/modules-ts/dcl.dcl/dcl.module/dcl.module.import/p1.cpp (original) +++ cfe/trunk/test/CXX/modules-ts/dcl.dcl/dcl.module/dcl.module.import/p1.cpp Tue Aug 29 08:30:18 2017 @@ -2,13 +2,17 @@ // RUN: mkdir -p %t // RUN: echo 'export module x; export int a, b;' > %t/x.cppm // RUN: echo 'export module x.y; export int c;' > %t/x.y.cppm +// RUN: echo 'export module a.b; export int d;' > %t/a.b.cppm // // RUN: %clang_cc1 -std=c++1z -fmodules-ts -emit-module-interface %t/x.cppm -o %t/x.pcm // RUN: %clang_cc1 -std=c++1z -fmodules-ts -emit-module-interface -fmodule-file=%t/x.pcm %t/x.y.cppm -o %t/x.y.pcm +// RUN: %clang_cc1 -std=c++1z -fmodules-ts -emit-module-interface %t/a.b.cppm -o %t/a.b.pcm // -// RUN: %clang_cc1 -std=c++1z -fmodules-ts -I%t -fmodule-file=%t/x.y.pcm -verify %s \ +// RUN: %clang_cc1 -std=c++1z -fmodules-ts -I%t -fmodule-file=%t/x.y.pcm -fmodule-file=%t/a.b.pcm -verify %s \ // RUN:-DMODULE_NAME=z -// RUN: %clang_cc1 -std=c++1z -fmodules-ts -I%t -fmodule-file=%t/x.y.pcm -verify %s \ +// RUN: %clang_cc1 -std=c++1z -fmodules-ts -I%t -fmodule-file=%t/x.y.pcm -fmodule-file=%t/a.b.pcm -verify %s \ +// RUN:-DMODULE_NAME=a.b +// RUN: %clang_cc1 -std=c++1z -fmodules-ts -I%t -fmodule-file=%t/x.y.pcm -fmodule-file=%t/a.b.pcm -verify %s \ // RUN:-DMODULE_X -DMODULE_NAME=x module MODULE_NAME; @@ -33,6 +37,7 @@ import x [[noreturn]]; // expected-error import x [[blarg::noreturn]]; // expected-warning {{unknown attribute 'noreturn' ignored}} import x.y; +import a.b; // Does not imply existence of module a. import x.; // expected-error {{expected a module name after 'import'}} import .x; // expected-error {{expected a module name after 'import'}} ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r312105 - [modules] Add ability to specify module name to module file mapping
Author: borisk Date: Wed Aug 30 01:45:59 2017 New Revision: 312105 URL: http://llvm.org/viewvc/llvm-project?rev=312105&view=rev Log: [modules] Add ability to specify module name to module file mapping Extend the -fmodule-file option to support the [=] value format. If the name is omitted, then the old semantics is preserved (the module file is loaded whether needed or not). If the name is specified, then the mapping is treated as just another prebuilt module search mechanism, similar to -fprebuilt-module-path, and the module file is only loaded if actually used (e.g., via import). With one exception: this mapping also overrides module file references embedded in other modules (which can be useful if module files are moved/renamed as often happens during remote compilation). This override semantics requires some extra work: we now store the module name in addition to the file name in the serialized AST representation. Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D35020 Added: cfe/trunk/test/CXX/modules-ts/basic/basic.search/ cfe/trunk/test/CXX/modules-ts/basic/basic.search/module-import.cpp (with props) Modified: cfe/trunk/docs/Modules.rst cfe/trunk/include/clang/Driver/Options.td cfe/trunk/include/clang/Lex/HeaderSearch.h cfe/trunk/include/clang/Lex/HeaderSearchOptions.h cfe/trunk/include/clang/Serialization/ASTReader.h cfe/trunk/include/clang/Serialization/ModuleManager.h cfe/trunk/lib/Driver/ToolChains/Clang.cpp cfe/trunk/lib/Frontend/CompilerInstance.cpp cfe/trunk/lib/Frontend/CompilerInvocation.cpp cfe/trunk/lib/Frontend/FrontendActions.cpp cfe/trunk/lib/Lex/HeaderSearch.cpp cfe/trunk/lib/Serialization/ASTReader.cpp cfe/trunk/lib/Serialization/ASTWriter.cpp cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp cfe/trunk/lib/Serialization/ModuleManager.cpp Modified: cfe/trunk/docs/Modules.rst URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/Modules.rst?rev=312105&r1=312104&r2=312105&view=diff == --- cfe/trunk/docs/Modules.rst (original) +++ cfe/trunk/docs/Modules.rst Wed Aug 30 01:45:59 2017 @@ -213,8 +213,14 @@ Command-line parameters ``-fno-implicit-modules`` All modules used by the build must be specified with ``-fmodule-file``. -``-fmodule-file=`` - Load the given precompiled module file. +``-fmodule-file=[=]`` + Specify the mapping of module names to precompiled module files. If the + name is omitted, then the module file is loaded whether actually required + or not. If the name is specified, then the mapping is treated as another + prebuilt module search mechanism (in addition to ``-fprebuilt-module-path``) + and the module is only loaded if required. Note that in this case the + specified file also overrides this module's paths that might be embedded + in other precompiled module files. ``-fprebuilt-module-path=`` Specify the path to the prebuilt modules. If specified, we will look for modules in this directory for a given top-level module name. We don't need a module map for loading prebuilt modules in this directory and the compiler will not try to rebuild these modules. This can be specified multiple times. @@ -945,4 +951,3 @@ PCHInternals_ .. [#] The preprocessing context in which the modules are parsed is actually dependent on the command-line options provided to the compiler, including the language dialect and any ``-D`` options. However, the compiled modules for different command-line options are kept distinct, and any preprocessor directives that occur within the translation unit are ignored. See the section on the `Configuration macros declaration`_ for more information. .. _PCHInternals: PCHInternals.html - Modified: cfe/trunk/include/clang/Driver/Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=312105&r1=312104&r2=312105&view=diff == --- cfe/trunk/include/clang/Driver/Options.td (original) +++ cfe/trunk/include/clang/Driver/Options.td Wed Aug 30 01:45:59 2017 @@ -1125,8 +1125,8 @@ def fmodule_map_file : Joined<["-"], "fm Group, Flags<[DriverOption,CC1Option]>, MetaVarName<"">, HelpText<"Load this module map file">; def fmodule_file : Joined<["-"], "fmodule-file=">, - Group, Flags<[DriverOption,CC1Option]>, - HelpText<"Load this precompiled module file">, MetaVarName<"">; + Group, Flags<[DriverOption,CC1Option]>, MetaVarName<"[=]">, + 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, Flags<[CC1Option]>, HelpText<"Ignore the definition of the given macro when building and loading modules">; def fmodules_decluse : Flag <["-"], "fmodules-decluse">, Group, Modified: cfe/trunk/include/clang/Lex
r312106 - [docs] Regenerate command line options reference
Author: borisk Date: Wed Aug 30 02:15:53 2017 New Revision: 312106 URL: http://llvm.org/viewvc/llvm-project?rev=312106&view=rev Log: [docs] Regenerate command line options reference Modified: cfe/trunk/docs/ClangCommandLineReference.rst Modified: cfe/trunk/docs/ClangCommandLineReference.rst URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ClangCommandLineReference.rst?rev=312106&r1=312105&r2=312106&view=diff == --- cfe/trunk/docs/ClangCommandLineReference.rst (original) +++ cfe/trunk/docs/ClangCommandLineReference.rst Wed Aug 30 02:15:53 2017 @@ -56,6 +56,16 @@ Pass to fatbinary invocation Pass to the ptxas assembler +.. option:: -Xopenmp-target + +Pass to the target offloading toolchain. + +.. program:: clang1 +.. option:: -Xopenmp-target= +.. program:: clang + +Pass to the specified target offloading toolchain. The triple that identifies the toolchain must be provided after the equals sign. + .. option:: -Z .. option:: -a, --profile-blocks @@ -312,6 +322,10 @@ Disable standard #include directories fo .. option:: -nostdlib, --no-standard-libraries +.. program:: clang1 +.. option:: -nostdlib++ +.. program:: clang + .. option:: -nostdlibinc .. option:: -o, --output , --output= @@ -656,6 +670,10 @@ Pass to the assembler Pass to the clang compiler +.. option:: -fclang-abi-compat= + +Attempt to match the ABI of Clang + .. option:: -fcomment-block-commands=,... Treat each comma separated argument in as a documentation comment block command @@ -742,6 +760,8 @@ Enable origins tracking in MemorySanitiz Enable use-after-destroy detection in MemorySanitizer +.. option:: -fsanitize-minimal-runtime, -fno-sanitize-minimal-runtime + .. option:: -fsanitize-recover, -fno-sanitize-recover .. program:: clang1 @@ -852,6 +872,10 @@ Use the last modification time of Time when the current build session started +.. option:: -fmodule-file=\[=\] + +Specify the mapping of module name to precompiled module file, or load a module file if name is omitted. + .. option:: -fmodules-cache-path= Specify the module cache path @@ -1361,10 +1385,6 @@ Specify the maximum alignment to enforce .. option:: -fmodule-file-deps, -fno-module-file-deps -.. option:: -fmodule-file= - -Load this precompiled module file - .. option:: -fmodule-map-file= Load this module map file @@ -1447,6 +1467,10 @@ Do not treat C++ operator name keywords .. option:: -fno-working-directory +.. option:: -fnoopenmp-relocatable-target + +Do not compile OpenMP target code as relocatable. + .. option:: -fnoopenmp-use-tls .. option:: -fobjc-abi-version= @@ -1489,6 +1513,10 @@ Enable ARC-style weak references in Obje .. option:: -fopenmp-dump-offload-linker-script +.. option:: -fopenmp-relocatable-target + +OpenMP target code is compiled as relocatable using the -c flag. For OpenMP targets the code is relocatable by default. + .. option:: -fopenmp-use-tls .. option:: -fopenmp-version= @@ -1567,6 +1595,13 @@ Generate instrumented code to collect ex Use instrumentation data for profile-guided optimization +.. option:: -fprofile-sample-accurate, -fauto-profile-accurate, -fno-profile-sample-accurate + +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 + .. option:: -fprofile-sample-use, -fauto-profile, -fno-profile-sample-use .. program:: clang1 @@ -1901,6 +1936,8 @@ Put objects of at most bytes into Enable SVR4-style position-independent code (Mips only) +.. option:: -mabs= + .. option:: -malign-double Align doubles to two words in structs (x86 only) @@ -1939,6 +1976,14 @@ Link stack frames through backchain on S Set EABI type, e.g. 4, 5 or gnu (default depends on triple) +.. option:: -membedded-data, -mno-embedded-data + +Place constants in the .rodata section instead of the .sdata section even if they meet the -G threshold (MIPS) + +.. option:: -mextern-sdata, -mno-extern-sdata + +Assume that externally defined data is in the small data if it meets the -G threshold (MIPS) + .. option:: -mfentry Insert calls to fentry at function entry (x86 only) @@ -1989,6 +2034,10 @@ Use Intel MCU ABI .. option:: -mldc1-sdc1, -mno-ldc1-sdc1 +.. option:: -mlocal-sdata, -mno-local-sdata + +Extend the -G behaviour to object local data (MIPS) + .. option:: -mlong-calls, -mno-long-calls Generate branches with extended addressability, usually via indirect jumps. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D35020: [Modules] Add ability to specify module name to module file mapping
Victor Leschuk writes: > Hello Boris, looks like this revision broke tests on our win10 builder: > http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/11760 > > Clang :: CXX/modules-ts/basic/basic.link/module-declaration.cpp > > I had to revert this revision. Could you please take a look? Sorry about that. I took a look and it seems the problem is with the test's path regex: '{{.*}}/x.pcm' Which, on Windows, is being matched against a path like this: ...\module-declaration.cpp.tmp\x.pcm It looks like the "canonical" fix for this is to use [/\\]. What is the protocol in this situation? Should I fix the test and then re-apply my patch? Thanks, Boris ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r312217 - Fix path regex in test to match on Windows
Author: borisk Date: Wed Aug 30 23:18:08 2017 New Revision: 312217 URL: http://llvm.org/viewvc/llvm-project?rev=312217&view=rev Log: Fix path regex in test to match on Windows Modified: cfe/trunk/test/CXX/modules-ts/basic/basic.link/module-declaration.cpp Modified: cfe/trunk/test/CXX/modules-ts/basic/basic.link/module-declaration.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/modules-ts/basic/basic.link/module-declaration.cpp?rev=312217&r1=312216&r2=312217&view=diff == --- cfe/trunk/test/CXX/modules-ts/basic/basic.link/module-declaration.cpp (original) +++ cfe/trunk/test/CXX/modules-ts/basic/basic.link/module-declaration.cpp Wed Aug 30 23:18:08 2017 @@ -41,7 +41,7 @@ EXPORT module PARTITION MODULE_NAME; #if TEST == 4 // expected-error@-2 {{redefinition of module 'x'}} -// expected-note...@module-declaration.cpp:* {{loaded from '{{.*}}/x.pcm'}} +// expected-note...@module-declaration.cpp:* {{loaded from '{{.*[/\\]}}x.pcm'}} #elif TEST == 6 // expected-error@-5 {{module partition must be declared 'export'}} #elif TEST == 7 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r312220 - [modules] Add ability to specify module name to module file mapping (reapply)
Author: borisk Date: Wed Aug 30 23:26:43 2017 New Revision: 312220 URL: http://llvm.org/viewvc/llvm-project?rev=312220&view=rev Log: [modules] Add ability to specify module name to module file mapping (reapply) Extend the -fmodule-file option to support the [=] value format. If the name is omitted, then the old semantics is preserved (the module file is loaded whether needed or not). If the name is specified, then the mapping is treated as just another prebuilt module search mechanism, similar to -fprebuilt-module-path, and the module file is only loaded if actually used (e.g., via import). With one exception: this mapping also overrides module file references embedded in other modules (which can be useful if module files are moved/renamed as often happens during remote compilation). This override semantics requires some extra work: we now store the module name in addition to the file name in the serialized AST representation. Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D35020 Added: cfe/trunk/test/CXX/modules-ts/basic/basic.search/ cfe/trunk/test/CXX/modules-ts/basic/basic.search/module-import.cpp (with props) Modified: cfe/trunk/docs/Modules.rst cfe/trunk/include/clang/Driver/Options.td cfe/trunk/include/clang/Lex/HeaderSearch.h cfe/trunk/include/clang/Lex/HeaderSearchOptions.h cfe/trunk/include/clang/Serialization/ASTReader.h cfe/trunk/include/clang/Serialization/ModuleManager.h cfe/trunk/lib/Driver/ToolChains/Clang.cpp cfe/trunk/lib/Frontend/CompilerInstance.cpp cfe/trunk/lib/Frontend/CompilerInvocation.cpp cfe/trunk/lib/Frontend/FrontendActions.cpp cfe/trunk/lib/Lex/HeaderSearch.cpp cfe/trunk/lib/Serialization/ASTReader.cpp cfe/trunk/lib/Serialization/ASTWriter.cpp cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp cfe/trunk/lib/Serialization/ModuleManager.cpp Modified: cfe/trunk/docs/Modules.rst URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/Modules.rst?rev=312220&r1=312219&r2=312220&view=diff == --- cfe/trunk/docs/Modules.rst (original) +++ cfe/trunk/docs/Modules.rst Wed Aug 30 23:26:43 2017 @@ -213,8 +213,14 @@ Command-line parameters ``-fno-implicit-modules`` All modules used by the build must be specified with ``-fmodule-file``. -``-fmodule-file=`` - Load the given precompiled module file. +``-fmodule-file=[=]`` + Specify the mapping of module names to precompiled module files. If the + name is omitted, then the module file is loaded whether actually required + or not. If the name is specified, then the mapping is treated as another + prebuilt module search mechanism (in addition to ``-fprebuilt-module-path``) + and the module is only loaded if required. Note that in this case the + specified file also overrides this module's paths that might be embedded + in other precompiled module files. ``-fprebuilt-module-path=`` Specify the path to the prebuilt modules. If specified, we will look for modules in this directory for a given top-level module name. We don't need a module map for loading prebuilt modules in this directory and the compiler will not try to rebuild these modules. This can be specified multiple times. @@ -945,4 +951,3 @@ PCHInternals_ .. [#] The preprocessing context in which the modules are parsed is actually dependent on the command-line options provided to the compiler, including the language dialect and any ``-D`` options. However, the compiled modules for different command-line options are kept distinct, and any preprocessor directives that occur within the translation unit are ignored. See the section on the `Configuration macros declaration`_ for more information. .. _PCHInternals: PCHInternals.html - Modified: cfe/trunk/include/clang/Driver/Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=312220&r1=312219&r2=312220&view=diff == --- cfe/trunk/include/clang/Driver/Options.td (original) +++ cfe/trunk/include/clang/Driver/Options.td Wed Aug 30 23:26:43 2017 @@ -1125,8 +1125,8 @@ def fmodule_map_file : Joined<["-"], "fm Group, Flags<[DriverOption,CC1Option]>, MetaVarName<"">, HelpText<"Load this module map file">; def fmodule_file : Joined<["-"], "fmodule-file=">, - Group, Flags<[DriverOption,CC1Option]>, - HelpText<"Load this precompiled module file">, MetaVarName<"">; + Group, Flags<[DriverOption,CC1Option]>, MetaVarName<"[=]">, + 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, Flags<[CC1Option]>, HelpText<"Ignore the definition of the given macro when building and loading modules">; def fmodules_decluse : Flag <["-"], "fmodules-decluse">, Group, Modified: cfe/trunk/include
[clang] Llvm modules on demand bmi (PR #71773)
boris-kolpackov wrote: >clang++ -std=c++20 foo.cpp -c -fmodule-file=X=some/dir/X.pcm Hm, according to https://clang.llvm.org/docs/StandardCPlusPlusModules.html this can already be achieved with the `-fmodule-output` options (which I was about to try in `build2`). Is there a reason a different option is used for what seems to be the same functionality. Or am I missing something here? > This is the main point of the patch - to do this efficiently. Again, just want to clarify: as I understand it, this patch solves the scaling issue Ben reported (https://github.com/llvm/llvm-project/issues/60996) but without the thin/fat BMI complications, correct? https://github.com/llvm/llvm-project/pull/71773 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][modules] Print library module manifest path. (PR #76451)
boris-kolpackov wrote: If I understand correctly, this invents a new option just to print the std modules path. Is there a reason why we cannot just print this information as part of `-print-search-dirs`? The benefit of this will be saving an extra compiler invocation in case the build system already uses this option, for example, to extract the library search paths (`build2` does this). BTW, this would also allow you to sidestep the whole "what to print if there is no path" issue -- just omit the entry from the output. If for some reason a separate option is desirable, can we then also print this information as part of `-print-search-dirs`? https://github.com/llvm/llvm-project/pull/76451 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][modules] Print library module manifest path. (PR #76451)
boris-kolpackov wrote: > I had looked at `-print-search-dirs` but it seems buggy. For example, it > ignores the `-stdlib` flag to the compiler invocation. True. I couldn't find a bug report for this so I filed one: https://github.com/llvm/llvm-project/issues/76614 > Solving this seems a lot of work. So didn't want to add new features to that > code. If this is the right thing to do (i.e., printing this information as part of `-print-search-dirs`), then perhaps it's still worth it to try and fix? Once you add a separate option, you will have to drag it forever (for backwards compatibility). https://github.com/llvm/llvm-project/pull/76451 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Serialization] Downgrade inconsistent flags from erros to warnings (PR #115416)
boris-kolpackov wrote: I don't know, I feel like you are just kicking the can down the road: if the user sees a harmless warning continuously, they will suppress this warning, and then won't see the harmful ones in the future. But then again we do this all the time in C++, so I guess it's par for the course. > after reading your links, I realized you're not against the change but saying > build2 is good. Well, not exactly. We have better chance in `build2` because we control the entire build (unless you use system-installed libraries, but in this case we still build the BMIs). And we thought a bit about build compatibility (in that HOWTO) and what compile options should and should not be specified in library `buildfiles`, which I think will also help with BMI compatibility. https://github.com/llvm/llvm-project/pull/115416 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Serialization] Downgrade error to warning for inconsistent language flags (PR #117840)
boris-kolpackov wrote: > Maybe then we could adapt the Fortran/ASM convention where an uppercase > extension means "I need preprocessing" and lowercase doesn't. (tongue lightly > in cheekā¦) >From https://build2.org/build2/doc/build2-build-system-manual.xhtml : > The `preprocessed` property indicates the degree of preprocessing the module > unit requires and is used to optimize module compilation. Valid values are > `none` (not preprocessed), `includes` (no #include directives in the source), > `modules` (as above plus no module declarations depend on the preprocessor, > for example, `#ifdef`, etc.), and `all` (the source is fully preprocessed). > Note that for `all` the source may still contain comments and line > continuations. https://github.com/llvm/llvm-project/pull/117840 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits