summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
...
* [ThinLTO] Ignore object files with no ThinLTO modules if -fthinlto-index= is setVitaly Buka2018-02-164-10/+33
| | | | | | | | | | | | | | | | | Summary: ThinLTO compilation may decide not to split module and keep at as regular LTO. In this can this module already processed during indexing and already a part of merged object file. So here we can just skip it. Reviewers: pcc, tejohnson Reviewed By: tejohnson Subscribers: mehdi_amini, inglorion, eraman, cfe-commits Differential Revision: https://reviews.llvm.org/D42680 llvm-svn: 325410
* [OPENMP] Do not emit messages for templates in declare targetAlexey Bataev2018-02-162-19/+65
| | | | | | | | | constructs. The compiler may emit some extra warnings for functions, that are implicit specialization of the templates, declared in the target region. llvm-svn: 325391
* [MS] Make constexpr static data members implicitly inlineReid Kleckner2018-02-162-5/+37
| | | | | | | | | | | | | | This handles them exactly the same way that we handle const integral static data members with inline definitions, which is what MSVC does. As a follow-up, now that we have a way to mark variables inline in the AST, we should consider marking them implicitly inline there instead of only treating them as inline in CodeGen. Unfortunately, this breaks a lot of dllimport test cases, so that is future work for now. Fixes PR36125. llvm-svn: 325375
* [OPENMP] Fix PR35873: Fix data-sharing attributes for const variables.Alexey Bataev2018-02-162-4/+4
| | | | | | | Compiler erroneously returned wrong data-sharing attributes for the constant variables if they have explictly specified attributes. llvm-svn: 325373
* [OPENMP] Fix parsing of the directives with inner directives.Alexey Bataev2018-02-164-6/+20
| | | | | | | The parsing may lead to compiler hanging because of the incorrect processing of inner OpenMP pragmas. llvm-svn: 325369
* Clean up 'target' attribute diagnosticsErich Keane2018-02-165-15/+28
| | | | | | | | | | | | | | There were a few issues previously with the target attribute diagnostics implementation that lead to the attribute being added to the AST despite having an error in it. This patch changes that, and adds a test to ensure it does not get added to the AST. Differential Revision: https://reviews.llvm.org/D43359 llvm-svn: 325364
* Use Token::isOneOf method in Parser.Frederich Munch2018-02-161-3/+3
| | | | | | | | | | | | | | Summary: Easier to read and possibly optimize. Reviewers: rsmith, sepavloff Reviewed By: sepavloff Subscribers: sepavloff, cfe-commits Differential Revision: https://reviews.llvm.org/D36701 llvm-svn: 325352
* [ARM] Add tests for the vcvtr builtinsSjoerd Meijer2018-02-162-22/+53
| | | | | | | | | This adds Sema and Codegen tests for the vcvtr builtins (because they were missing). Differential Revision: https://reviews.llvm.org/D43372 llvm-svn: 325351
* [Coroutines] Use target-agnostic size_t in testBrian Gesiak2018-02-161-6/+6
| | | | | | | | | | | | | | | | Summary: Fix a test failure on ARM hosts that was caused by a difference in the type of size_t, by using a target-agnostic definiton. Test Plan: ``` clang -cc1 -internal-isystem build/lib/clang/7.0.0/include -nostdsysteminc \ -std=c++14 -fcoroutines-ts -verify clang/test/SemaCXX/coroutines.cpp \ -fcxx-exceptions -fexceptions \ -triple armeb-none-eabi ``` llvm-svn: 325342
* [clang-format] Enable google text proto formatting in R"proto('sKrasimir Georgiev2018-02-161-0/+2
| | | | llvm-svn: 325336
* Revert r325321 "[Sema] Take into account the current context when checking the"Hans Wennborg2018-02-162-40/+0
| | | | | | | | | | | | | | This broke the Chromium build, see https://crbug.com/813017 > accessibility of a class member. > > This fixes PR32898. > > rdar://problem/33737747 > > Differential revision: https://reviews.llvm.org/D36918 llvm-svn: 325335
* [Sema] Take into account the current context when checking theAkira Hatanaka2018-02-162-0/+40
| | | | | | | | | | | | accessibility of a class member. This fixes PR32898. rdar://problem/33737747 Differential revision: https://reviews.llvm.org/D36918 llvm-svn: 325321
* [Coverage] Handle break/continue outside of loop bodiesVedant Kumar2018-02-162-8/+27
| | | | | | | | | Teach the coverage mapping logic to handle break or continue statements within for loop increments. Fixes llvm.org/PR36406. llvm-svn: 325319
* [DOXYGEN] There was a request in the review D41507 to change the notation ↵Ekaterina Romanova2018-02-162-65/+67
| | | | | | | | for hex numbers in doxygen documentation from <...>h to 0x<...>. Both of these notations were used in x86 intrinsics documentation. I promised to change them to 0x<...> for consistency. Differential Revision: https://reviews.llvm.org/D41888 llvm-svn: 325312
* [Modules] Extend -fmodule-name semantic for frameworks with private modulesBruno Cardoso Lopes2018-02-162-4/+34
| | | | | | | | | | | | | Assume Foo.framework with two module maps and two modules Foo and Foo_Private. Framework authors need to skip building both Foo and Foo_Private when using -fmodule-name=Foo, since both are part of the framework and used interchangeably during compilation. rdar://problem/37500098 llvm-svn: 325305
* [OPENMP] Fix PR36399: Crash on C code with ordered doacross construct.Alexey Bataev2018-02-152-0/+63
| | | | | | | | | Codegen for ordered with doacross construct might produce incorrect code because of missing cleanup scope for the construct. Without this scope the final runtime function call could be emitted in the wrong order that leads to incorrect codegen. llvm-svn: 325304
* [OPENMP] Fix PR38398: compiler crash on standalone pragma ordered with ↵Alexey Bataev2018-02-152-119/+118
| | | | | | | | | depend sink|source clause. Patch fixes compiler crash on standalone #pragmas ordered with depend(sink|source) clauses. llvm-svn: 325302
* Silence a -Wparentheses warning; NFC.Aaron Ballman2018-02-151-1/+1
| | | | llvm-svn: 325293
* Silence some -Wunused-variable warnings; NFC.Aaron Ballman2018-02-151-2/+2
| | | | llvm-svn: 325292
* [Coroutines] Use allocator overload when availableBrian Gesiak2018-02-155-43/+220
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Depends on https://reviews.llvm.org/D42605. An implementation of the behavior described in `[dcl.fct.def.coroutine]/7`: when a promise type overloads `operator new` using a "placement new" that takes the same argument types as the coroutine function, that overload is used when allocating the coroutine frame. Simply passing references to the coroutine function parameters directly to `operator new` results in invariant violations in LLVM's coroutine splitting pass, so this implementation modifies Clang codegen to produce allocator-specific alloc/store/loads for each parameter being forwarded to the allocator. Test Plan: `check-clang` Reviewers: rsmith, GorNishanov, eric_niebler Reviewed By: GorNishanov Subscribers: lewissbaker, EricWF, cfe-commits Differential Revision: https://reviews.llvm.org/D42606 llvm-svn: 325291
* [Sema] Toggle diags when finding allocators (NFCI)Brian Gesiak2018-02-152-43/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Many methods in Sema take a `bool Diagnose` parameter. Examples of such methods include `Sema::FindDeallocationFunction` and `Sema::SpecialMemberIsTrivial`. Calling these methods with `Diagnose = false` allows callers to, for instance, check for the existence of a deallocation function, without that check resulting in error diagnostics being emitted if no matching deallocation function exists. Add a similar `bool Diagnose` to the `Sema::FindAllocationFunctions` method, so that checks for the existence of allocation functions can be made without triggering error diagnostics. This allows `SemaCoroutine.cpp`, in its implementation of the Coroutines TS, to check for the existence of a particular `operator new` overload, but then without error fall back to a default `operator new` if no matching overload exists. Test Plan: `check-clang` Reviewers: rsmith, GorNishanov, eric_niebler Reviewed By: GorNishanov Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D42605 llvm-svn: 325288
* [analyzer] Suppress temporary destructors for temporary arrays.Artem Dergachev2018-02-152-3/+32
| | | | | | | | | | | | | | | Array destructors, like constructors, need to be called for each element of the array separately. We do not have any mechanisms to do this in the analyzer, so for now all we do is evaluate a single constructor or destructor conservatively and give up. It automatically causes the necessary invalidation and pointer escape for the whole array, because this is how RegionStore works. Implement this conservative behavior for temporary destructors. This fixes the crash on the provided test. Differential Revision: https://reviews.llvm.org/D43149 llvm-svn: 325286
* [analyzer] Implement path notes for temporary destructors.Artem Dergachev2018-02-152-2/+72
| | | | | | | | | | | | | | Temporary destructors fire at the end of the full-expression. It is reasonable to attach the path note for entering/leaving the temporary destructor to its CXXBindTemporaryExpr. This would not affect lifetime-extended temporaries with their automatic destructors which aren't temporary destructors. The path note may be confusing in the case of destructors after elidable copy constructors. Differential Revision: https://reviews.llvm.org/D43144 llvm-svn: 325284
* [analyzer] Compute the correct this-region for temporary destructors.Artem Dergachev2018-02-1510-93/+313
| | | | | | | | | | | | | | | | | | | Inline them if possible - a separate flag is added to control this. The whole thing is under the cfg-temporary-dtors flag, off by default so far. Temporary destructors are called at the end of full-expression. If the temporary is lifetime-extended, automatic destructors kick in instead, which are not addressed in this patch, and normally already work well modulo the overally broken support for lifetime extension. The patch operates by attaching the this-region to the CXXBindTemporaryExpr in the program state, and then recalling it during destruction that was triggered by that CXXBindTemporaryExpr. It has become possible because CXXBindTemporaryExpr is part of the construction context since r325210. Differential revision: https://reviews.llvm.org/D43104 llvm-svn: 325282
* Clean up AMDGCN testsYaxun Liu2018-02-1510-130/+130
| | | | | | Differential Revision: https://reviews.llvm.org/D43340 llvm-svn: 325279
* [analyzer] NFC: Eliminate ParentMap lookup in mayInlineCallKind().Artem Dergachev2018-02-153-9/+9
| | | | | | | | Don't look at the parent statement to figure out if the cxx-allocator-inlining flag should kick in and prevent us from inlining the constructor within a new-expression. We now have construction contexts for that purpose. llvm-svn: 325278
* [Test] Remove mangled name from test.Matt Davis2018-02-151-1/+0
| | | | | | | This line is not needed in the test, and breaks Windows testing. Fixes the test added in r325175. llvm-svn: 325271
* [OpenCL] Fix __enqueue_block for block with capturesYaxun Liu2018-02-156-39/+89
| | | | | | | | | | | | | | | | | | | | | | | | | The following test case causes issue with codegen of __enqueue_block void (^block)(void) = ^{ callee(id, out); }; enqueue_kernel(queue, 0, ndrange, block); Clang first does codegen for block expression in the first line and deletes its block info. Clang then tries to do codegen for the same block expression again for the second line, and fails because the block info is gone. The fix is to do normal codegen for both lines. Introduce an API to OpenCL runtime to record llvm block invoke function and llvm block literal emitted for each AST block expression, and use the recorded information for generating the wrapper kernel. The EmitBlockLiteral APIs are cleaned up to minimize changes to the normal codegen of blocks. Another minor issue is that some clean up AST expression is generated for block with captures, which can be stripped by IgnoreImplicit. Differential Revision: https://reviews.llvm.org/D43240 llvm-svn: 325264
* Amend r325256. This change was not properly merged locally before the commit ↵Aaron Ballman2018-02-151-1/+1
| | | | | | happened. llvm-svn: 325261
* NFC; clean up this file based on our coding standards. The impetus was ↵Aaron Ballman2018-02-151-1500/+1467
| | | | | | | | | | considerable use of a type name as an identifier for an object. Changed identifier names (especially function parameters) to not clash with type names and to follow the proper naming conventions. Use of explicit type names changed to use auto where appropriate. Removed unused parameters that should have never been added in the first place. Minor formatting cleanups. The changes were mostly mechanical and should have no functional impact. llvm-svn: 325256
* [clang-format] Support repeated field lists in protosKrasimir Georgiev2018-02-153-11/+100
| | | | | | | | | | | | | | | | | | Summary: This patch adds support for list initialization of proto repeated fields: ``` keys: [1, 2, 3] ``` Reviewers: djasper Reviewed By: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D43298 llvm-svn: 325252
* Adding msan support for FreeBSDKamil Rytarowski2018-02-151-0/+2
| | | | | | | | | | | | | | | | Summary: Enabling memory sanitiser for X86_64 arch only. To match the sanitiser counterpart. Patch by: David CARLIER Reviewers: krytarowski Reviewed By: krytarowski Subscribers: dim, emaste, cfe-commits Differential Revision: https://reviews.llvm.org/D43148 llvm-svn: 325241
* Add Xray instrumentation compile-time/link-time support to FreeBSDKamil Rytarowski2018-02-151-0/+27
| | | | | | | | | | | | | | | | Summary: Similarly to the GNU driver version, adding proper compile and linker flags. Patch by: David CARLIER Reviewers: vitalybuka, krytarowski, dberris Reviewed By: krytarowski, dberris Subscribers: emaste, dberris, cfe-commits Differential Revision: https://reviews.llvm.org/D43279 llvm-svn: 325238
* Add -no-canonical-prefixes to allow different build modes.Martin Bohme2018-02-151-5/+5
| | | | llvm-svn: 325236
* [clang-format] Improve ObjC headers detectionJacek Olesiak2018-02-152-10/+24
| | | | | | | | | | | | | | Summary: Detect ObjC characteristic types when they start a line and add additional keywords. Reviewers: benhamilton Reviewed By: benhamilton Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D43124 llvm-svn: 325221
* [analyzer] Inline constructors for destroyable temporaries.Artem Dergachev2018-02-152-16/+108
| | | | | | | | | | | | | | | | | | | | | Since r325210, in cfg-temporary-dtors mode, we can rely on the CFG to tell us that we're indeed constructing a temporary, so we can trivially construct a temporary region and inline the constructor. Much like r325202, this is only done under the off-by-default cfg-temporary-dtors flag because the temporary destructor, even if available, will not be inlined and won't have the correct object value (target region). Unless this is fixed, it is quite unsafe to inline the constructor. If the temporary is lifetime-extended, the destructor would be an automatic destructor, which would be evaluated with a "correct" target region - modulo the series of incorrect relocations performed during the lifetime extension. It means that at least, values within the object are guaranteed to be properly escaped or invalidated. Differential Revision: https://reviews.llvm.org/D43062 llvm-svn: 325211
* [CFG] Provide construction contexts for temproary objects.Artem Dergachev2018-02-154-66/+267
| | | | | | | | | | | | | | | Constructors of C++ temporary objects that have destructors now can be queried to discover that they're indeed constructing temporary objects. The respective CXXBindTemporaryExpr, which is also repsonsible for destroying the temporary at the end of full-expression, is now available at the construction site in the CFG. This is all the context we need to provide for temporary objects that are not lifetime extended. For lifetime-extended temporaries, more context is necessary. Differential Revision: https://reviews.llvm.org/D43056 llvm-svn: 325210
* [analyzer] Decide on inlining destructors via EvalCallOptions.Artem Dergachev2018-02-155-65/+88
| | | | | | | | | | | | | | | | | | | | EvalCallOptions were introduced in r324018 for allowing various parts of ExprEngine to notify the inlining mechanism, while preparing for evaluating a function call, of possible difficulties with evaluating the call that they foresee. Then mayInlineCall() would still be a single place for making the decision. Use that mechanism for destructors as well - pass the necessary flags from the CFG-element-specific destructor handlers. Part of this patch accidentally leaked into r324018, which led into a change in tests; this change is reverted now, because even though the change looked correct, the underlying behavior wasn't. Both of these commits were not intended to introduce any function changes otherwise. Differential Revision: https://reviews.llvm.org/D42991 llvm-svn: 325209
* Reapply r325193Konstantin Zhuravlyov2018-02-153-91/+208
| | | | llvm-svn: 325203
* [analyzer] Allow inlining constructors into return values.Artem Dergachev2018-02-154-6/+186
| | | | | | | | | | | | | | | | | This only affects the cfg-temporary-dtors mode - in this mode we begin inlining constructors that are constructing function return values. These constructors have a correct construction context since r324952. Because temporary destructors are not only never inlined, but also don't have the correct target region yet, this change is not entirely safe. But this will be fixed in the subsequent commits, while this stays off behind the cfg-temporary-dtors flag. Lifetime extension for return values is still not modeled correctly. Differential Revision: https://reviews.llvm.org/D42875 llvm-svn: 325202
* [analyzer] NFC: Remove dead checks when computing DeclStmt construction region.Artem Dergachev2018-02-151-9/+6
| | | | | | | | | In CFG, every DeclStmt has exactly one decl, which is always a variable. It is also pointless to check that the initializer is the constructor because that's how construction contexts work now. llvm-svn: 325201
* Revert r325193 as it breaks buildbotsKonstantin Zhuravlyov2018-02-153-208/+91
| | | | llvm-svn: 325200
* AMDGPU: Enable PIC by default for amdgcnKonstantin Zhuravlyov2018-02-152-0/+11
| | | | | | Differential Revision: https://reviews.llvm.org/D43094 llvm-svn: 325196
* Add missing definition for class static after r325193.Richard Smith2018-02-151-1/+1
| | | | llvm-svn: 325195
* AMDGPU: Cleanup most of the macrosKonstantin Zhuravlyov2018-02-153-91/+208
| | | | | | | | | | | - Insert __AMD__ macro - Insert __AMDGPU__ macro - Insert __devicename__ macro - Add missing tests for arch macros Differential Revision: https://reviews.llvm.org/D36802 llvm-svn: 325193
* Improve documentation for attribute artificialErich Keane2018-02-141-4/+4
| | | | | | | | | | | | This patch is related to https://reviews.llvm.org/rC325081 The patch improves documentation for the attribute and removes reference to GCC documentation. Patch By: Elizabeth Andrews (eandrews) Differential Revision: https://reviews.llvm.org/D43321 llvm-svn: 325186
* Moved CHECK in test closer to source codeVitaly Buka2018-02-141-2/+3
| | | | llvm-svn: 325184
* [ThinLTO/CFI] Include TYPE_ID summaries into GLOBALVAL_SUMMARY_BLOCKVitaly Buka2018-02-144-0/+190
| | | | | | | | | | | | | | Summary: TypeID summaries are used by CFI and need to be serialized by ThinLTO indexing for later use by LTO Backend. Reviewers: tejohnson, pcc Subscribers: mehdi_amini, inglorion, eraman, hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D42611 llvm-svn: 325182
* [Debug] Annotate compiler generated range-for loop variables.Matt Davis2018-02-145-10/+53
| | | | | | | | | | | | | | | | | | Summary: This change aims to simplify debugging by annotating the range-for loop artificial variables (range, begin, end) with the scope depth. Reviewers: rsmith, dblaikie Reviewed By: dblaikie Subscribers: dblaikie, cfe-commits Tags: #debug-info Differential Revision: https://reviews.llvm.org/D42813 llvm-svn: 325175
* Clean up -fdiscard-value-name handlingEric Fiselier2018-02-141-5/+2
| | | | llvm-svn: 325171
OpenPOWER on IntegriCloud