summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
* Split out modules-specific declaration handling from SemaDecl.cpp into aRichard Smith2019-04-183-465/+486
| | | | | | new SemaModule.cpp. llvm-svn: 358633
* Add '#pragma clang __debug module_map module.name' to dump the moduleRichard Smith2019-04-182-1/+19
| | | | | | map being used for the module 'module.name'. llvm-svn: 358632
* [c++2a] Improve diagnostic for use of declaration from another TU'sRichard Smith2019-04-184-22/+156
| | | | | | | | | | global module fragment. We know that the declaration in question should have been introduced by a '#include', so try to figure out which one and suggest it. Don't suggest importing the global module fragment itself! llvm-svn: 358631
* [clang-format] Remove unused Environment constructor.Alexander Kornienko2019-04-181-4/+0
| | | | llvm-svn: 358630
* Move the implementation of getInnermostBlockDecl to the .cpp file to fixAkira Hatanaka2019-04-182-11/+13
| | | | | | failing bots. llvm-svn: 358627
* Fix test on PS4 which defaults to gnu99 which does not emit the expected ↵Douglas Yung2019-04-181-3/+15
| | | | | | warnings. llvm-svn: 358626
* [Sema][ObjC] Don't warn about an implicitly retained self if theAkira Hatanaka2019-04-177-23/+97
| | | | | | | | | | | | | | | | | retaining block and all of the enclosing blocks are non-escaping. If the block implicitly retaining self doesn't escape, there is no risk of creating retain cycles, so clang shouldn't diagnose it and force users to add self-> to silence the diagnostic. Also, fix a bug where clang was failing to diagnose an implicitly retained self inside a c++ lambda nested inside a block. rdar://problem/25059955 Differential Revision: https://reviews.llvm.org/D60736 llvm-svn: 358624
* [analyzer] PR41185: Fix regression where __builtin_* functions weren't ↵Kristof Umann2019-04-174-9/+53
| | | | | | | | | | | | | | | | | | | | | recognized For the following code snippet: void builtin_function_call_crash_fixes(char *c) { __builtin_strncpy(c, "", 6); __builtin_memset(c, '\0', (0)); __builtin_memcpy(c, c, 0); } security.insecureAPI.DeprecatedOrUnsafeBufferHandling caused a regression, as it didn't recognize functions starting with __builtin_. Fixed exactly that. I wanted to modify an existing test file, but the two I found didn't seem like perfect candidates. While I was there, I prettified their RUN: lines. Differential Revision: https://reviews.llvm.org/D59812 llvm-svn: 358609
* [OPENMP][NVPTX]Run combined constructs with if clause in SPMD mode.Alexey Bataev2019-04-177-91/+140
| | | | | | | | All target-parallel-based constructs can be run in SPMD mode from now on. Even if num_threads clauses or if clauses are used, such constructs can be executed in SPMD mode. llvm-svn: 358595
* Remove --show-includes flag in crash reduce scriptAmy Huang2019-04-171-0/+4
| | | | llvm-svn: 358590
* Explicitly say we don't define new/delete in libc++ during Apple stage1 ↵Louis Dionne2019-04-171-0/+3
| | | | | | | | | bootstrap This is not necessary in stage2 because we don't even build libc++.dylib there. llvm-svn: 358582
* [clang-tidy] Add fix descriptions to clang-tidy checks.Haojian Wu2019-04-174-111/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Motivation/Context: in the code review system integrating with clang-tidy, clang-tidy doesn't provide a human-readable description of the fix. Usually developers have to preview a code diff (before vs after apply the fix) to understand what the fix does before applying a fix. This patch proposes that each clang-tidy check provides a short and actional fix description that can be shown in the UI, so that users can know what the fix does without previewing diff. This patch extends clang-tidy framework to support fix descriptions (will add implementations for existing checks in the future). Fix descriptions and fixes are emitted via diagnostic::Note (rather than attaching the main warning diagnostic). Before this patch: ``` void MyCheck::check(...) { ... diag(loc, "my check warning") << FixtItHint::CreateReplacement(...); } ``` After: ``` void MyCheck::check(...) { ... diag(loc, "my check warning"); // Emit a check warning diag(loc, "fix description", DiagnosticIDs::Note) << FixtItHint::CreateReplacement(...); // Emit a diagnostic note and a fix } ``` Reviewers: sammccall, alexfh Reviewed By: alexfh Subscribers: MyDeveloperDay, Eugene.Zelenko, aaron.ballman, JonasToth, xazax.hun, jdoerfert, cfe-commits Tags: #clang-tools-extra, #clang Differential Revision: https://reviews.llvm.org/D59932 llvm-svn: 358576
* clang-cl: Parse /openmp:experimentalHans Wennborg2019-04-172-0/+2
| | | | | | | It was added to the MS docs recently here: https://github.com/MicrosoftDocs/cpp-docs/commit/3951085ab722fbb488ca40864f4a0553f7b71855 llvm-svn: 358570
* [libclang] Expose ext_vector_typeSven van Haastregt2019-04-174-5/+17
| | | | | | Differential Revision: https://reviews.llvm.org/D60775 llvm-svn: 358566
* [Driver] Simplify -g level computation and its interaction with -gsplit-dwarfFangrui Song2019-04-172-35/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: When -gsplit-dwarf is used together with other -g options, in most cases the computed debug info level is decided by the last -g option, with one special case (see below). This patch drops that special case and thus makes it easy to reason about: // If a lower debug level -g comes after -gsplit-dwarf, in some cases // -gsplit-dwarf is cancelled. -gsplit-dwarf -g0 => 0 -gsplit-dwarf -gline-directives-only => DebugDirectivesOnly -gsplit-dwarf -gmlt -fsplit-dwarf-inlining => 1 -gsplit-dwarf -gmlt -fno-split-dwarf-inlining => 1 + split // If -gsplit-dwarf comes after -g options, with this patch, the net // effect is 2 + split for all combinations -g0 -gsplit-dwarf => 2 + split -gline-directives-only -gsplit-dwarf => 2 + split -gmlt -gsplit-dwarf -fsplit-dwarf-inlining => 2 + split -gmlt -gsplit-dwarf -fno-split-dwarf-inlining => 1 + split (before) 2 + split (after) The last case has been changed. In general, if the user intends to lower debug info level, place that -g option after -gsplit-dwarf. Some context: In gcc, the last of -gsplit-dwarf -g0 -g1 -g2 -g3 -ggdb[0-3] -gdwarf-* ... decides the debug info level (-gsplit-dwarf -gdwarf-* have level 2). It is a bit unfortunate that -gsplit-dwarf -gdwarf-* ... participate in the level computation but that is the status quo. Reviewers: dblaikie, echristo, probinson Reviewed By: dblaikie, probinson Subscribers: probinson, aprantl, jdoerfert, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D59923 llvm-svn: 358544
* [NFC] Remove unused function (Sema::pushExternalDeclIntoScope)Leonard Chan2019-04-162-13/+0
| | | | llvm-svn: 358538
* Modify test to use -S instead of -c so that it works when an external ↵Douglas Yung2019-04-161-3/+3
| | | | | | assembler is used that is not present. llvm-svn: 358537
* [FileSystemStatCache] Update test for new FileSystemStatCache APIHarlan Haskins2019-04-161-5/+6
| | | | | | | | | | | | | | Summary: Update this test to return std::error_code instead of LookupResult. Reviewers: arphaman Subscribers: dexonsmith, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D60786 llvm-svn: 358511
* [FileSystemStatCache] Return std::error_code from stat cache methodsHarlan Haskins2019-04-163-41/+37
| | | | | | | | | | | | | | | | | | | | | | Summary: Previously, we would return true/false signifying if the cache/lookup succeeded or failed. Instead, provide clients with the underlying error that was thrown while attempting to look up in the cache. Since clang::FileManager doesn't make use of this information, it discards the error that's received and casts away to bool. This change is NFC. Reviewers: benlangmuir, arphaman Subscribers: dexonsmith, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D60735 llvm-svn: 358509
* [Test] Remove obsolete test.Michael Kruse2019-04-161-21/+0
| | | | | | | | | | | | | | | | | | The FIXME of this test case has been addressed in r335084/r338800. Its execution still does not succeed because of multiple syntax errors. First, the "clang" namespace is missing on each of the 4 pragmas. Second, the pragma for defining the vector width is "vectorize_width(4)" instead of "vectorize(4)". Third, the pragma for defining the interleave factor is "interleave_count(8)" instead of "interleave(8)". The file was already using the wrong syntax when added in r210925 2014-06-13. The file ast-print-pragmas.cpp already checks for the correct pragma order, making this test redundant even if fixed. Differential Revision: https://reviews.llvm.org/D60749 llvm-svn: 358507
* [OPENMP][NVPTX]Run combined constructs with if clause in SPMD mode.Alexey Bataev2019-04-162-9/+13
| | | | | | | | | Combined constructs with parallel and if clauses without modifiers may be executed in SPMD mode since if the condition is true for the target region, it is also true for parallel region and the threads must be run in parallel. llvm-svn: 358503
* [OPENMP]Require aarch arch for the tests, NFC.Alexey Bataev2019-04-167-0/+7
| | | | llvm-svn: 358493
* [AArch64] Implement Vector Funtion ABI name mangling.Alexey Bataev2019-04-169-3/+687
| | | | | | | | | | | | | | | | | | | Summary: The name mangling scheme is defined in section 3.5 of the "Vector function application binary interface specification for AArch64" [1]. [1] https://developer.arm.com/products/software-development-tools/hpc/arm-compiler-for-hpc/vector-function-abi Reviewers: rengolin, ABataev Reviewed By: ABataev Subscribers: sdesmalen, javed.absar, kristof.beyls, jdoerfert, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60583 llvm-svn: 358490
* Re-commit r357452: SimplifyCFG SinkCommonCodeFromPredecessors: Also sink ↵Hans Wennborg2019-04-163-3/+2
| | | | | | | | | | | | | | | | | | | function calls without used results (PR41259) The original commit caused false positives from AddressSanitizer's use-after-scope checks, which have now been fixed in r358478. > The code was previously checking that candidates for sinking had exactly > one use or were a store instruction (which can't have uses). This meant > we could sink call instructions only if they had a use. > > That limitation seemed a bit arbitrary, so this patch changes it to > "instruction has zero or one use" which seems more natural and removes > the need to special-case stores. > > Differential revision: https://reviews.llvm.org/D59936 llvm-svn: 358483
* Tweak test to pass when using a non-integrated assembler.Richard Smith2019-04-161-4/+4
| | | | llvm-svn: 358470
* PR41192: fix cases where "missing ';' after class" error wouldRichard Smith2019-04-163-3/+15
| | | | | | incorrectly fire. llvm-svn: 358467
* DebugInfo: Default to standalone debug when tuning for LLDBDavid Blaikie2019-04-162-14/+14
| | | | | | | | | | | | | | | | | LLDB can't currently handle Clang's default (limit/no-standalone) DWARF, so platforms that default to LLDB (Darwin) or anyone else manually requesting LLDB tuning, should also get standalone DWARF. That doesn't mean a user can't explicitly enable (because they have other reasons to prefer standalone DWARF (such as that they're only building half their application with debug info enabled, and half without - or because they're tuning for GDB, but want to be able to use it under LLDB too (this is the default on FreeBSD))) or disable (testing LLDB fixes/improvements that handle no-standalone mode, building C code, perhaps, which wouldn't have the LLDB<>no-standalone conflict, etc) the feature regardless of the tuning. llvm-svn: 358464
* Simplify diagnosis of misplaced attributes in module-declarations.Richard Smith2019-04-151-4/+3
| | | | | | No functional change intended. llvm-svn: 358463
* Time profiler: small fixes and optimizationsAnton Afanasyev2019-04-151-1/+1
| | | | | | | | | | | | | | Summary: Fixes from Roman's review here: https://reviews.llvm.org/D58675#1465336 Reviewers: lebedev.ri Subscribers: hiraditya, mgrang, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D60663 llvm-svn: 358448
* [OPENMP][NVPTX]Run parallel regions with num_threads clauses in SPMDAlexey Bataev2019-04-153-66/+50
| | | | | | | | | | mode. After the previous patch with the more correct handling of the number of threads in parallel regions, the parallel regions with num_threads clauses can be executed in SPMD mode. llvm-svn: 358445
* [clang-format] Fix -Wconversion-null warning in GCCReuben Thomas2019-04-151-6/+1
| | | | | | | | | | | | GCC -Wconversion-null warning appeared after 9a63380260860b657b72f07c4f0e61e382ab934a. There was a similar problem already in the past: http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20131230/096230.html Patch committed on behalf of @dendibakh Differential Revision: https://reviews.llvm.org/D60726 llvm-svn: 358441
* Revert "[clang] Aligned allocation is actually supported in macosx 10.13"Louis Dionne2019-04-153-12/+12
| | | | | | | | This reverts r358409, which I think broke the bots in compiler-rt. Since I'm having trouble reproducing the failure, I'm reverting this until I can investigate locally. llvm-svn: 358437
* [X86] Improve avx512-kconstraints-att_inline_asm.c to not be easily defeated ↵Craig Topper2019-04-151-32/+50
| | | | | | | | by deadcode elimination. Improve CHECK lines to check IR types used. NFC I plan to use this as the basis for backend IR test cases. We currently crash hard for using 32 or 64 bit mask registers without avx512bw. llvm-svn: 358435
* [CommandLineParser] Add DefaultOption flagDon Hinton2019-04-151-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: Add DefaultOption flag to CommandLineParser which provides a default option or alias, but allows users to override it for some other purpose as needed. Also, add `-h` as a default alias to `-help`, which can be seamlessly overridden by applications like llvm-objdump and llvm-readobj which use `-h` as an alias for other options. (relanding after revert, r358414) Added DefaultOptions.clear() to reset(). Reviewers: alexfh, klimek Reviewed By: klimek Subscribers: kristina, MaskRay, mehdi_amini, inglorion, dexonsmith, hiraditya, llvm-commits, jhenderson, arphaman, cfe-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D59746 llvm-svn: 358428
* [X86] Restore the pavg intrinsics.Craig Topper2019-04-158-162/+30
| | | | | | | | | | | | | | | The pattern we replaced these with may be too hard to match as demonstrated by PR41496 and PR41316. This patch restores the intrinsics and then we can start focusing on the optimizing the intrinsics. I've mostly reverted the original patch that removed them. Though I modified the avx512 intrinsics to not have masking built in. Differential Revision: https://reviews.llvm.org/D60674 llvm-svn: 358427
* Revert r358337: "[CommandLineParser] Add DefaultOption flag"Ilya Biryukov2019-04-151-0/+2
| | | | | | | The change causes test failures under asan. Reverting to unbreak our integrate. llvm-svn: 358414
* [clang] Aligned allocation is actually supported in macosx 10.13Louis Dionne2019-04-153-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | Summary: In r350649, I changed aligned allocation from being available starting in macosx10.13 to macosx10.14. However, aligned allocation is indeed available starting with macosx10.13, my investigation had been based on the wrong libc++abi dylib. This means that Clang before the fix will be more stringent when it comes to aligned allocation -- it will not allow it when back-deploying to macosx 10.13, when it would actually be safe to do so. Note that a companion change will be coming to fix the libc++ tests. Reviewers: ahatanak Subscribers: jkorous, dexonsmith, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D60626 llvm-svn: 358409
* clang-format vs plugin: Visual Studio 2019 supportHans Wennborg2019-04-151-1/+1
| | | | llvm-svn: 358402
* [MinGW] Remove some supefluous calls to MakeArgString. NFC.Martin Storsjo2019-04-151-8/+8
| | | | llvm-svn: 358393
* [Lookup] Invisible decls should not be ambiguous when renaming.Eric Liu2019-04-154-13/+61
| | | | | | | | | | | | | | | | | | Summary: For example, a renamed type in a header file can conflict with declaration in a random file that includes the header, but we should not consider the decl ambiguous if it's not visible at the rename location. This improves consistency of generated replacements when header file is included in different TUs. Reviewers: hokein Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D60257 llvm-svn: 358378
* [clang-format] [PR41170] Break after return type ignored with certain ↵Paul Hoad2019-04-152-3/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | comments positions Summary: Addresses https://bugs.llvm.org/show_bug.cgi?id=41170 The AlwaysBreakAfterReturn type setting can go wrong if the line ends with a comment ``` void foo() /* comment */ ``` or ``` void foo() // comment ``` It will incorrectly see such functions as Declarations and not Definitions The following code addresses this by looking for function which end with `; <comment>` rather than just `;` or `<comment>` Reviewers: klimek, djasper, reuk, russellmcc, owenpan, sammccall Reviewed By: owenpan Subscribers: lebedev.ri, cfe-commits, sammccall Tags: #clang Differential Revision: https://reviews.llvm.org/D60363 llvm-svn: 358375
* [c++20] Enable driver and frontend support for building and usingRichard Smith2019-04-146-12/+132
| | | | | | modules when -std=c++2a is specified. llvm-svn: 358355
* [c++20] Parsing support for module-declarations, import-declarations,Richard Smith2019-04-1414-97/+460
| | | | | | | | | and the global and private module fragment. For now, the private module fragment introducer is ignored, but use of the global module fragment introducer should be properly enforced. llvm-svn: 358353
* [CommandLineParser] Add DefaultOption flagDon Hinton2019-04-131-2/+0
| | | | | | | | | | | | | | | | | | | | | | Summary: Add DefaultOption flag to CommandLineParser which provides a default option or alias, but allows users to override it for some other purpose as needed. Also, add `-h` as a default alias to `-help`, which can be seamlessly overridden by applications like llvm-objdump and llvm-readobj which use `-h` as an alias for other options. Reviewers: alexfh, klimek Reviewed By: klimek Subscribers: MaskRay, mehdi_amini, inglorion, dexonsmith, hiraditya, llvm-commits, jhenderson, arphaman, cfe-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D59746 llvm-svn: 358337
* [verify] Add support for location markers in directives.Richard Smith2019-04-135-145/+334
| | | | | | | | | | | | | | | A marker (matching /#[A-Za-z0-9_-]/) is specified by attaching a comment containing the marker to the line at which the diagnostic is expected, and then can be referenced from an expected-* directive after an @: foo // #1 // expected-error@#1 {{undeclared identifier 'foo'}} The intent is for markers to be used in situations where relative line numbers are currently used, to avoid the need to renumber when the test case is rearranged. llvm-svn: 358326
* [analyzer] Escape pointers stored into top-level parameters with destructors.Artem Dergachev2019-04-132-34/+53
| | | | | | | | | | | | | | | | | | | | | | Writing stuff into an argument variable is usually equivalent to writing stuff to a local variable: it will have no effect outside of the function. There's an important exception from this rule: if the argument variable has a non-trivial destructor, the destructor would be invoked on the parent stack frame, exposing contents of the otherwise dead argument variable to the caller. If such argument is the last place where a pointer is stored before the function exits and the function is the one we've started our analysis from (i.e., we have no caller context for it), we currently diagnose a leak. This is incorrect because the destructor of the argument still has access to the pointer. The destructor may deallocate the pointer or even pass it further. Treat writes into such argument regions as "escapes" instead, suppressing spurious memory leak reports but not messing with dead symbol removal. Differential Revision: https://reviews.llvm.org/D60112 llvm-svn: 358321
* Relanding r357928 with fixed debuginfo check.Amy Huang2019-04-124-7/+54
| | | | | | | | | | | | | [MS] Add metadata for __declspec(allocator) Original summary: Emit !heapallocsite in the metadata for calls to functions marked with __declspec(allocator). Eventually this will be emitted as S_HEAPALLOCSITE debug info in codeview. Differential Revision: https://reviews.llvm.org/D60237 llvm-svn: 358307
* [HIP] Use -mlink-builtin-bitcode to link device libraryYaxun Liu2019-04-124-54/+60
| | | | | | | | | | | | Use -mlink-builtin-bitcode instead of llvm-link to link device library so that device library bitcode and user device code can be compiled in a consistent way. This is the same approach used by CUDA and OpenMP. Differential Revision: https://reviews.llvm.org/D60513 llvm-svn: 358290
* [AST][NFC] Add const children() accessors to all AST nodesBruno Ricci2019-04-1211-0/+661
| | | | | | | | | | | | | | Systematically add the const-qualified version of children() to all statement/expression nodes. Previously the const-qualified variant was only defined for some nodes. NFC. Patch by: Nicolas Manichon Differential Revision: https://reviews.llvm.org/D60029 Reviewed By: riccibruno llvm-svn: 358288
* [asan] Add gcc 8's driver option -fsanitize=pointer-compare and ↵Pierre Gousseau2019-04-1214-0/+68
| | | | | | | | | | | | -fsanitize=pointer-substract. Disabled by default as this is still an experimental feature. Reviewed By: thakis Differential Revision: https://reviews.llvm.org/D59221 llvm-svn: 358285
OpenPOWER on IntegriCloud