summaryrefslogtreecommitdiffstats
path: root/clang/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Revert "[ASTImporter] Reorder fields after structure import is finished"Davide Italiano2018-10-301-43/+3
| | | | | | This reverts commit r345545 because it breaks some lldb tests. llvm-svn: 345643
* NFC: Remove the ObjC1/ObjC2 distinction from clang (and related projects)Erik Pilkington2018-10-3049-152/+147
| | | | | | | | | | We haven't supported compiling ObjC1 for a long time (and never will again), so there isn't any reason to keep these separate. This patch replaces LangOpts::ObjC1 and LangOpts::ObjC2 with LangOpts::ObjC. Differential revision: https://reviews.llvm.org/D53547 llvm-svn: 345637
* Silencing a -Wunused-variable warning; NFC.Aaron Ballman2018-10-301-2/+0
| | | | llvm-svn: 345633
* Fixing some build bot failures from r345628; NFC intended.Aaron Ballman2018-10-301-1/+1
| | | | llvm-svn: 345630
* Add the ability to output static analysis results to SARIF.Aaron Ballman2018-10-302-2/+273
| | | | | | This allows users to specify SARIF (https://github.com/oasis-tcs/sarif-spec) as the output from the clang static analyzer so that the results can be read in by other tools, such as extensions to Visual Studio and VSCode, as well as static analyzers like CodeSonar. llvm-svn: 345628
* [OPENMP] Support for mapping of the lambdas in target regions.Alexey Bataev2018-10-306-4/+216
| | | | | | | | | | Added support for mapping of lambdas in the target regions. It scans all the captures by reference in the lambda, implicitly maps those variables in the target region and then later reinstate the addresses of references in lambda to the correct addresses of the captured|privatized variables. llvm-svn: 345609
* [AST] Only store data for the NRVO candidate in ReturnStmt if neededBruno Ricci2018-10-307-22/+60
| | | | | | | | | | | | | Only store the NRVO candidate if needed in ReturnStmt. A good chuck of all of the ReturnStmt have no NRVO candidate (more than half when parsing all of Boost). For all of them this saves one pointer. This has no impact on children(). Differential Revision: https://reviews.llvm.org/D53716 Reviewed By: rsmith llvm-svn: 345605
* [AST] Only store the needed data in WhileStmtBruno Ricci2018-10-306-23/+69
| | | | | | | | | | | | Don't store the data for the condition variable if not needed. This cuts the size of WhileStmt by up to a pointer. The order of the children is kept the same. Differential Revision: https://reviews.llvm.org/D53715 Reviewed By: rjmccall llvm-svn: 345597
* [clang] Move two utility functions into SourceManagerRoman Lebedev2018-10-301-12/+2
| | | | | | | | | | | | | | | | Summary: So we can keep that not-so-great logic in one place. Reviewers: rsmith, aaron.ballman Reviewed By: rsmith Subscribers: nemanjai, kbarton, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D53837 llvm-svn: 345594
* [OPENMP] Fix for "error: unused variable 'CED'"Bjorn Pettersson2018-10-301-1/+1
| | | | | | Quick fix to make code compile with -Werror,-Wunused-variable. llvm-svn: 345573
* PR23833, DR2140: an lvalue-to-rvalue conversion on a glvalue of typeRichard Smith2018-10-306-9/+27
| | | | | | | | | nullptr_t does not access memory. We now reuse CK_NullToPointer to represent a conversion from a glvalue of type nullptr_t to a prvalue of nullptr_t where necessary. llvm-svn: 345562
* [analyzer] Allow padding checker to traverse simple class hierarchiesAlexander Shaposhnikov2018-10-301-8/+30
| | | | | | | | | | | | | | | The existing padding checker skips classes that have any base classes. This patch allows the checker to traverse very simple cases: classes that have no fields and have exactly one base class. This is important mostly in the case of array declarations. Patch by Max Bernstein! Test plan: make check-all Differential revision: https://reviews.llvm.org/D53206 llvm-svn: 345558
* [ASTImporter] Reorder fields after structure import is finishedAleksei Sidorin2018-10-291-3/+43
| | | | | | | | | | | | There are multiple reasons why field structures can be imported in wrong order. The simplest is the ability of field initializers and method bodies to refer fields not in order they are listed in. Unfortunately, there is no clean solution for that currently so I'm leaving a FIXME. Differential Revision: https://reviews.llvm.org/D44100 llvm-svn: 345545
* [Driver] Support sanitized libraries on FuchsiaPetr Hosek2018-10-293-2/+43
| | | | | | | | | | When using sanitizers, add <resource_dir>/<target>/lib/<sanitizer> to the list of library paths to support using sanitized version of runtime libraries if available. Differential Revision: https://reviews.llvm.org/D53487 llvm-svn: 345537
* In swiftcall, don't merge FP/vector types within a chunk.John McCall2018-10-291-3/+37
| | | | llvm-svn: 345536
* [OPENMP]Fix PR39372: Does not complain about loop bound variable notAlexey Bataev2018-10-291-0/+2
| | | | | | | | | | | being shared. According to the standard, the variables with unspecified data-sharing attributes in presence of `default(none)` clause must be reported to users. Compiler did not generate error reports for the variables used in other OpenMP regions. Patch fixes this. llvm-svn: 345533
* [analyzer][NFC] Refactor PlistDiagnostics to use a class instead of passing ↵Kristof Umann2018-10-291-151/+180
| | | | | | | | | | | 9 parameters around This has been a long time coming. Note the usage of AnalyzerOptions: I'll need it for D52742, and added it in rC343620. The main motivation for this was that I'll need to add yet another parameter to every single function, and some functions would reach their 10th parameter with that change. llvm-svn: 345531
* [OpenMP] Fix condition.Gheorghe-Teodor Bercea2018-10-291-1/+2
| | | | | | | | | | | | | | Summary: Iteration variable must be strictly less than the number of iterations. This fixes a bug introduced by previous patch D53448. Reviewers: ABataev, caomhin Reviewed By: ABataev Subscribers: guansong, cfe-commits Differential Revision: https://reviews.llvm.org/D53827 llvm-svn: 345527
* Revert "Revert "Support for groups of attributes in #pragma clang attribute""Erik Pilkington2018-10-292-45/+83
| | | | | | | This reverts commit r345487, which reverted r345486. I think the crashes were caused by an OOM on the builder, trying again to confirm... llvm-svn: 345517
* [AST] Only store the needed data in SwitchStmtBruno Ricci2018-10-296-28/+93
| | | | | | | | | | | | | | | | Don't store the data for the init statement and condition variable if not needed. This cuts the size of SwitchStmt by up to 2 pointers. The order of the children is intentionally kept the same. Also use the newly available space in the bit-fields of Stmt to store the bit representing whether all enums have been covered instead of using a PointerIntPair. Differential Revision: https://reviews.llvm.org/D53714 Reviewed By: rjmccall llvm-svn: 345510
* [OpenMP][NVPTX] Use single loops when generating code for distribute ↵Gheorghe-Teodor Bercea2018-10-299-35/+153
| | | | | | | | | | | | | | | | parallel for Summary: This patch adds a new code generation path for bound sharing directives containing distribute parallel for. The new code generation scheme applies to chunked schedules on distribute and parallel for directives. The scheme simplifies the code that is being generated by eliminating the need for an outer for loop over chunks for both distribute and parallel for directives. In the case of distribute it applies to any sized chunk while in the parallel for case it only applies when chunk size is 1. Reviewers: ABataev, caomhin Reviewed By: ABataev Subscribers: jholewinski, guansong, cfe-commits Differential Revision: https://reviews.llvm.org/D53448 llvm-svn: 345509
* [OpenMP][NVPTX] Enable default scheduling for parallel for in non-SPMD cases.Gheorghe-Teodor Bercea2018-10-291-5/+6
| | | | | | | | | | | | | | Summary: This patch enables the choosing of the default schedule for parallel for loops even in non-SPMD cases. Reviewers: ABataev, caomhin Reviewed By: ABataev Subscribers: jholewinski, guansong, cfe-commits Differential Revision: https://reviews.llvm.org/D53443 llvm-svn: 345507
* [OPENMP] Do not capture private loop counters.Alexey Bataev2018-10-292-22/+95
| | | | | | | | If the loop counter is not declared in the context of the loop and it is private, such loop counters should not be captured in the outlined regions. llvm-svn: 345505
* Add the isStaticLocal() AST matcher for matching on local static variables.Aaron Ballman2018-10-291-0/+1
| | | | | | Patch by Joe Ranieri. llvm-svn: 345502
* [OpenCL] Fix serialization of OpenCLExtensionDeclsAndrew Savonichev2018-10-291-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: I recently discovered that adding the following code into `opencl-c.h` causes failure of `test/Headers/opencl-c-header.cl`: ``` #pragma OPENCL EXTENSION cl_my_ext : begin void cl_my_ext_foobarbaz(); #pragma OPENCL EXTENSIOn cl_my_ext : end ``` Clang crashes at the assertion is `ASTReader::getGlobalSubmoduleID()`: ``` assert(I != M.SubmoduleRemap.end() && "Invalid index into submodule index remap"); ``` The root cause of the problem that to deserialize `OPENCL_EXTENSION_DECLS` section `ASTReader` needs to deserialize a Decl contained in it. In turn, deserializing a Decl requires information about whether this declaration is part of a (sub)module, but this information is not read yet because it is located further in a module file. Reviewers: Anastasia, yaxunl, JDevlieghere Reviewed By: Anastasia Subscribers: sidorovd, cfe-commits, asavonic Differential Revision: https://reviews.llvm.org/D53200 llvm-svn: 345497
* [ASTImporter] Import overrides before importing the rest of the chainGabor Marton2018-10-291-3/+3
| | | | | | | | | | | | | | | | | | | | | | | Summary: During method import we check for structural eq of two methods. In the structural eq check we check for their isVirtual() flag. That flag, however, may depend on the number of overrides. Before this change we imported the overrides *after* we had imported the rest of the redecl chain. So, during the import of another decl from the chain IsVirtual() gave false result. Writing tests for this is not really possible, because there is no way to remove an overridden method via the AST API. (We should access the private ASTContext::OverriddenMethods container.) Also, we should do the remove in the middle of the import process. Reviewers: a_sidorin, a.sidorin Subscribers: rnkovacs, dkrupp, Szelethus, cfe-commits Differential Revision: https://reviews.llvm.org/D53704 llvm-svn: 345496
* Revert "Support for groups of attributes in #pragma clang attribute"Erik Pilkington2018-10-292-84/+46
| | | | | | | | | This reverts commit r345486. Looks like it causes some old versions of GCC to crash, I'll see if I can work around it and recommit... llvm-svn: 345487
* Support for groups of attributes in #pragma clang attributeErik Pilkington2018-10-292-46/+84
| | | | | | | | | | | | | | | | | | This commit enables pushing an empty #pragma clang attribute push, then adding multiple attributes to it, then popping them all with #pragma clang attribute pop, just like #pragma clang diagnostic. We still support the current way of adding these, #pragma clang attribute push(__attribute__((...))), by treating it like a combined push/attribute. This is needed to create macros like: DO_SOMETHING_BEGIN(attr1, attr2, attr3) // ... DO_SOMETHING_END rdar://45496947 Differential revision: https://reviews.llvm.org/D53621 llvm-svn: 345486
* AST: extend MS decoration handling for extended vectorsSaleem Abdulrasool2018-10-281-12/+14
| | | | | | | | | | | | | | | | | We correctly handled extended vectors of non-floating point types. However, we have the Intel style builtins which MSVC also supports which do overlap in sizes with the floating point extended vectors. This would result in overloading of floating point extended vector types which matched sizes (e.g. <3 x float> would be backed by a <4 x float> and thus match sizes) to be mangled similarly. Extended vectors are a clang extension which live outside of the builtins, so mangle them all similarly. This change just extends the current scheme to treat floating point types similar to the way that we treat other types currently. This now allows the swift runtime to be built for Windows again. llvm-svn: 345479
* [AST] Don't store data for GNU range case statement if not neededBruno Ricci2018-10-286-16/+46
| | | | | | | | | | | | | | | | Don't store the data for case statements of the form LHS ... RHS if not needed. This cuts the size of CaseStmt by 1 pointer + 1 SourceLocation in the common case. Also use the newly available space in the bit-fields of Stmt to store the keyword location of SwitchCase and move the small accessor SwitchCase::getSubStmt to the header. Differential Revision: https://reviews.llvm.org/D53609 Reviewed By: rjmccall llvm-svn: 345472
* Reapply Pass the nopie flag to the linker when linking with -pg.Brad Smith2018-10-281-1/+1
| | | | llvm-svn: 345470
* [AST] Only store the needed data in IfStmtBruno Ricci2018-10-277-50/+138
| | | | | | | | | | | | | | | | | | | | | | | | Only store the needed data in IfStmt. This cuts the size of IfStmt by up to 3 pointers + 1 SourceLocation. The order of the children is intentionally kept the same even though it would be more convenient to put the optional trailing objects last. Additionally use the newly available space in the bit-fields of Stmt to store the location of the "if". The result of this is that for the common case of an if statement of the form: if (some_cond) some_statement the size of IfStmt is brought down to 8 bytes + 2 pointers, instead of 8 bytes + 5 pointers + 2 SourceLocation. Differential Revision: https://reviews.llvm.org/D53607 Reviewed By: rjmccall llvm-svn: 345464
* [AST] Refactor PredefinedExprBruno Ricci2018-10-2712-50/+84
| | | | | | | | | | | | | | | | | | Make the following changes to PredefinedExpr: 1. Move PredefinedExpr below StringLiteral so that it can use its definition. 2. Rename IdentType to IdentKind to be more in line with clang's conventions, and propagate the change to its users. 3. Move the location and the IdentKind into the newly available space of the bit-fields of Stmt. 4. Only store the function name when needed. When parsing all of Boost, of the 1357 PredefinedExpr 919 have no function name. Differential Revision: https://reviews.llvm.org/D53605 Reviewed By: rjmccall llvm-svn: 345460
* [AST] Widen the bit-fields of Stmt to 8 bytes.Bruno Ricci2018-10-273-8/+14
| | | | | | | | | | | | | | | | | | | | | | Although some classes are using the tail padding of Stmt, most of them are not. In particular the expression classes are not using it since there is Expr in between, and Expr contains a single pointer. This patch widen the bit-fields to Stmt to 8 bytes and move some data from NullStmt, CompoundStmt, LabelStmt, AttributedStmt, SwitchStmt, WhileStmt, DoStmt, ForStmt, GotoStmt, ContinueStmt, BreakStmt and ReturnStmt to the newly available space. In itself this patch do not achieve much but I plan to go through each of the classes in the statement/expression hierarchy and use this newly available space. A quick estimation gives me that this should shrink the size of the statement/expression hierarchy by >10% when parsing all of Boost. Differential Revision: https://reviews.llvm.org/D53604 Reviewed By: rjmccall llvm-svn: 345459
* AST: fix a typo in a comment (NFC)Saleem Abdulrasool2018-10-271-1/+1
| | | | | | Fix a typo spotted by Akira! NFC llvm-svn: 345449
* Revert r345170 [along with its llvm counterpart r345169] as it makes Halide ↵Alina Sbirlea2018-10-271-2/+2
| | | | | | builds timeout. llvm-svn: 345446
* Revert "Pass the nopie flag to the linker when linking with -pg." untilBrad Smith2018-10-271-1/+1
| | | | | | one of the tests can be fixed on !OpenBSD hosts. llvm-svn: 345443
* Pass the nopie flag to the linker when linking with -pg.Brad Smith2018-10-271-1/+1
| | | | llvm-svn: 345439
* Revert "[PassManager/Sanitizer] Enable usage of ported AddressSanitizer ↵Leonard Chan2018-10-261-11/+0
| | | | | | | | | | | | | passes with -fsanitize=address" This reverts commit 8d6af840396f2da2e4ed6aab669214ae25443204 and commit b78d19c287b6e4a9abc9fb0545de9a3106d38d3d which causes slower build times by initializing the AddressSanitizer on every function run. The corresponding revisions are https://reviews.llvm.org/D52814 and https://reviews.llvm.org/D52739. llvm-svn: 345433
* [VFS] Add property 'fallthrough' that controls fallback to real file system.Volodymyr Sapsai2018-10-261-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | Default property value 'true' preserves current behavior. Value 'false' can be used to create VFS "root", file system that gives better control over which files compiler can use during compilation as there are no unpredictable accesses to real file system. Non-fallthrough use case changes how we treat multiple VFS overlay files. Instead of all of them being at the same level just above a real file system, now they are nested and subsequent overlays can refer to files in previous overlays. Change is done both in LLVM and Clang, corresponding LLVM commit is r345431. rdar://problem/39465552 Reviewers: bruno, benlangmuir Reviewed By: bruno Subscribers: dexonsmith, cfe-commits, hiraditya Differential Revision: https://reviews.llvm.org/D50539 llvm-svn: 345432
* PR26547: alignof should return ABI alignment, not preferred alignmentRichard Smith2018-10-269-22/+54
| | | | | | | | | | | | Summary: - Add `UETT_PreferredAlignOf` to account for the difference between `__alignof` and `alignof` - `AlignOfType` now returns ABI alignment instead of preferred alignment iff clang-abi-compat > 7, and one uses _Alignof or alignof Patch by Nicole Mazzuca! Differential Revision: https://reviews.llvm.org/D53207 llvm-svn: 345419
* [Fixed Point Arithmetic] Refactor fixed point castsBjorn Pettersson2018-10-261-55/+38
| | | | | | | | | | | | | | | | | | | | Summary: - Added names for some emitted values (such as "tobool" for the result of a cast to boolean). - Replaced explicit IRBuilder request for doing sext/zext/trunc by using CreateIntCast instead. - Simplify code for emitting satuation into one if-statement for clamping to max, and one if-statement for clamping to min. Reviewers: leonardchan, ebevhan Reviewed By: leonardchan Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D53707 llvm-svn: 345398
* Revert r345330 "Add MS ABI mangling for operator<=>."Hans Wennborg2018-10-261-2/+9
| | | | | | | | | | The generated MS manglings differ between 32- and 64-bit, and the test only expects the latter. See also the commit email thread. > Thanks to Cameron DaCamara at Microsoft for letting us know what their > chosen mangling is here! llvm-svn: 345380
* Revert "Reapply: [Driver] Use forward slashes in most linker arguments"Martin Storsjo2018-10-265-30/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit r345370, as it uncovered even more issues in tests with partial/inconsistent path normalization: http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/13562 http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/886 http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/20994 In particular, these tests seem to have failed: Clang :: CodeGen/thinlto-diagnostic-handler-remarks-with-hotness.ll Clang :: CodeGen/thinlto-multi-module.ll Clang :: Driver/cuda-external-tools.cu Clang :: Driver/cuda-options.cu Clang :: Driver/hip-toolchain-no-rdc.hip Clang :: Driver/hip-toolchain-rdc.hip Clang :: Driver/openmp-offload-gpu.c At least the Driver tests could potentially be fixed by extending the path normalization to even more places, but the issues with the CodeGen tests are still unknown. In addition, a number of other tests seem to have been broken in other clang dependent tools such as clang-tidy and clangd. llvm-svn: 345372
* Reapply: [Driver] Use forward slashes in most linker argumentsMartin Storsjo2018-10-265-17/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libtool inspects the output of $CC -v to detect what object files and libraries are linked in by default. When clang is built as a native windows executable, all paths are formatted with backslashes, and the backslashes cause each argument to be enclosed in quotes. The backslashes and quotes break further processing within libtool (which is implemented in shell script, running in e.g. msys) pretty badly. Between unix style pathes (that only work in tools that are linked to the msys runtime, essentially the same as cygwin) and proper windows style paths (with backslashes, that can easily break shell scripts and msys environments), the best compromise is to use windows style paths (starting with e.g. c:) but with forward slashes, which both msys based tools, shell scripts and native windows executables can cope with. This incidentally turns out to be the form of paths that GCC prints out when run with -v on windows as well. This change potentially makes the output from clang -v a bit more inconsistent, but it is isn't necessarily very consistent to begin with. Compared to the previous attempt in SVN r345004, this now does the same transformation on more paths, hopefully on the right set of paths so that all tests pass (previously some tests failed, where path fragments that were required to be identical turned out to use different path separators in different places). This now also is done only for non-windows, or cygwin/mingw targets, to preserve all backslashes for MSVC cases (where the paths can end up e.g. embedded into PDB files. (The transformation function itself, llvm::sys::path::convert_to_slash only has an effect when run on windows.) Differential Revision: https://reviews.llvm.org/D53066 llvm-svn: 345370
* PR31978: Don't crash if CodeGen sees a top-level BindingDecl.Richard Smith2018-10-261-0/+1
| | | | llvm-svn: 345362
* CodeGen: correct the case for swift 4.2, 5.0Saleem Abdulrasool2018-10-261-4/+4
| | | | | | | This corrects the leader for the swift names. The encoding for 4.2 and 5.0 differ by a single bit on the second character and were swapped. llvm-svn: 345360
* [AArch64] Support Windows stack probe command-line arguments.Eli Friedman2018-10-261-0/+11
| | | | | | | | | | | Adds support for -mno-stack-arg-probe and -mstack-probe-size. (Not really happy copy-pasting code, but that's what we do for all the other Windows targets.) Differential Revision: https://reviews.llvm.org/D53617 llvm-svn: 345354
* [AArch64] Implement FP16FML intrinsicsBryan Chan2018-10-253-0/+43
| | | | | | | | | | | | | Generate the FP16FML intrinsics into arm_neon.h (AArch64 only for now). Add two new type modifiers to NeonEmitter to handle the new prototypes. Define __ARM_FEATURE_FP16FML when +fp16fml is enabled and guard the intrinsics with the macro in arm_neon.h. Based on a patch by Gao Yiling. Differential Revision: https://reviews.llvm.org/D53633 llvm-svn: 345344
* [analyzer] Fix a bug in "collapsed" graph viewerGeorge Karpenkov2018-10-251-1/+2
| | | | | | | | | | | | | | | | | | | | | | Nodes which have only one predecessor and only one successor can not always be hidden, even if all states are the same. An additional condition is needed: the predecessor may have only one successor. This can be seen on this example: ``` A / \ B C \ / D ``` Nodes B and C can not be hidden even if all nodes in the graph have the same state. Differential Revision: https://reviews.llvm.org/D53735 llvm-svn: 345341
OpenPOWER on IntegriCloud