|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5 |
|
| #
ba988fd0 |
| 25-May-2022 |
Martin Storsjö <[email protected]> |
[clang] Require strict matches for defines for PCH in GCC style directories
When clang includes a PCH, it tolerates some amount of differences between the defines used when creating and when includi
[clang] Require strict matches for defines for PCH in GCC style directories
When clang includes a PCH, it tolerates some amount of differences between the defines used when creating and when including the PCH - this seems to be intentionally allowed in c379c072405f39bca1d3552408fc0427328e8b6d (and later extended in b63687519610a73dd565be1fec28332211b4df5b).
When using a PCH (or when picking a PCH out of a directory containing multiple candidates) Clang used to accept the header if there were defines on the command line when creating the PCH that are missing when using the PCH, or vice versa, defines only set when using the PCH.
The only cases where Clang explicitly rejected the use of a PCH is if there was an explicit conflict between the options, e.g. -DFOO=1 vs -DFOO=2, or -DFOO vs -UFOO.
The latter commit added a FIXME that we really should check whether mismatched defines actually were used somewhere in the PCH, so that the define would affect the outcome. This FIXME has stood unaddressed since 2012.
This differs from GCC, which rejects PCH files if the defines differ at all.
When explicitly including a single PCH file, the relaxed policy of allowing minor differences is harmless for correct use cases (but may fail to diagnose mismtaches), and potentially allow using PCHs in wider cases (where the user intentionally know that the differences in defines are harmless for the PCH).
However, for GCC style PCH directories, with a directory containing multiple PCH variants and the compiler should pick the correct match out of them, Clang's relaxed logic was problematic. The directory could contain two otherwise identical PCHs, but one built with -DFOO and one without. When attempting to include a PCH and iterating over the candidates in the directory, Clang would essentially pick the first one out of the two, even if there existed a better, exact match in the directory.
Keep the relaxed checking when specificlly including one named PCH file, but require strict matches when trying to pick the right candidate out of a GCC style directory with alternatives.
This fixes https://github.com/lhmouse/mcfgthread/issues/63.
Differential Revision: https://reviews.llvm.org/D126676
(cherry picked from commit c843c921a1a385bb805b2338d980436c94f83f19)
show more ...
|
| #
f693874c |
| 27-Jun-2022 |
Volodymyr Sapsai <[email protected]> |
[ODRHash diagnostics] Preparation to minimize subsequent diffs. NFC.
Specifically, making the following changes: * Turn lambdas calculating ODR hashes into static functions. * Move `ODRCXXRecordDiff
[ODRHash diagnostics] Preparation to minimize subsequent diffs. NFC.
Specifically, making the following changes: * Turn lambdas calculating ODR hashes into static functions. * Move `ODRCXXRecordDifference` where it is used. * Rename some variables and move some lines of code. * Replace `auto` with explicit type when the deduced type is not mentioned. * Add `const` for unmodified objects, so we can pass them to more functions.
Differential Revision: https://reviews.llvm.org/D128690
show more ...
|
| #
e690137d |
| 13-Jul-2022 |
Fangrui Song <[email protected]> |
[Support] Change compression::zlib::{compress,uncompress} to use uint8_t *
It's more natural to use uint8_t * (std::byte needs C++17 and llvm has too much uint8_t *) and most callers use uint8_t * i
[Support] Change compression::zlib::{compress,uncompress} to use uint8_t *
It's more natural to use uint8_t * (std::byte needs C++17 and llvm has too much uint8_t *) and most callers use uint8_t * instead of char *. The functions are recently moved into `llvm::compression::zlib::`, so downstream projects need to make adaption anyway.
show more ...
|
| #
b069801f |
| 25-May-2022 |
Martin Storsjö <[email protected]> |
[clang] [Serialization] Fix swapped PPOpts/ExistingPPOpts parameters. NFC.
The two first parameters of checkPreprocessorOptions are "PPOpts, ExistingPPOpts". All other callers of the function pass t
[clang] [Serialization] Fix swapped PPOpts/ExistingPPOpts parameters. NFC.
The two first parameters of checkPreprocessorOptions are "PPOpts, ExistingPPOpts". All other callers of the function pass them consistently.
This avoids confusion when working on the code.
Differential Revision: https://reviews.llvm.org/D129277
show more ...
|
| #
ea61750c |
| 08-Jul-2022 |
Cole Kissane <[email protected]> |
[NFC] Refactor llvm::zlib namespace
* Refactor compression namespaces across the project, making way for a possible introduction of alternatives to zlib compression. Changes are as follows: *
[NFC] Refactor llvm::zlib namespace
* Refactor compression namespaces across the project, making way for a possible introduction of alternatives to zlib compression. Changes are as follows: * Relocate the `llvm::zlib` namespace to `llvm::compression::zlib`.
Reviewed By: MaskRay, leonardchan, phosek
Differential Revision: https://reviews.llvm.org/D128953
show more ...
|
| #
2ceb9c34 |
| 24-Jun-2022 |
Volodymyr Sapsai <[email protected]> |
[ODRHash diagnostics] Move common code for calculating diag locations in `DiagnoseODRMismatch` into a lambda. NFC.
Differential Revision: https://reviews.llvm.org/D128489
|
| #
15cb180d |
| 23-Jun-2022 |
Volodymyr Sapsai <[email protected]> |
[ODRHash diagnostics] Split `err_module_odr_violation_mismatch_decl_diff` into per-entity diagnostics. NFC.
We'll need to add more cases for Objective-C entities and adding everything to `err_module
[ODRHash diagnostics] Split `err_module_odr_violation_mismatch_decl_diff` into per-entity diagnostics. NFC.
We'll need to add more cases for Objective-C entities and adding everything to `err_module_odr_violation_mismatch_decl_diff` makes it harder to work with over time.
Differential Revision: https://reviews.llvm.org/D128488
show more ...
|
| #
35141312 |
| 29-Jun-2022 |
Volodymyr Sapsai <[email protected]> |
[ODRHash diagnostics] Fix typos. NFC.
|
| #
017c068f |
| 23-Jun-2022 |
Volodymyr Sapsai <[email protected]> |
[ODRHash diagnostics] Move repetetive code at lambda calls into lambdas themselves. NFC.
It helps to avoid copy-paste mistakes and makes custom code paths more noticeable.
Not funnelling all diagno
[ODRHash diagnostics] Move repetetive code at lambda calls into lambdas themselves. NFC.
It helps to avoid copy-paste mistakes and makes custom code paths more noticeable.
Not funnelling all diagnostic through `ODRDiagDeclError` because plan to break down `err_module_odr_violation_mismatch_decl_diff` into smaller pieces instead of making it bigger and bigger.
Differential Revision: https://reviews.llvm.org/D128487
show more ...
|
| #
06decd0b |
| 19-Jun-2022 |
Kazu Hirata <[email protected]> |
[clang] Use value_or instead of getValueOr (NFC)
|
| #
7e17e15c |
| 08-Jun-2022 |
Matthias Gehre <[email protected]> |
clang: Introduce -fexperimental-max-bitint-width
This splits of the introduction of -fexperimental-max-bitint-width from https://reviews.llvm.org/D122234 because that PR is still blocked on discussi
clang: Introduce -fexperimental-max-bitint-width
This splits of the introduction of -fexperimental-max-bitint-width from https://reviews.llvm.org/D122234 because that PR is still blocked on discussions on the backend side.
I was asked [0] to upstream at least the flag.
[0] https://github.com/llvm/llvm-project/commit/09854f2af3b914b616f29cb640bede3a27cf7c4e#commitcomment-75116619
Differential Revision: https://reviews.llvm.org/D127287
show more ...
|
| #
69da3b6a |
| 25-May-2022 |
Aaron Ballman <[email protected]> |
Revert "[OpenMP] atomic compare fail : Parser & AST support"
This reverts commit 232bf8189ef7d574a468bd5bfd1e84e962f7f16e.
It broke the sanitize buildbot: https://lab.llvm.org/buildbot/#/builders/5
Revert "[OpenMP] atomic compare fail : Parser & AST support"
This reverts commit 232bf8189ef7d574a468bd5bfd1e84e962f7f16e.
It broke the sanitize buildbot: https://lab.llvm.org/buildbot/#/builders/5/builds/24074
It also reproduces on Windows debug builds as a crash.
show more ...
|
| #
232bf818 |
| 25-May-2022 |
Sunil Kuravinakop <[email protected]> |
[OpenMP] atomic compare fail : Parser & AST support
This is a support for " #pragma omp atomic compare fail ". It has Parser & AST support for now.
Reviewed By: tianshilei1992
Differential Revisio
[OpenMP] atomic compare fail : Parser & AST support
This is a support for " #pragma omp atomic compare fail ". It has Parser & AST support for now.
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D123235
show more ...
|
|
Revision tags: llvmorg-14.0.4 |
|
| #
9ba93711 |
| 17-May-2022 |
Mike Rice <[email protected]> |
[OpenMP] Add parsing/sema support for omp_all_memory reserved locator
Adds support for the reserved locator 'omp_all_memory' for use in depend clauses with 'out' or 'inout' dependence-types.
Differ
[OpenMP] Add parsing/sema support for omp_all_memory reserved locator
Adds support for the reserved locator 'omp_all_memory' for use in depend clauses with 'out' or 'inout' dependence-types.
Differential Revision: https://reviews.llvm.org/D125828
show more ...
|
| #
1dfd8e99 |
| 19-May-2022 |
Sam McCall <[email protected]> |
[Serialization] Delta encode locations in expansion sloc entries
This is a 1.9% reduction in PCH size in my measurements.
In abbreviated records, VBR6 seems to be slightl better than VBR8 for locat
[Serialization] Delta encode locations in expansion sloc entries
This is a 1.9% reduction in PCH size in my measurements.
In abbreviated records, VBR6 seems to be slightl better than VBR8 for locations that may be delta-encoded (i.e. not the first)
Differential Revision: https://reviews.llvm.org/D125952
show more ...
|
| #
4df795bf |
| 11-May-2022 |
Sam McCall <[email protected]> |
[Serialization] Delta-encode consecutive SourceLocations in TypeLoc
Much of the size of PCH/PCM files comes from stored SourceLocations. These are encoded using (almost) their raw value, VBR-encoded
[Serialization] Delta-encode consecutive SourceLocations in TypeLoc
Much of the size of PCH/PCM files comes from stored SourceLocations. These are encoded using (almost) their raw value, VBR-encoded. Absolute SourceLocations can be relatively large numbers, so this commonly takes 20-30 bits per location.
We can reduce this by exploiting redundancy: many "nearby" SourceLocations are stored differing only slightly and can be delta-encoded. Randam-access loading of AST nodes constrains how long these sequences can be, but we can do it at least within a node that always gets deserialized as an atomic unit.
TypeLoc is implemented in this patch as it's a relatively small change that shows most of the API. This saves ~3.5% of PCH size, I have local changes applying this technique further that save another 3%, I think it's possible to get to 10% total.
Differential Revision: https://reviews.llvm.org/D125403
show more ...
|
| #
ee51e979 |
| 04-May-2022 |
Richard Howell <[email protected]> |
[clang] serialize ORIGINAL_PCH_DIR relative to BaseDirectory
This diff changes the serialization of the `ORIGINAL_PCH_DIR` entry in module files to be serialized relative to the module's `BaseDirect
[clang] serialize ORIGINAL_PCH_DIR relative to BaseDirectory
This diff changes the serialization of the `ORIGINAL_PCH_DIR` entry in module files to be serialized relative to the module's `BaseDirectory`. This will allow for the module to be relocatable across machines.
The path is restored relative to the module's BaseDirectory on deserialization.
Reviewed By: urnathan
Differential Revision: https://reviews.llvm.org/D124946
show more ...
|
| #
f1105694 |
| 04-May-2022 |
Richard Howell <[email protected]> |
[clang] serialize SUBMODULE_TOPHEADER relative to BaseDirectory
This diff changes the serialization of the `SUBMODULE_TOPHEADER` entry in module files to be serialized relative to the module's `Base
[clang] serialize SUBMODULE_TOPHEADER relative to BaseDirectory
This diff changes the serialization of the `SUBMODULE_TOPHEADER` entry in module files to be serialized relative to the module's `BaseDirectory`. This matches the behavior of the `SUBMODULE_HEADER` entry and will allow for the module to be relocatable across machines.
The path is restored relative to the module's `BaseDirectory` on deserialization.
Reviewed By: urnathan
Differential Revision: https://reviews.llvm.org/D124938
show more ...
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3 |
|
| #
d32c685e |
| 02-Mar-2022 |
Volodymyr Sapsai <[email protected]> |
[modules] Merge equivalent extensions and diagnose ivar redeclarations for extensions loaded from different modules.
Emitting metadata for the same ivar multiple times can lead to miscompilations. O
[modules] Merge equivalent extensions and diagnose ivar redeclarations for extensions loaded from different modules.
Emitting metadata for the same ivar multiple times can lead to miscompilations. Objective-C runtime adds offsets to calculate ivar position in memory and presence of duplicate offsets causes wrong final position thus overwriting unrelated memory.
Such a situation is impossible with modules disabled as clang diagnoses ivar redeclarations during sema checks after parsing (`Sema::ActOnFields`). Fix the case with modules enabled by checking during deserialization if ivar is already declared. We also support a use case where the same category ends up in multiple modules. We don't want to treat this case as ivar redeclaration and instead merge corresponding ivars.
rdar://83468070
Differential Revision: https://reviews.llvm.org/D121177
show more ...
|
| #
e80ee182 |
| 21-Apr-2022 |
Sam McCall <[email protected]> |
Reland [Frontend] avoid copy of PCH data when PrecompiledPreamble stores it in memory
This reverts commit eadf35270727ca743c11b07040bbfedd415ab6dc.
The reland fixes a couple of places in clang that
Reland [Frontend] avoid copy of PCH data when PrecompiledPreamble stores it in memory
This reverts commit eadf35270727ca743c11b07040bbfedd415ab6dc.
The reland fixes a couple of places in clang that were unneccesarily requesting a null-terminated buffer of the PCH, and hitting assertions.
show more ...
|
| #
d79ad2f1 |
| 11-Apr-2022 |
Jan Svoboda <[email protected]> |
[clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective()
This patch changes type of the `File` parameter in `PPCallbacks::InclusionDirective()` from `const FileEntry *` to `Optional<
[clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective()
This patch changes type of the `File` parameter in `PPCallbacks::InclusionDirective()` from `const FileEntry *` to `Optional<FileEntryRef>`.
With the API change in place, this patch then removes some uses of the deprecated `FileEntry::getName()` (e.g. in `DependencyGraph.cpp` and `ModuleDependencyCollector.cpp`).
Reviewed By: dexonsmith, bnbarham
Differential Revision: https://reviews.llvm.org/D123574
show more ...
|
| #
187ccc66 |
| 07-Apr-2022 |
Jennifer Yu <[email protected]> |
[clang][OpenMP5.1] Initial parsing/sema for has_device_addr
Added basic parsing/sema/ support for the 'has_device_addr' clause.
Differential Revision: https://reviews.llvm.org/D123402
|
| #
d9739f29 |
| 21-Mar-2022 |
David Goldman <[email protected]> |
Serialize PragmaAssumeNonNullLoc to support preambles
Previously, if a `#pragma clang assume_nonnull begin` was at the end of a premable with a `#pragma clang assume_nonnull end` at the end of the m
Serialize PragmaAssumeNonNullLoc to support preambles
Previously, if a `#pragma clang assume_nonnull begin` was at the end of a premable with a `#pragma clang assume_nonnull end` at the end of the main file, clang would diagnose an unterminated begin in the preamble and an unbalanced end in the main file.
With this change, those errors no longer occur and the case above is now properly handled. I've added a corresponding test to clangd, which makes use of preambles, in order to verify this works as expected.
Differential Revision: https://reviews.llvm.org/D122179
show more ...
|
| #
ce21c926 |
| 25-Mar-2022 |
Hubert Tong <[email protected]> |
[Clang] Work with multiple pragmas weak before definition
Update `WeakUndeclaredIdentifiers` to hold a collection of weak aliases per identifier instead of only one.
This also allows the "used" sta
[Clang] Work with multiple pragmas weak before definition
Update `WeakUndeclaredIdentifiers` to hold a collection of weak aliases per identifier instead of only one.
This also allows the "used" state to be removed from `WeakInfo` because it is really only there as an alternative to removing processed map entries, and we can represent that using an empty set now. The serialization code is updated for the removal of the field. Additionally, a PCH test is added for the new functionality.
The records are grouped by the "target" identifier, which was already being used as a key for lookup purposes. We also store only one record per alias name; combined, this means that diagnostics are grouped by the "target" and limited to one per alias (which should be acceptable).
Fixes PR28611. Fixes llvm/llvm-project#28985.
Reviewed By: aaron.ballman, cebowleratibm
Differential Revision: https://reviews.llvm.org/D121927
Co-authored-by: Rachel Craik <[email protected]> Co-authored-by: Jamie Schmeiser <[email protected]>
show more ...
|
| #
5d2ce766 |
| 18-Mar-2022 |
Benjamin Kramer <[email protected]> |
Use llvm::append_range instead of push_back loops where applicable. NFCI.
|