Roy Jacobson
0b89d1d59f
[Sema] Add deprecation warnings for some compiler provided __has_* type traits
...
Some compiler provided type traits like __has_trivial_constructor have been documented
as deprecated for quite some time.
Still, some people apparently still use them, even though mixing them with concepts
and with deleted functions leads to weird results. There's also disagreement about some
edge cases between GCC (which Clang claims to follow) and MSVC.
This patch adds deprecation warnings for the usage of those builtins, except for __has_trivial_destructor
which doesn't have a GCC alternative.
I made the warning on by default, so I had to silence it for some tests but it's not too many.
Some (decade old) history of issues with those builtins:
https://github.com/llvm/llvm-project/issues/18187
https://github.com/llvm/llvm-project/issues/18559
https://github.com/llvm/llvm-project/issues/22161
https://github.com/llvm/llvm-project/issues/33063
The abseil usage of them that triggered me to add this warning:
https://github.com/abseil/abseil-cpp/issues/1201
Weird interaction of those builtins with C++20's conditionally trivial special member functions:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106085
Reviewed By: #clang-language-wg, aaron.ballman
Differential Revision: https://reviews.llvm.org/D129170
2022-07-12 19:24:17 +03:00
Richard Smith
47972afd10
[modules] Simplify -cc1 interface for enabling implicit module maps.
...
We used to have a flag to enable module maps, and two more flags to enable
implicit module maps. This is all redundant; we don't need any flag for
enabling module maps in the abstract, and we don't usually have -fno- flags for
-cc1. We now have just a single flag, -fimplicit-module-maps, that enables
implicitly searching the file system for module map files and loading them.
The driver interface is unchanged for now. We should probably rename
-fmodule-maps to -fimplicit-module-maps at some point.
llvm-svn: 239789
2015-06-16 00:08:24 +00:00
Richard Smith
f81c2cc6ca
[modules] For an inheriting constructor, the inherited constructor is stored in
...
a map keyed off the canonical declaration. Don't try to set it if we're loading
some non-canonical merged declaration.
llvm-svn: 230716
2015-02-27 01:57:00 +00:00
Richard Smith
f463436d9c
[modules] Make NamespaceAliasDecl redeclarable, as it should be. This fixes
...
merging of namespace aliases across modules and improves source fidelity.
Incidentally also fixes PR20816.
llvm-svn: 217103
2014-09-03 23:11:22 +00:00
Richard Smith
70d5850955
[modules] Fix deserialization cycle when loading a tag declaration with a typedef name for linkage purposes. When loading the type, delay loading its typedef until we've finished loading and merging the type. In its place, save out the name of the typedef, which we need for merging purposes.
...
llvm-svn: 216806
2014-08-30 00:04:23 +00:00
Richard Smith
b602c7f843
Add some missing test coverage for merging 'extern "C"' functions with modules.
...
llvm-svn: 216796
2014-08-29 22:33:38 +00:00
Richard Smith
b1108739e4
[modules] Don't assert when merging virtual functions that override other
...
functions. Also don't needlessly pull in non-canonical declarations of the
overridden virtual functions.
llvm-svn: 216503
2014-08-26 23:29:11 +00:00
Richard Smith
88ebade8d9
[modules] When merging a tag declaration that has a typedef name for linkage
...
purposes, look for other typedefs with that same name and merge into their
named tag declaration if there is one.
llvm-svn: 216312
2014-08-23 01:45:27 +00:00
Richard Smith
675d279af4
[modules] When we merge redecl chains or mark a decl used with an update
...
record, mark all subsequent decls as 'used' too, to maintain the AST invariant
that getPreviousDecl()->Used implies this->Used.
llvm-svn: 211050
2014-06-16 20:26:19 +00:00
Richard Smith
debcd500a0
Push implicitly-declared allocation functions into the IdResolver. Otherwise,
...
declaration merging in modules is unable to find them and we get bogus errors
and even crashes.
llvm-svn: 208944
2014-05-16 02:14:42 +00:00
Richard Smith
b45a6f72b6
Add missing serialization code for one of the CXXRecordDecl definition flags.
...
llvm-svn: 206493
2014-04-17 20:33:01 +00:00
Richard Smith
9dd9f036c6
Map from local decl IDs to global decl IDs when lazily deserializing friend decl chains.
...
llvm-svn: 189629
2013-08-30 00:23:29 +00:00
Richard Smith
42713d763f
If an unimported submodule of an imported module contains a declaration of a
...
global allocation or deallocation function, that should not cause that global
allocation or deallocation function to become unavailable.
llvm-svn: 186270
2013-07-14 02:01:48 +00:00