#
cbafa595 |
| 10-Jan-2018 |
Volodymyr Sapsai <vsapsai@apple.com> |
[Lex] Inline a variable in test in preparation for more similar tests. NFC.
llvm-svn: 322240
|
Revision tags: llvmorg-5.0.1, llvmorg-5.0.1-rc3 |
|
#
cebac48b |
| 06-Dec-2017 |
Taewook Oh <twoh@fb.com> |
Stringizing raw string literals containing newline
Summary: This patch implements 4.3 of http://open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4220.pdf. If a raw string contains a newline character,
Stringizing raw string literals containing newline
Summary: This patch implements 4.3 of http://open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4220.pdf. If a raw string contains a newline character, replace each newline character with the \n escape code. Without this patch, included test case (macro_raw_string.cpp) results compilation failure.
Reviewers: rsmith, doug.gregor, jkorous-apple
Reviewed By: jkorous-apple
Subscribers: jkorous-apple, vsapsai, cfe-commits
Differential Revision: https://reviews.llvm.org/D39279
llvm-svn: 319904
show more ...
|
Revision tags: llvmorg-5.0.1-rc2, llvmorg-5.0.1-rc1 |
|
#
d5bf436d |
| 14-Oct-2017 |
Alex Lorenz <arphaman@gmail.com> |
[Lex] Avoid out-of-bounds dereference in SkipLineComment
Credit to OSS-Fuzz for discovery: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3145
rdar://34526482
llvm-svn: 315785
|
Revision tags: llvmorg-5.0.0, llvmorg-5.0.0-rc5, llvmorg-5.0.0-rc4, llvmorg-5.0.0-rc3, llvmorg-5.0.0-rc2 |
|
#
cf007a76 |
| 10-Aug-2017 |
Alexander Kornienko <alexfh@google.com> |
[Lexer] Finding beginning of token with escaped new line
Summary: Lexer::GetBeginningOfToken produced invalid location when backtracking across escaped new lines.
This fixes PR26228
Reviewers: aky
[Lexer] Finding beginning of token with escaped new line
Summary: Lexer::GetBeginningOfToken produced invalid location when backtracking across escaped new lines.
This fixes PR26228
Reviewers: akyrtzi, alexfh, rsmith, doug.gregor
Reviewed By: alexfh
Subscribers: alexfh, cfe-commits
Patch by Paweł Żukowski!
Differential Revision: https://reviews.llvm.org/D30748
llvm-svn: 310576
show more ...
|
Revision tags: llvmorg-5.0.0-rc1 |
|
#
ac506d74 |
| 17-Jul-2017 |
Faisal Vali <faisalv@yahoo.com> |
[NFC] Refactor the Preprocessor function that handles Macro definitions and rename Arguments to Parameters in Macro Definitions. - Extracted the reading of the tokens out into a separate function.
[NFC] Refactor the Preprocessor function that handles Macro definitions and rename Arguments to Parameters in Macro Definitions. - Extracted the reading of the tokens out into a separate function. - Replace 'Argument' with 'Parameter' when referring to the identifiers of the macro definition (as opposed to the supplied arguments - MacroArgs - during the macro invocation).
This is in preparation for submitting patches for review to implement __VA_OPT__ which will otherwise just keep lengthening the HandleDefineDirective function and making it less comprehensible.
I will also directly update some extra clang tooling that is broken by the change from Argument to Parameter.
Hopefully the bots will stay appeased.
Thanks!
llvm-svn: 308190
show more ...
|
#
0e54e567 |
| 17-Jul-2017 |
Faisal Vali <faisalv@yahoo.com> |
Revert changes from my previous refactoring - will need to fix dependencies in clang's extra tooling (such as clang-tidy etc.).
Sorry about that.
llvm-svn: 308158
|
#
11746b05 |
| 17-Jul-2017 |
Faisal Vali <faisalv@yahoo.com> |
[NFC] Refactor the Preprocessor function that handles Macro definitions and rename Arguments to Parameters in Macro Definitions. - Extracted the reading of the tokens out into a separate function.
[NFC] Refactor the Preprocessor function that handles Macro definitions and rename Arguments to Parameters in Macro Definitions. - Extracted the reading of the tokens out into a separate function. - Replace 'Argument' with 'Parameter' when referring to the identifiers of the macro definition (as opposed to the supplied arguments - MacroArgs - during the macro invocation).
This is in preparation for submitting patches for review to implement __VA_OPT__ which will otherwise just keep lengthening the HandleDefineDirective function and making it less comprehensible.
Thanks!
llvm-svn: 308157
show more ...
|
#
cb7af85b |
| 15-Jun-2017 |
Erich Keane <erich.keane@intel.com> |
LexerTest memory leak fix-
A new LexerTest unittest introduced a memory leak. This patch uses a unique_ptr with a custom deleter to ensure it is properly deleted.
llvm-svn: 305491
|
#
dfa02b54 |
| 15-Jun-2017 |
Erich Keane <erich.keane@intel.com> |
Fix LexerTest signed/unsigned comparison.
Werror was catching a signed/unsigned compare in an assert, correct the signed 'expected' value to be unsigned.
llvm-svn: 305435
|
#
8691d6e6 |
| 14-Jun-2017 |
Erich Keane <erich.keane@intel.com> |
[Preprocessor]Correct Macro-Arg allocation of StringifiedArguments, correct getNumArguments
StringifiedArguments is allocated (resized) based on the size the getNumArguments function. However, thi
[Preprocessor]Correct Macro-Arg allocation of StringifiedArguments, correct getNumArguments
StringifiedArguments is allocated (resized) based on the size the getNumArguments function. However, this function ACTUALLY currently returns the amount of total UnexpArgTokens which is minimum the same as the new implementation of getNumMacroArguments, since empty/omitted arguments result in 1 UnexpArgToken, and included ones at minimum include 2 (1 for the arg itself, 1 for eof).
This patch renames the otherwise unused getNumArguments to be more clear that it is the number of arguments that the Macro expects, and thus the maximum number that can be stringified. This patch also replaces the explicit memset (which results in value instantiation of the new tokens, PLUS clearing the memory) with brace initialization.
Differential Revision: https://reviews.llvm.org/D32046
llvm-svn: 305425
show more ...
|
Revision tags: llvmorg-4.0.1, llvmorg-4.0.1-rc3 |
|
#
5d2ed489 |
| 09-Jun-2017 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Add #pragma clang module build/endbuild pragmas for performing a module build as part of a compilation.
This is intended for two purposes:
1) Writing self-contained test cases for modules: we can n
Add #pragma clang module build/endbuild pragmas for performing a module build as part of a compilation.
This is intended for two purposes:
1) Writing self-contained test cases for modules: we can now write a single source file test that builds some number of module files on the side and imports them.
2) Debugging / test case reduction. A single-source testcase is much more amenable to reduction, compared to a VFS tarball or .pcm files.
llvm-svn: 305101
show more ...
|
Revision tags: llvmorg-4.0.1-rc2, llvmorg-4.0.1-rc1 |
|
#
030d7d6d |
| 20-Mar-2017 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
Reapply "Modules: Cache PCMs in memory and avoid a use-after-free"
This reverts commit r298185, effectively reapplying r298165, after fixing the new unit tests (PR32338). The memory buffer generato
Reapply "Modules: Cache PCMs in memory and avoid a use-after-free"
This reverts commit r298185, effectively reapplying r298165, after fixing the new unit tests (PR32338). The memory buffer generator doesn't null-terminate the MemoryBuffer it creates; this version of the commit informs getMemBuffer about that to avoid the assert.
Original commit message follows:
----
Clang's internal build system for implicit modules uses lock files to ensure that after a process writes a PCM it will read the same one back in (without contention from other -cc1 commands). Since PCMs are read from disk repeatedly while invalidating, building, and importing, the lock is not released quickly. Furthermore, the LockFileManager is not robust in every environment. Other -cc1 commands can stall until timeout (after about eight minutes).
This commit changes the lock file from being necessary for correctness to a (possibly dubious) performance hack. The remaining benefit is to reduce duplicate work in competing -cc1 commands which depend on the same module. Follow-up commits will change the internal build system to continue after a timeout, and reduce the timeout. Perhaps we should reconsider blocking at all.
This also fixes a use-after-free, when one part of a compilation validates a PCM and starts using it, and another tries to swap out the PCM for something new.
The PCMCache is a new type called MemoryBufferCache, which saves memory buffers based on their filename. Its ownership is shared by the CompilerInstance and ModuleManager.
- The ModuleManager stores PCMs there that it loads from disk, never touching the disk if the cache is hot.
- When modules fail to validate, they're removed from the cache.
- When a CompilerInstance is spawned to build a new module, each already-loaded PCM is assumed to be valid, and is frozen to avoid the use-after-free.
- Any newly-built module is written directly to the cache to avoid the round-trip to the filesystem, making lock files unnecessary for correctness.
Original patch by Manman Ren; most testcases by Adrian Prantl!
llvm-svn: 298278
show more ...
|
#
f1966cf6 |
| 18-Mar-2017 |
Renato Golin <renato.golin@linaro.org> |
Revert "Modules: Cache PCMs in memory and avoid a use-after-free"
This reverts commit r298165, as it broke the ARM builds.
llvm-svn: 298185
|
#
079c40e8 |
| 17-Mar-2017 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
Modules: Cache PCMs in memory and avoid a use-after-free
Clang's internal build system for implicit modules uses lock files to ensure that after a process writes a PCM it will read the same one back
Modules: Cache PCMs in memory and avoid a use-after-free
Clang's internal build system for implicit modules uses lock files to ensure that after a process writes a PCM it will read the same one back in (without contention from other -cc1 commands). Since PCMs are read from disk repeatedly while invalidating, building, and importing, the lock is not released quickly. Furthermore, the LockFileManager is not robust in every environment. Other -cc1 commands can stall until timeout (after about eight minutes).
This commit changes the lock file from being necessary for correctness to a (possibly dubious) performance hack. The remaining benefit is to reduce duplicate work in competing -cc1 commands which depend on the same module. Follow-up commits will change the internal build system to continue after a timeout, and reduce the timeout. Perhaps we should reconsider blocking at all.
This also fixes a use-after-free, when one part of a compilation validates a PCM and starts using it, and another tries to swap out the PCM for something new.
The PCMCache is a new type called MemoryBufferCache, which saves memory buffers based on their filename. Its ownership is shared by the CompilerInstance and ModuleManager.
- The ModuleManager stores PCMs there that it loads from disk, never touching the disk if the cache is hot.
- When modules fail to validate, they're removed from the cache.
- When a CompilerInstance is spawned to build a new module, each already-loaded PCM is assumed to be valid, and is frozen to avoid the use-after-free.
- Any newly-built module is written directly to the cache to avoid the round-trip to the filesystem, making lock files unnecessary for correctness.
Original patch by Manman Ren; most testcases by Adrian Prantl!
llvm-svn: 298165
show more ...
|
Revision tags: llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3, llvmorg-4.0.0-rc2, llvmorg-4.0.0-rc1 |
|
#
9c28cb3f |
| 06-Jan-2017 |
David Blaikie <dblaikie@gmail.com> |
shared_ptrify (from InclusiveRefCntPtr) HeaderSearchOptions
llvm-svn: 291202
|
#
e3041688 |
| 05-Jan-2017 |
David Blaikie <dblaikie@gmail.com> |
Move PreprocessorOptions to std::shared_ptr from IntrusiveRefCntPtr
llvm-svn: 291160
|
Revision tags: llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2, llvmorg-3.9.1-rc1, llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1, llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
#
95a2a7f2 |
| 19-May-2016 |
Vedant Kumar <vsk@apple.com> |
[Lexer] Don't merge macro args from different macro files
The lexer sets the end location of macro arguments incorrectly *if*, while merging consecutive args to fit into a single SLocEntry, it finds
[Lexer] Don't merge macro args from different macro files
The lexer sets the end location of macro arguments incorrectly *if*, while merging consecutive args to fit into a single SLocEntry, it finds args which come from different macro files.
Fix the issue by using separate SLocEntries in this situation.
This fixes a code coverage crasher (rdar://problem/26181005). Because the lexer reported end locations for certain macro args incorrectly, we would generate bogus coverage mappings with negative line offsets.
Reviewed-by: akyrtzi
Differential Revision: http://reviews.llvm.org/D20401
llvm-svn: 270160
show more ...
|
#
b214cbc7 |
| 04-Mar-2016 |
James Y Knight <jyknight@google.com> |
Make TargetInfo store an actual DataLayout instead of a string.
Use it to calculate UserLabelPrefix, instead of specifying it (often incorrectly).
Note that the *actual* user label prefix has alway
Make TargetInfo store an actual DataLayout instead of a string.
Use it to calculate UserLabelPrefix, instead of specifying it (often incorrectly).
Note that the *actual* user label prefix has always come from the DataLayout, and is handled within LLVM. The main thing clang's TargetInfo::UserLabelPrefix did was to set the #define value. Having these be different from each-other is just silly.
Differential Revision: http://reviews.llvm.org/D17183
llvm-svn: 262737
show more ...
|
Revision tags: llvmorg-3.8.0, llvmorg-3.8.0-rc3, llvmorg-3.8.0-rc2, llvmorg-3.8.0-rc1, llvmorg-3.7.1, llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1, llvmorg-3.7.0, llvmorg-3.7.0-rc4, llvmorg-3.7.0-rc3, studio-1.4, llvmorg-3.7.0-rc2 |
|
#
4afe5049 |
| 22-Jul-2015 |
Hans Wennborg <hans@hanshq.net> |
Fix -Wextra-semi warnings.
Patch by Eugene Zelenko!
Differential Revision: http://reviews.llvm.org/D11401
llvm-svn: 242931
|
Revision tags: llvmorg-3.7.0-rc1, llvmorg-3.6.2, llvmorg-3.6.2-rc1, llvmorg-3.6.1, llvmorg-3.6.1-rc1 |
|
#
a7e2cc68 |
| 01-May-2015 |
Richard Smith <richard-llvm@metafoo.co.uk> |
[modules] Start moving the module visibility information off the Module itself.
It has no place there; it's not a property of the Module, and it makes restoring the visibility set when we leave a su
[modules] Start moving the module visibility information off the Module itself.
It has no place there; it's not a property of the Module, and it makes restoring the visibility set when we leave a submodule more difficult.
llvm-svn: 236300
show more ...
|
Revision tags: llvmorg-3.5.2, llvmorg-3.5.2-rc1, llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2, llvmorg-3.6.0-rc1, llvmorg-3.5.1, llvmorg-3.5.1-rc2, llvmorg-3.5.1-rc1, llvmorg-3.5.0 |
|
#
50a5f97e |
| 29-Aug-2014 |
David Blaikie <dblaikie@gmail.com> |
unique_ptrify SourceManager::createFileID
llvm-svn: 216715
|
Revision tags: llvmorg-3.5.0-rc4 |
|
#
d87f8d76 |
| 27-Aug-2014 |
Rafael Espindola <rafael.espindola@gmail.com> |
Update for LLVM api change.
llvm-svn: 216585
|
Revision tags: llvmorg-3.5.0-rc3, llvmorg-3.5.0-rc2, llvmorg-3.5.0-rc1 |
|
#
80758084 |
| 06-Jul-2014 |
Alp Toker <alp@nuanti.com> |
Use non-intrusive refcounting for TargetOptions
llvm-svn: 212388
|
#
f994cef8 |
| 05-Jul-2014 |
Alp Toker <alp@nuanti.com> |
Track IntrusiveRefCntPtr::get() changes from LLVM r212366
llvm-svn: 212369
|
#
416fa34b |
| 08-Jun-2014 |
Craig Topper <craig.topper@gmail.com> |
[C++11] Use 'nullptr'. Unittests edition.
llvm-svn: 210423
|