summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
...
* Serialization: Emit the final diagnostic state last, almost NFCDuncan P. N. Exon Smith2017-04-122-19/+40
| | | | | | | | | | Emit the final diagnostic state last to match source order. This also prepares for a follow-up commit for implicit modules. There's no real functionaliy change, just a slightly different AST file format. llvm-svn: 300024
* Serialization: Skip check in WritePragmaDiagnosticMappings, NFCDuncan P. N. Exon Smith2017-04-121-2/+1
| | | | | | | The record is never empty, since we always serialize the initial state. Skip the check. llvm-svn: 300021
* [IR] Add AttributeSet to hide AttributeSetNode* again, NFCReid Kleckner2017-04-121-1/+1
| | | | | | | | | | | | | | | | | Summary: For now, it just wraps AttributeSetNode*. Eventually, it will hold AvailableAttrs as an inline bitset, and adding and removing enum attributes will be super cheap. This sinks AttributeSetNode back down to lib/IR/AttributeImpl.h. Reviewers: pete, chandlerc Subscribers: llvm-commits, jfb Differential Revision: https://reviews.llvm.org/D31940 llvm-svn: 300014
* Silence unused variable warning in release builds.Benjamin Kramer2017-04-111-0/+1
| | | | llvm-svn: 300006
* Revert r298824 & r298816, recommit r298742 & r298754Richard Trieu2017-04-114-111/+385
| | | | | | | | | | | | | r299989 fixes the underlying issue by waiting long enough to late parsed arguments to be processed before doing an calculating the hash. r298742 [ODRHash] Add error messages for mismatched parameters in methods. r298754 [ODRHash] Add support for array and decayed types. llvm-svn: 300001
* [Sema][ObjC] Check whether a variable has a definition, rather thanAkira Hatanaka2017-04-112-1/+17
| | | | | | | | | | | | | | | | checking its storage class, when determining whether casting a C pointer to an ObjC pointer is allowed. This change allows casting variables whose declarations are directly contained in a linkage specification to an ObjC pointer type. Those variables are treated as if they contain the extern specifier for the purpose of determining whether they are definitions or not. rdar://problem/29249853 Differential Revision: https://reviews.llvm.org/D31673 llvm-svn: 299992
* [ODRHash] Improve handling of hash valuesRichard Trieu2017-04-115-14/+28
| | | | | | | | | | | Calculating the hash in Sema::ActOnTagFinishDefinition could happen before all sub-Decls were parsed or processed, which would produce the wrong hash value. Change to calculating the hash on the first use and storing the value instead. Also, avoid using the macros that were only for Boolean fields and use an explicit checker during the DefintionData merge. No functional change, but was this blocking other ODRHash patches. llvm-svn: 299989
* Modular Codegen: Support homing debug info for types in modular objectsDavid Blaikie2017-04-1114-22/+68
| | | | | | | | | Matching the function-homing support for modular codegen. Any type implicitly (implicit template specializations) or explicitly defined in a module is attached to that module's object file and omitted elsewhere (only a declaration used if necessary for references). llvm-svn: 299987
* [ExternalASTMerger] Removed a move constructor to address MSVC build failureSean Callanan2017-04-111-1/+1
| | | | llvm-svn: 299983
* Modular Codegen: Add/use a bit in serialized function definitions to track ↵David Blaikie2017-04-1119-41/+104
| | | | | | | | | | | | | | | | | | | | | whether they are the subject of modular codegen Some decls are created not where they are written, but in other module files/users (implicit special members and function template implicit specializations). To correctly identify them, use a bit next to the definition to track the modular codegen property. Discussed whether the module file bit could be omitted in favor of reconstituting from the modular codegen decls list - best guess today is that the efficiency improvement of not having to deserialize the whole list whenever any function is queried by a module user is worth it for the small size increase of this redundant (list + bit-on-def) representation. Reviewers: rsmith Differential Revision: https://reviews.llvm.org/D29901 llvm-svn: 299982
* Add const children() accessors to match the existing non-const children() ↵Aaron Ballman2017-04-113-10/+169
| | | | | | accessors. llvm-svn: 299981
* [ExternalASTMerger] Fix the MSVC buildSean Callanan2017-04-111-3/+3
| | | | llvm-svn: 299977
* [clang-import-test] Lookup inside contextsSean Callanan2017-04-1121-52/+331
| | | | | | | | | | | | | | | | | | | clang-import-test has until now been only able to report top-level Decls. This is clearly insufficient; we should be able to look inside structs and namespaces also. This patch adds new test cases for a variety of lookups inside existing ASTContexts, and adds the functionality necessar to make most of these testcases work. (One testcase is known to fail because of ASTImporter limitations when importing templates; I'll look into that separately.) This patch also separates the core functionality out into ExternalASTMerger, an interface that allows clients like LLDB to make use of it. clang-import-test now only has the machinery necessary to set up the tests. Differential revision: https://reviews.llvm.org/D30435 llvm-svn: 299976
* [OpenCL] Map default address space to alloca address spaceYaxun Liu2017-04-1117-49/+178
| | | | | | | | | | | | | | For OpenCL, the private address space qualifier is 0 in AST. Before this change, 0 address space qualifier is always mapped to target address space 0. As now target private address space is specified by alloca address space in data layout, address space qualifier 0 needs to be mapped to alloca addr space specified by the data layout. This change has no impact on targets whose alloca addr space is 0. With contributions from Matt Arsenault, Tony Tye and Wen-Heng (Jack) Chung Differential Revision: https://reviews.llvm.org/D31404 llvm-svn: 299965
* [ASTPrinter] Print nested name specifiers for out-of-line functionsAlex Lorenz2017-04-115-7/+70
| | | | | | rdar://31501863 llvm-svn: 299962
* Revert temporarily D29877 "Warn about unused static file scope function ↵Vassil Vassilev2017-04-113-32/+7
| | | | | | | | | | | | | template declarations." We need to address cases (breaking libc++) such as template <class _Up> static int __test(...); template<typename _Tp> auto v = __test<_Tp>(0); llvm-svn: 299956
* [clang-format] Recognize Java logical shift assignment operator Nico Weber2017-04-112-0/+25
| | | | | | | | | | | | | | | | | | | | | | At present, clang-format mangles Java containing logical right shift operators ('>>>=' or '>>>'), splitting them in two, resulting in invalid code: public class Minimal { public void func(String args) { int i = 42; - i >>>= 1; + i >> >= 1; return i; } } This adds both forms of logical right shift to the FormatTokenLexer, so clang-format won't attempt to split them and insert bogus whitespace. https://reviews.llvm.org/D31652 Patch from Richard Bradfield <bradfier@fstab.me>! llvm-svn: 299952
* Fix PR13910: Don't warn that __builtin_unreachable() is unreachableAlex Lorenz2017-04-112-2/+46
| | | | | | Differential Revision: https://reviews.llvm.org/D25321 llvm-svn: 299951
* [Parser][ObjC++] Improve diagnostics and recovery when C++ keywords are usedAlex Lorenz2017-04-118-53/+150
| | | | | | | | | | | | | | | | as identifiers in Objective-C++ This commit improves the 'expected identifier' errors that are presented when a C++ keyword is used as an identifier in Objective-C++ by mentioning that this is a C++ keyword in the diagnostic message. It also improves the error recovery: the parser will now treat the C++ keywords as identifiers to prevent unrelated parsing errors. rdar://20626062 Differential Revision: https://reviews.llvm.org/D26503 llvm-svn: 299950
* Warn about unused static file scope function template declarations.Vassil Vassilev2017-04-113-7/+32
| | | | | | Reviewed by Richard Smith (D29877)! llvm-svn: 299930
* [clang-format] Handle NSString literals by merging tokens.Alexander Kornienko2017-04-116-42/+51
| | | | | | | | | | | | | | | | | | | | Summary: This fixes a few outstanding bugs: * incorrect breaking of NSString literals containing double-width characters; * inconsistent formatting of ObjC dictionary literals containing NSString literals; * AlwaysBreakBeforeMultilineStrings ignoring implicitly-concatenated NSString literals. Reviewers: djasper Reviewed By: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D31706 llvm-svn: 299927
* [lsan] Enable LSan on arm Linux, clang partMaxim Ostapenko2017-04-112-1/+28
| | | | | | | | This is a compiler part of https://reviews.llvm.org/D29586. Enable LSan on arm Linux. Differential Revision: https://reviews.llvm.org/D31760 llvm-svn: 299921
* Add more examples to clang-format configurationSylvestre Ledru2017-04-112-9/+128
| | | | | | | | | | | | Reviewers: djasper Reviewed By: djasper Subscribers: Eugene.Zelenko, klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D31408 llvm-svn: 299919
* docs: Use the term "whole-program devirtualization" instead of "virtual ↵Peter Collingbourne2017-04-101-8/+9
| | | | | | | | | function call optimization". The former term is probably more familiar to users. Also add references to the command line flags used to enable the features described in the doc. llvm-svn: 299902
* Reland "[IR] Make AttributeSetNode public, avoid temporary AttributeList copies"Reid Kleckner2017-04-102-12/+13
| | | | | | | | | | | | | | | | | | | | | | | | | This re-lands r299875. I introduced a bug in Clang code responsible for replacing K&R, no prototype declarations with a real function definition with a prototype. The bug was here: // Collect any return attributes from the call. - if (oldAttrs.hasAttributes(llvm::AttributeList::ReturnIndex)) - newAttrs.push_back(llvm::AttributeList::get(newFn->getContext(), - oldAttrs.getRetAttributes())); + newAttrs.push_back(oldAttrs.getRetAttributes()); Previously getRetAttributes() carried AttributeList::ReturnIndex in its AttributeList. Now that we return the AttributeSetNode* directly, it no longer carries that index, and we call this overload with a single node: AttributeList::get(LLVMContext&, ArrayRef<AttributeSetNode*>) That aborted with an assertion on x86_32 targets. I added an explicit triple to the test and added CHECKs to help find issues like this in the future sooner. llvm-svn: 299899
* Update for AllocaInst construction changesMatt Arsenault2017-04-102-3/+6
| | | | llvm-svn: 299889
* Update for lifetime intrinsic signature changeMatt Arsenault2017-04-1018-178/+180
| | | | llvm-svn: 299877
* [OPENMP] Fix for PR32333: Crash in call of outlined Function.Alexey Bataev2017-04-102-6/+34
| | | | | | | | | If the type of the captured variable is a pointer(s) to variably modified type, this type was not processed correctly. Need to drill into the type, find the innermost variably modified array type and convert it to canonical parameter type. llvm-svn: 299868
* [cmake] Support Gentoo install for z3Michal Gorny2017-04-081-1/+1
| | | | | | | | | | Add the 'z3' subdirectory to the list of possible path suffixes for libz3 header search. The z3 headers are installed in /usr/include/z3 on Gentoo. Differential Revision: https://reviews.llvm.org/D31756 llvm-svn: 299813
* [cfi] Emit __cfi_check stub in the frontend.Evgeniy Stepanov2017-04-074-1/+29
| | | | | | | | | Previously __cfi_check was created in LTO optimization pipeline, which means LLD has no way of knowing about the existence of this symbol without rescanning the LTO output object. As a result, LLD fails to export __cfi_check, even when given --export-dynamic-symbol flag. llvm-svn: 299806
* Toolchains: remove crtbegin on xwindowsSaleem Abdulrasool2017-04-072-14/+5
| | | | | | | | | | crtbegin is not really a proper windows support thing. This was duplicated when the toolchain was initially built. If the injection of crtbegin is needed, it can be done via the `/include` directive. Furthermore, since `-fPIC` doesnt make sense on PE/COFF, crtbegin and crtbeginS dont really need to be different. llvm-svn: 299800
* Attempt to fix ms-intrinsics.c testHans Wennborg2017-04-071-6/+6
| | | | llvm-svn: 299785
* Implement _interlockedbittestandset as a builtinHans Wennborg2017-04-074-9/+33
| | | | | | | | | It's used by MS headers in VS 2017 without including intrin.h, so we can't implement it in the header anymore. Differential Revision: https://reviews.llvm.org/D31736 llvm-svn: 299782
* Sema: prevent __declspec(naked) use on x64Saleem Abdulrasool2017-04-074-2/+25
| | | | | | | | | MSDN (https://msdn.microsoft.com/en-us/library/h5w10wxs.aspx) indicates that `__declspec(naked)` is only permitted on x86 and ARM targets. Testing with cl does confirm this behaviour. Provide a warning for use of `__declspec(naked)` on x64. llvm-svn: 299774
* CloneDetection.h: Fix warnings. [-Wdocumentation]NAKAMURA Takumi2017-04-071-3/+4
| | | | llvm-svn: 299760
* [scan-build-py] merge runner module to analyzerLaszlo Nagy2017-04-076-625/+600
| | | | | | Differential Revision: https://reviews.llvm.org/D31237 llvm-svn: 299759
* Skip Unicode character expansion in assembly filesSanne Wouda2017-04-072-9/+19
| | | | | | | | | | | | | | | | | | | Summary: When using the C preprocessor with assembly files, either with a capital `S` file extension, or with `-xassembler-with-cpp`, the Unicode escape sequence `\u` is ignored. The `\u` pattern can be used for expanding a macro argument that starts with `u`. Author: Salman Arif <salman.arif@arm.com> Reviewers: rengolin, olista01 Reviewed By: olista01 Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D31765 llvm-svn: 299754
* [AMDGPU] Temporarily change constant address space from 4 to 2 for the new ↵Yaxun Liu2017-04-063-5/+7
| | | | | | | | | | address space mapping Change constant address space from 4 to 2 for the new address space mapping in Clang. Differential Revision: https://reviews.llvm.org/D31771 llvm-svn: 299691
* [Basic] getColumnNumber returns location of CR+LF on WindowsChih-Hung Hsieh2017-04-061-2/+11
| | | | | | | | | | | | When fixing a Clang-Tidy bug in D31406, reuse of FileID enabled the missing highlightRange function. Assertion in highlightRange failed because the end-of-range column number was 2 + the last column of a line on Windows. This fix is required to enable D31406. Differential Revision: https://reviews.llvm.org/D31713 llvm-svn: 299681
* [AMDGPU] Translate reqd_work_group_size into amdgpu_flat_work_group_sizeStanislav Mekhanoshin2017-04-062-3/+20
| | | | | | | | | | | | | These two attributes specify the same info in a different way. AMGPU BE only checks the latter as a target specific attribute as opposed to language specific reqd_work_group_size. This change produces amdgpu_flat_work_group_size out of reqd_work_group_size if specified. Differential Revision: https://reviews.llvm.org/D31728 llvm-svn: 299678
* Fix unused lambda capture. Follow up to r299653.Ivan Krasin2017-04-061-1/+1
| | | | llvm-svn: 299671
* [analyzer] Reland r299544 "Add a modular constraint system to the CloneDetector"Artem Dergachev2017-04-065-662/+789
| | | | | | | | | | | | | | | | | | | | | | | | | | | Hopefully fix crashes by unshadowing the variable. Original commit message: A big part of the clone detection code is functionality for filtering clones and clone groups based on different criteria. So far this filtering process was hardcoded into the CloneDetector class, which made it hard to understand and, ultimately, to extend. This patch splits the CloneDetector's logic into a sequence of reusable constraints that are used for filtering clone groups. These constraints can be turned on and off and reodreder at will, and new constraints are easy to implement if necessary. Unit tests are added for the new constraint interface. This is a refactoring patch - no functional change intended. Patch by Raphael Isemann! Differential Revision: https://reviews.llvm.org/D23418 llvm-svn: 299653
* Avoid the -Wdocumentation-unknown-command warning in Clang's C API docsAlex Lorenz2017-04-061-3/+3
| | | | | | rdar://20441985 llvm-svn: 299650
* [ObjC++] Conversions from specialized to non-specialized Objective-C genericAlex Lorenz2017-04-062-3/+44
| | | | | | | | | | | | | | | | | | | object types should be preferred over conversions to other object pointers This change ensures that Clang will select the correct overload for the following code sample: void overload(Base *b); void overload(Derived *d); void test(Base<Base *> b) { overload(b); // Select overload(Base *), not overload(Derived *) } rdar://20124827 Differential Revision: https://reviews.llvm.org/D31597 llvm-svn: 299648
* Fix lambda to block conversion in C++17 by avoiding copy elision for theAlex Lorenz2017-04-065-7/+50
| | | | | | | | | | | | | | | | lambda capture used by the created block The commit r288866 introduced guaranteed copy elision to C++ 17. This unfortunately broke the lambda to block conversion in C++17 (the compiler crashes when performing IRGen). This commit fixes the conversion by avoiding copy elision for the capture that captures the lambda that's used in the block created by the lambda to block conversion process. rdar://31385153 Differential Revision: https://reviews.llvm.org/D31669 llvm-svn: 299646
* [Sema] Retarget test to a specific platform for consistent datasizesSimon Dardis2017-04-061-1/+1
| | | | | | | | Attempt to satisfy llvm-clang-x86_64-expensive-checks-win by targeting x86_64-apple-darwin10 for Sema/vector-ops.c. The underlying failure is due to datatype differences between platforms. llvm-svn: 299643
* [Sema] Extend GetSignedVectorType to deal with non ExtVector typesSimon Dardis2017-04-062-18/+145
| | | | | | | | | | | | | This improves some error messages which would otherwise refer to ext_vector_type types in contexts where there are no such types. Factored out from D25866 at reviewer's request. Reviewers: bruno Differential Revision: https://reviews.llvm.org/D31667 llvm-svn: 299641
* PR16106: Correct the docs to reflect the actual behavior of the interface.Vassil Vassilev2017-04-061-2/+2
| | | | llvm-svn: 299639
* [Sema] Update CheckOverload docsGeorge Burgess IV2017-04-061-34/+33
| | | | | | | | | | | - Replace documented return values (true/false) with what's actually returned - Doxygenify the comment - Reflow said comment to 80 cols Not overly familiar with Doxygen, so nits are welcome. :) llvm-svn: 299603
* Simplify. NFC.George Burgess IV2017-04-061-8/+4
| | | | | | | | | | | | Two simplifications: - We check `!Previous.empty()` above and only use `Previous` in const contexts after that check, so the `!Previous.empty()` check seems redundant. - The null check looks pointless, as well: AFAICT, `LookupResults` should never contain null entries, and `OldDecl` should always be non-null if `Redeclaration` is true. llvm-svn: 299601
OpenPOWER on IntegriCloud