r312007 - [modules-ts] Omit submodule semantics for TS modules

2017-08-29 Thread Boris Kolpackov via cfe-commits
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

2017-08-30 Thread Boris Kolpackov via cfe-commits
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

2017-08-30 Thread Boris Kolpackov via cfe-commits
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

2017-08-30 Thread Boris Kolpackov via cfe-commits
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

2017-08-30 Thread Boris Kolpackov via cfe-commits
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)

2017-08-30 Thread Boris Kolpackov via cfe-commits
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)

2023-11-09 Thread Boris Kolpackov via cfe-commits

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)

2023-12-29 Thread Boris Kolpackov via cfe-commits

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)

2023-12-30 Thread Boris Kolpackov via cfe-commits

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)

2024-11-07 Thread Boris Kolpackov via cfe-commits

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)

2024-12-04 Thread Boris Kolpackov via cfe-commits

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