summaryrefslogtreecommitdiffstats
path: root/clang/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* [analyzer] [NFC] Move canEval function from RetainCountChecker to ↵George Karpenkov2018-08-173-72/+85
| | | | | | | | RetainCountSummaries Differential Revision: https://reviews.llvm.org/D50863 llvm-svn: 340094
* [analyzer] [NFC] Split up summary generation in RetainCountChecker in two ↵George Karpenkov2018-08-172-204/+195
| | | | | | | | methods Differential Revision: https://reviews.llvm.org/D50830 llvm-svn: 340093
* [analyzer] [NFC] Split up RetainCountCheckerGeorge Karpenkov2018-08-178-3894/+4036
| | | | | | | | At some point, staring at 4k+ LOC file becomes a bit hard. Differential Revision: https://reviews.llvm.org/D50821 llvm-svn: 340092
* [analyzer] Drop support for GC mode in RetainCountCheckerGeorge Karpenkov2018-08-171-324/+61
| | | | | | | | | | | | A lot of code in RetainCountChecker deals with GC mode. Given that GC mode is deprecated, Apple does not ship runtime for it, and modern compiler toolchain does not support it, it makes sense to remove the code dealing with it in order to aid understanding of RetainCountChecker. Differential Revision: https://reviews.llvm.org/D50747 llvm-svn: 340091
* Update comments in CGDebugInfo to reflect changes in the MS mangler, NFCReid Kleckner2018-08-171-12/+26
| | | | | | | I've tried to elaborate on the purpose of these type identifiers and why and when clang uses them. llvm-svn: 340080
* [MS] Mangle a hash of the main file path into anonymous namespacesReid Kleckner2018-08-171-3/+38
| | | | | | | | | | | | | | | | | | | | | | | Summary: This is needed to avoid conflicts in mangled names for codeview types in anonymous namespaces. In CodeView, types refer to each other typically through forward declarations, which contain mangled names. These names have to be unique, otherwise the debugger will look up the mangled name and find the wrong definition. Furthermore, ThinLTO will deduplicate the types, and debug info verification can fail when the types have the wrong sizes. This is PR38608. Fixes PR38609. Reviewers: majnemer, inglorion, hans Subscribers: mehdi_amini, aprantl, JDevlieghere, dexonsmith, cfe-commits Differential Revision: https://reviews.llvm.org/D50877 llvm-svn: 340079
* Improve diagnostic for missing comma in template parameter list.Richard Smith2018-08-171-15/+23
| | | | | | | | | | Given 'typename T typename U', we would correctly diagnose the missing comma, but incorrectly disambiguate the first parameter as being a non-type parameter and complain that the 'T' is not a qualified-id. See also gcc.gnu.org/PR86998. llvm-svn: 340074
* [HIP] Make __hip_gpubin_handle hidden to avoid being merged across different ↵Yaxun Liu2018-08-171-0/+2
| | | | | | | | | | | | | | | | shared libraries Different shared libraries contain different fat binary, which is stored in a global variable __hip_gpubin_handle. Since different compilation units share the same fat binary, this variable has linkonce linkage. However, it should not be merged across different shared libraries. This patch set the visibility of the global variable to be hidden, which will make it invisible in the shared library, therefore preventing it from being merged. Differential Revision: https://reviews.llvm.org/D50596 llvm-svn: 340056
* Make __shiftleft128 / __shiftright128 real compiler built-ins.Nico Weber2018-08-172-14/+21
| | | | | | | | | | | | r337619 added __shiftleft128 / __shiftright128 as functions in intrin.h. Microsoft's STL plans on using these functions, and they're using intrin0.h which just has declarations of built-ins to not pull in the huge intrin.h header in the standard library headers. That requires that these functions are real built-ins. https://reviews.llvm.org/D50907 llvm-svn: 340048
* [CodeGen] Merge identical block descriptor global variables.Akira Hatanaka2018-08-174-132/+337
| | | | | | | | | | | | | | | | | | Currently, clang generates a new block descriptor global variable for each new block literal. This commit merges block descriptors that are identical inside and across translation units using the same approach taken in r339438. To enable merging identical block descriptors, the size and signature of the block and information about the captures are encoded into the name of the block descriptor variable. Also, the block descriptor variable is marked as linkonce_odr and unnamed_addr. rdar://problem/42640703 Differential Revision: https://reviews.llvm.org/D50783 llvm-svn: 340041
* [Preamble] Empty preamble is not an error.Haojian Wu2018-08-172-9/+0
| | | | | | | | | | | | | | | | | | | | Summary: Empty preamble is valid for source file which doesn't have any preprocessor and #includes. This patch makes clang treat an empty preamble as a normal preamble. Check: ninja check-clang A testcase is added in https://reviews.llvm.org/D50627. Reviewers: ilya-biryukov Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D50628 llvm-svn: 340029
* Fix for bug 38508 - Don't do PCH processing when only generating ↵Erich Keane2018-08-171-3/+4
| | | | | | | | | | | | preprocessor output This clang-cl driver change removes the PCH options when we are only generating preprocessed output. This is similar to the behavior of Y-. Patch by: mikerice Differential Revision: https://reviews.llvm.org/D50640 llvm-svn: 340025
* [AArch64] - return address signingLuke Cheeseman2018-08-173-0/+36
| | | | | | | | | | | | | | - Add a command line options -msign-return-address to enable return address signing - Armv8.3a added instructions to sign the return address to help mitigate against ROP attacks - This patch adds command line options to generate function attributes that signal to the back whether return address signing instructions should be added Differential revision: https://reviews.llvm.org/D49793 llvm-svn: 340019
* [hexagon] restore -fuse-cxa-atexit by defaultBrian Cain2018-08-171-1/+0
| | | | | | | | | | | | | "-fno-use-cxa-atexit" was a default provided by the initial commit offering hexagon support. This is no longer required. Reviewers: bcahoon, sidneym Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D50816 llvm-svn: 339979
* Disable pubnames in NVPTX debug info using metadataDavid Blaikie2018-08-161-2/+5
| | | | llvm-svn: 339968
* [InstrProf] Use atomic profile counter updates for TSanVedant Kumar2018-08-161-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | Thread sanitizer instrumentation fails to skip all loads and stores to profile counters. This can happen if profile counter updates are merged: %.sink = phi i64* ... %pgocount5 = load i64, i64* %.sink %27 = add i64 %pgocount5, 1 %28 = bitcast i64* %.sink to i8* call void @__tsan_write8(i8* %28) store i64 %27, i64* %.sink To suppress TSan diagnostics about racy counter updates, make the counter updates atomic when TSan is enabled. If there's general interest in this mode it can be surfaced as a clang/swift driver option. Testing: check-{llvm,clang,profile} rdar://40477803 Differential Revision: https://reviews.llvm.org/D50867 llvm-svn: 339955
* Update for LLVM API changeDavid Blaikie2018-08-161-1/+2
| | | | llvm-svn: 339941
* AMDGPU: Correct errors in device tableMatt Arsenault2018-08-161-2/+2
| | | | llvm-svn: 339934
* [AST] Store the OwnedTagDecl as a trailing object in ElaboratedType.Bruno Ricci2018-08-161-2/+4
| | | | | | | | | | | | | | The TagDecl *OwnedTagDecl in ElaboratedType is quite commonly null (at least when parsing all of Boost, it is non-null for only about 600 of the 66k ElaboratedType). Therefore we can save a pointer in the common case by storing it as a trailing object, and storing a bit in the bit-fields of Type indicating when the pointer is null. Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D50715 llvm-svn: 339862
* [AST] Pack the unsigned of SubstTemplateTypeParmPackType into TypeBruno Ricci2018-08-161-3/+4
| | | | | | | | | | | The bit-fields of Type have enough space for the member unsigned NumArgs of SubstTemplateTypeParmPackType. Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D50713 llvm-svn: 339861
* [AST] Pack the unsigned of DependentTemplateSpecializationType into TypeBruno Ricci2018-08-161-1/+2
| | | | | | | | | | | The bit-fields of `Type` have enough space for the member `unsigned NumArgs` of `DependentTemplateSpecializationType`. Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D50712 llvm-svn: 339860
* [X86] Remove masking from the 512-bit paddus/psubus builtins. Use a select ↵Craig Topper2018-08-162-66/+36
| | | | | | builtin instead. llvm-svn: 339845
* [X86] Remove masking from the 512-bit padds and psubs builtins. Use select ↵Craig Topper2018-08-161-56/+32
| | | | | | builtin instead. llvm-svn: 339843
* [Driver] -print-target-triple and -print-effective-triple optionsPetr Hosek2018-08-161-0/+12
| | | | | | | | These can be used to print Clang target and effective triple. Differential Revision: https://reviews.llvm.org/D50755 llvm-svn: 339834
* [Darwin Driver] Fix Simulator builtins and test casesChris Bieneman2018-08-152-9/+16
| | | | | | | | In r339807, I broke linking the builtins libraries for simulator targets, which itself was bad, but turns out it was all completely untested and marked with FIXME in the test suite. This fixes all the test cases so they actually work, and fixes the bug I introduced in r339807. llvm-svn: 339829
* Add a newline to SourceLocation dump outputStephen Kelly2018-08-156-7/+8
| | | | | | | | | | | | | | Summary: Migrate callers to print(). dump() should be useful to downstreams and third parties as a debugging aid. Everyone trips up on this and creates confusing output. Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D50661 llvm-svn: 339810
* [CStringSyntaxChecker] Reduces space around error message for strlcat.David Carlier2018-08-151-1/+1
| | | | llvm-svn: 339808
* Refactor Darwin driver to refer to runtimes by componentChris Bieneman2018-08-152-64/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: In r335809, Petr Hosek lays out support for what he calls the multiarch runtimes layout. This new way of laying out the directories for runtime libraries is workable for all platforms. Petr did some of the common infrastructure and made it work for Linux and Fuscia. This patch is a cleanup to the Darwin and MachO drivers to serve as a step toward supporting it in Darwin. This patch does primarily two things: (1) Changes the APIs for how the Darwin driver refers to compiler-rt libraries to use the component names, similar to how Linux and Fuscia do (2) Removes some legacy functionality for supporting macOS versions before 10.6. This functionality is effectively dead code because in r339277, the support was removed from compiler-rt for generating the 10.4 runtime support library, and Xcode 10 (currently in beta) removes libgcc_s.10.4 and libgcc_s.10.5 from the macOS SDK. With this patch landed a subsequent patch can modify MachO::AddLinkRuntimeLib to support the multiarch runtimes layout. Worth noting: None of the removed functionality was actually covered in the test suite. So no test case updates are required. Reviewers: phosek, bruno, arphaman Reviewed By: phosek, arphaman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D50618 llvm-svn: 339807
* [OPENMP] FIx processing of declare target variables.Alexey Bataev2018-08-157-27/+49
| | | | | | | | The compiler may produce unexpected error messages/crashes when declare target variables were used. Patch fixes problems with the declarations marked as declare target to or link. llvm-svn: 339805
* clang-format: Change Google style wrt. the formatting of empty messages.Daniel Jasper2018-08-151-1/+1
| | | | | | | | | | | Before: message Empty { } After: message Empty {} llvm-svn: 339803
* [AST] Pack the bits of TemplateSpecializationType into TypeBruno Ricci2018-08-151-3/+5
| | | | | | | | | | | Type has enough space for two members of TemplateSpecializationType. Mechanical patch. Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D50643 llvm-svn: 339787
* Silence "unused variable" warning.Richard Smith2018-08-151-0/+1
| | | | llvm-svn: 339747
* [analyzer] Add support for constructors of arguments.Artem Dergachev2018-08-156-29/+221
| | | | | | | | | | | | | | | | | | | | | Once CFG-side support for argument construction contexts landed in r338436, the analyzer could make use of them to evaluate argument constructors properly. When evaluated as calls, constructors of arguments now use the variable region of the parameter as their target. The corresponding stack frame does not yet exist when the parameter is constructed, and this stack frame is created eagerly. Construction of functions whose body is unavailable and of virtual functions is not yet supported. Part of the reason is the analyzer doesn't consistently use canonical declarations o identify the function in these cases, and every re-declaration or potential override comes with its own set of parameter declarations. Also it is less important because if the function is not inlined, there's usually no benefit in inlining the argument constructor. Differential Revision: https://reviews.llvm.org/D49443 llvm-svn: 339745
* Fix Stmt::ignoreImplicitStephen Kelly2018-08-141-8/+14
| | | | | | | | | | | | | | | | Summary: A CXXBindTemporaryExpr can appear inside an ImplicitCastExpr, and was not ignored previously. Fixes the case reported in PR37327. Reviewers: rsmith, dblaikie, klimek Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D50666 llvm-svn: 339730
* [CFG] [analyzer] Find argument constructors in CXXTemporaryObjectExprs.Artem Dergachev2018-08-141-0/+5
| | | | | | | | | | | CXXTemporaryObjectExpr is a sub-class of CXXConstructExpr. If it has arguments that are structures passed by value, their respective constructors need to be handled by providing a ConstructionContext, like for regular function calls and for regular constructors. Differential Revision: https://reviews.llvm.org/D50487 llvm-svn: 339727
* [InlineAsm] Update the min-legal-vector-width function attribute based on ↵Craig Topper2018-08-141-0/+14
| | | | | | | | | | | | | | | | | | | | | inputs and outputs to inline assembly Summary: Another piece of my ongoing to work for prefer-vector-width. min-legal-vector-width will eventually be used by the X86 backend to know whether it needs to make 512 bits type legal when prefer-vector-width=256. If the user used inline assembly that passed in/out a 512-bit register, we need to make sure 512 bits are considered legal. Otherwise we'll get an assert failure when we try to wire up the inline assembly to the rest of the code. This patch just checks the LLVM IR types to see if they are vectors and then updates the attribute based on their total width. I'm not sure if this is the best way to do this or if there's any subtlety I might have missed. So if anyone has other opinions on how to do this I'm open to suggestions. Reviewers: chandlerc, rsmith, rnk Reviewed By: rnk Subscribers: eraman, cfe-commits Differential Revision: https://reviews.llvm.org/D50678 llvm-svn: 339721
* SafeStack: Disable Darwin supportVlad Tsyrklevich2018-08-141-10/+0
| | | | | | | | | | | | | | | | Summary: Darwin support does not appear to be used as evidenced by the fact that the runtime has never supported non-trivial programs. Reviewers: pcc, kubamracek Reviewed By: pcc Subscribers: cfe-commits, kcc Differential Revision: https://reviews.llvm.org/D50724 llvm-svn: 339720
* [OPENMP] Fix processing of declare target construct.Alexey Bataev2018-08-145-71/+24
| | | | | | | The attribute marked as inheritable since OpenMP 5.0 supports it + additional fixes to support new functionality. llvm-svn: 339704
* We have in place support for parsing #pragma FENV_ACCESS, but that Kevin P. Neal2018-08-144-1/+59
| | | | | | | | | | | | | information is then discarded with a warning to the user that we don't support it. This patch gets us one step closer by getting the info down into the AST in most cases. Reviewed by: rsmith Differential Revision: https://reviews.llvm.org/D49865 llvm-svn: 339693
* Revert test commitKevin P. Neal2018-08-141-1/+0
| | | | llvm-svn: 339691
* Test commitKevin P. Neal2018-08-141-0/+1
| | | | llvm-svn: 339690
* [gnu-objc] Make selector order deterministic.David Chisnall2018-08-141-3/+7
| | | | | | | | | | | | | | | | | | | Summary: This probably fixes PR35277, though there may be other sources of nondeterminism (this was the only case of iterating over a DenseMap). It's difficult to provide a test case for this, because it shows up only on systems with ASLR enabled. Reviewers: rjmccall Reviewed By: rjmccall Subscribers: bmwiedemann, mgrang, cfe-commits Differential Revision: https://reviews.llvm.org/D50559 llvm-svn: 339668
* Add a stub mangling for ObjC selectors in the Microsoft ABI.David Chisnall2018-08-141-2/+8
| | | | | | | | | | | | | | This mangling is used only for outlined SEH finally blocks, which have internal linkage. This fixes the failure of CodeGenObjC/2007-04-03-ObjcEH.m on builds with expensive checks enabled, on Windows. This test should probably be specifying a triple: it currently picks up whatever the host environment is using. Unfortunately, I have no idea what it is trying to test, because it contains no comments and predates Clang having working Objective-C IR generation. llvm-svn: 339667
* [analyzer] Made a buildbot happy.Kristof Umann2018-08-141-2/+4
| | | | llvm-svn: 339655
* [analyzer][UninitializedObjectChecker] Void pointers are casted back to ↵Kristof Umann2018-08-141-2/+40
| | | | | | | | their dynamic type in note message Differential Revision: https://reviews.llvm.org/D49228 llvm-svn: 339653
* [X86] Lowering addus/subus intrinsics to native IRTomasz Krupa2018-08-141-1/+47
| | | | | | | | | | | | | | Summary: This is the patch that lowers x86 intrinsics to native IR in order to enable optimizations. Reviewers: craig.topper, spatel, RKSimon Reviewed By: craig.topper Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D46892 llvm-svn: 339651
* [CStringSyntaxChecker] Check strlcat sizeof checkDavid Carlier2018-08-141-4/+50
| | | | | | | | | | | | | - Assuming strlcat is used with strlcpy we check as we can if the last argument does not equal os not larger than the buffer. - Advising the proper usual pattern. Reviewers: NoQ, george.karpenkov Reviewed By: george.karpenkov Differential Revision: https://reviews.llvm.org/D49722 llvm-svn: 339641
* Revert r339623 "Model type attributes as regular Attrs."Reid Kleckner2018-08-1416-498/+562
| | | | | | | | This breaks compiling atlwin.h in Chromium. I'm sure the code is invalid in some way, but we put a lot of work into accepting it, and I'm sure rejecting it was not an intended consequence of this refactoring. :) llvm-svn: 339638
* [CodeGen] Before returning a copy/dispose helper function, bitcast it toAkira Hatanaka2018-08-141-2/+2
| | | | | | | | a void pointer type. This fixes a bug introduced in r339438. llvm-svn: 339633
* [analyzer] Fix UninitializedObjectChecker to not crash on uninitialized "id" ↵George Karpenkov2018-08-132-2/+2
| | | | | | | | fields Differential Revision: https://reviews.llvm.org/D50673 llvm-svn: 339631
OpenPOWER on IntegriCloud