summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [OpenMP] Initial implementation of parse and sema for composite pragma ↵Carlo Bertolli2016-06-2438-28/+4347
| | | | | | | | | | | | | | | 'distribute parallel for' http://reviews.llvm.org/D21564 This patch is an initial implementation for #distribute parallel for. The main differences that affect other pragmas are: The implementation of 'distribute parallel for' requires blocking of the associated loop, where blocks are "distributed" to different teams and iterations within each block are scheduled to parallel threads within each team. To implement blocking, sema creates two additional worksharing directive fields that are used to pass the team assigned block lower and upper bounds through the outlined function resulting from 'parallel'. In this way, scheduling for 'for' to threads can use those bounds. As a consequence of blocking, the stride of 'distribute' is not 1 but it is equal to the blocking size. This is returned by the runtime and sema prepares a DistIncrExpr variable to hold that value. As a consequence of blocking, the global upper bound (EnsureUpperBound) expression of the 'for' is not the original loop upper bound (e.g. in for(i = 0 ; i < N; i++) this is 'N') but it is the team-assigned block upper bound. Sema creates a new expression holding the calculation of the actual upper bound for 'for' as UB = min(UB, PrevUB), where UB is the loop upper bound, and PrevUB is the team-assigned block upper bound. llvm-svn: 273705
* Use shouldAssumeDSOLocal in isOffsetFoldingLegal.Rafael Espindola2016-06-242-9/+24
| | | | | | This makes it slightly more powerful for dynamic-no-pic. llvm-svn: 273704
* Revert "InstCombine rule to fold trunc when value available"Reid Kleckner2016-06-244-171/+21
| | | | | | | | | | | | This reverts commit r273608. Broke building code with sanitizers, where apparently these kinds of loads, casts, and truncations are common: http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/24502 http://crbug.com/623099 llvm-svn: 273703
* [InstCombine] consolidate commutation variants of matchSelectFromAndOr() in ↵Sanjay Patel2016-06-242-65/+165
| | | | | | | | | | one place; NFCI By putting all the possible commutations together, we simplify the code. Note that this is NFCI, but I'm adding tests that actually exercise each commutation pattern because we don't have this anywhere else. llvm-svn: 273702
* Thread Expected<...> up from libObject’s getSymbolAddress() for symbols to ↵Kevin Enderby2016-06-2418-55/+92
| | | | | | | | | | | | | | | | | | | | | allow a good error message to be produced. This is nearly the last libObject interface that used ErrorOr and the last one that appears in llvm/include/llvm/Object/MachO.h . For Mach-O objects this is just a clean up because it’s version of getSymbolAddress() can’t return an error. I will leave it to the experts on COFF and ELF to actually add meaning full error messages in their tests if they wish. And also leave it to these experts to change the last two ErrorOr interfaces in llvm/include/llvm/Object/ObjectFile.h for createCOFFObjectFile() and createELFObjectFile() if they wish. Since there are no test cases for COFF and ELF error cases with respect to getSymbolAddress() in the test suite this is no functional change (NFC). llvm-svn: 273701
* Codegen: Fix broken assumption in Tail Merge.Kyle Butt2016-06-247-28/+45
| | | | | | | | | Tail merge was making the assumption that a layout successor or predecessor was always a cfg successor/predecessor. Remove that assumption. Changes to tests are necessary because the errant cfg edges were preventing optimizations. llvm-svn: 273700
* Use FileCheck. NFC.Rafael Espindola2016-06-241-10/+3
| | | | llvm-svn: 273699
* [ELF] Allow --reproduce to be specified as an environment variable.Davide Italiano2016-06-242-3/+10
| | | | | | | PR: 28257 Differential Revision: http://reviews.llvm.org/D21628 llvm-svn: 273698
* [libcxx] guard throw with exception enabling checkWeiming Zhao2016-06-241-0/+8
| | | | | | | | | | | | Summary: this fixes build error when built with c++14 and no exceptions Reviewers: rmaprath Subscribers: weimingz, grandinj, rmaprath, cfe-commits Differential Revision: http://reviews.llvm.org/D21673 llvm-svn: 273697
* [codeview] Emit parameter variables in the right orderReid Kleckner2016-06-244-8/+151
| | | | | | | | | | Clang emits them in reverse order to conform to the ABI, which requires left-to-right destruction. As a result, the order doesn't fall out naturally, and we have to sort things out in the backend. Fixes PR28213 llvm-svn: 273696
* Fix an issue where LLDB would show the key and value of a single entry ↵Enrico Granata2016-06-244-2/+84
| | | | | | | | NSDictionary in the wrong order Fixes rdar://26478641 llvm-svn: 273695
* clang-format: [JS] Fix build breakage.Martin Probst2016-06-242-2/+2
| | | | | | Checking Line.MustBeDeclaration does actually break the field and param initializer use case. llvm-svn: 273694
* fix a test bug when executed remotedlyXinliang David Li2016-06-241-1/+2
| | | | llvm-svn: 273693
* Linker: Copy metadata when linking declarations.Peter Collingbourne2016-06-244-4/+36
| | | | | | Differential Revision: http://reviews.llvm.org/D21624 llvm-svn: 273692
* [codeview] Use one byte for S_FRAMECOOKIE CookieKind and add flags byteReid Kleckner2016-06-245-5/+7
| | | | | | | | | | We bailed out while printing codeview for an MSVC compiled SemaExprCXX.cpp that used this record. The MS reference headers look incorrect here, which is probably why we had this bug. They use a 32-bit enum as the field type, but the actual record appears to use one byte for the cookie kind followed by a flags byte. llvm-svn: 273691
* [MDT] Always verify machine dominfo if expensive checking is enabled.Chad Rosier2016-06-241-2/+2
| | | | llvm-svn: 273690
* DeadStoresChecker: Don't warn about dead stores into volatile variablesStephan Bergmann2016-06-242-0/+6
| | | | llvm-svn: 273689
* [codeview] Emit base class information from DW_TAG_inheritance nodesReid Kleckner2016-06-244-25/+391
| | | | | | | | | | | | | | | | There are two remaining issues here: 1. No vbptr information 2. Need to mention indirect virtual bases Getting indirect virtual bases is just a matter of adding an "indirect" flag, emitting them in the frontend, and ignoring them when appropriate for DWARF. All virtual bases use the same artificial vbptr field, so I think the vbptr offset will be best represented by an implicit __vbptr$ClassName member similar to our existing __vptr$ member. llvm-svn: 273688
* [LV] Preserve order of dependences in interleaved accesses analysisMatthew Simpson2016-06-242-54/+510
| | | | | | | | | | | | | | | | | | | | | | | | | | The interleaved access analysis currently assumes that the inserted run-time pointer aliasing checks ensure the absence of dependences that would prevent its instruction reordering. However, this is not the case. Issues can arise from how code generation is performed for interleaved groups. For a load group, all loads in the group are essentially moved to the location of the first load in program order, and for a store group, all stores in the group are moved to the location of the last store. For groups having members involved in a dependence relation with any other instruction in the loop, this reordering can violate the dependence. This patch teaches the interleaved access analysis how to avoid breaking such dependences, and should fix PR27626. An assumption of the original analysis was that the accesses had been collected in "program order". The analysis was then simplified by visiting the accesses bottom-up. However, this ordering was never guaranteed for anything other than single basic block loops. Thus, this patch also enforces the desired ordering. Reference: https://llvm.org/bugs/show_bug.cgi?id=27626 Differential Revision: http://reviews.llvm.org/D19984 llvm-svn: 273687
* Remangle intrinsics names when types are renamedArtur Pilipenko2016-06-248-2/+169
| | | | | | | | | | | | | This is a resubmittion of previously reverted rL273568. This is a fix for the problem mentioned in "LTO and intrinsics mangling" llvm-dev mail thread: http://lists.llvm.org/pipermail/llvm-dev/2016-April/098387.html Reviewers: mehdi_amini, reames Differential Revision: http://reviews.llvm.org/D19373 llvm-svn: 273686
* NFC. Move verifyIntrinsicIsVarArg from verifier to ↵Artur Pilipenko2016-06-243-30/+28
| | | | | | Intrinsic::matchIntrinsicVarArg since it will be reused for intrinsic remangling code llvm-svn: 273685
* ExecutionEngine: silence unused value warningSaleem Abdulrasool2016-06-241-0/+3
| | | | | | | The Value is only used in debug or asserts builds. Just cast to void to silence an unused variable warning. llvm-svn: 273684
* Correct error in change description.Richard Smith2016-06-241-1/+1
| | | | llvm-svn: 273683
* ExecutionEngine: add preliminary support for COFF ARMSaleem Abdulrasool2016-06-243-5/+401
| | | | | | | | | This adds rudimentary support for COFF ARM to the dynamic loader for the exeuction engine. This can be used by lldb to JIT code into a COFF ARM environment. This lays the foundation for the loader, though a few of the relocation types are yet unhandled. llvm-svn: 273682
* Remaining motions pass.Richard Smith2016-06-241-2/+0
| | | | llvm-svn: 273681
* Inline variables tentatively approved for C++17.Richard Smith2016-06-241-1/+1
| | | | llvm-svn: 273680
* Make sure Format is always initialized.Rafael Espindola2016-06-241-0/+5
| | | | | | Should fix the msan bots. llvm-svn: 273679
* [MachineDominatorTree] Add a MDT verifier.Chad Rosier2016-06-243-1/+54
| | | | | | Differential Revision: http://reviews.llvm.org/D21657 llvm-svn: 273678
* Use existing predicate. NFC.Rafael Espindola2016-06-241-5/+1
| | | | | | This doesn't handle ELF, but neither did the previous code. llvm-svn: 273677
* Updates from further motions.Richard Smith2016-06-241-8/+1
| | | | llvm-svn: 273676
* Fix make-check issuesStrahinja Petrovic2016-06-241-4/+5
| | | | | | Fixing build issue for test test/CodeGen/struct-union-BE.c. llvm-svn: 273675
* Merge two identical if branches. NFC.Rafael Espindola2016-06-241-14/+11
| | | | llvm-svn: 273674
* Merge two identical if branches. NFC.Rafael Espindola2016-06-241-11/+3
| | | | llvm-svn: 273673
* clang-format a region. NFC.Rafael Espindola2016-06-241-4/+4
| | | | llvm-svn: 273672
* [LICM] Avoid repeating expensive call while promoting loads. NFCAnna Thomas2016-06-241-3/+4
| | | | | | | | | | | | | | | Summary: We can avoid repeating the check `isGuaranteedToExecute` when it's already called once while checking if the alignment can be widened for the load/store being hoisted. The function is invariant for the same instruction `UI` in `isGuaranteedToExecute(*UI, DT, CurLoop, SafetyInfo);` Reviewers: hfinkel, eli.friedman Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D21672 llvm-svn: 273671
* Revert r273664Hubert Tong2016-06-241-44/+0
| | | | | | Revert change until build issues with MSVC can be resolved. llvm-svn: 273670
* [mips] Use --check-prefixes where appropriate. NFC.Daniel Sanders2016-06-24105-982/+839
| | | | llvm-svn: 273669
* More approved features for C++17.Richard Smith2016-06-241-2/+2
| | | | llvm-svn: 273668
* Dynamic memory allocation with alignment has been approved for C++17.Richard Smith2016-06-241-2/+2
| | | | llvm-svn: 273667
* Using for attributes voted into C++17.Richard Smith2016-06-244-1/+52
| | | | llvm-svn: 273666
* This patch fixes problem with passing structures and unionsStrahinja Petrovic2016-06-242-1/+50
| | | | | | | | smaller than register as argument in variadic functions on big endian architectures. Differential Revision: http://reviews.llvm.org/D21611 llvm-svn: 273665
* Add FixedSizeStorage to TrailingObjects; NFCHubert Tong2016-06-241-0/+44
| | | | | | | | | | | | Summary: This change introduces two types, `FixedSizeStorage` and `FixedSizeStorageOwner`, which can be used to provide stack-allocated objects with trailing objects. Reviewers: rsmith, faisalv, aaron.ballman Subscribers: llvm-commits, cfe-commits, nwilson Differential Revision: http://reviews.llvm.org/D19770 llvm-svn: 273664
* [ELF] - Fix incorrect logic in VersionScriptParser::parseVersion()George Rimar2016-06-242-2/+2
| | | | | | | | | | | | | | | | Previously the next sample script would generate 2 entries in Config->SymbolVersions with the same version name. VERSION { global: c; }; That happened because parseVersionSymbols() was called twice. At first for "global:" and since there is no local tag, it was called again. Patch fixes the issue, testcase was updated to demonstrate. Differential revision: http://reviews.llvm.org/D21640 llvm-svn: 273663
* Add (commented out) status entries for the upcoming WG21 motions.Richard Smith2016-06-241-0/+59
| | | | llvm-svn: 273662
* [ELF] - Support of compressed input sections implemented.George Rimar2016-06-245-6/+98
| | | | | | | | | | Patch implements support of zlib style compressed sections. SHF_COMPRESSED flag is used to recognize that decompression is required. After that decompression is performed and flag is removed from output. Differential revision: http://reviews.llvm.org/D20272 llvm-svn: 273661
* Remove ignoringImplicit from clang-tidy.Cong Liu2016-06-242-6/+1
| | | | llvm-svn: 273660
* IgnoringImplicit matcher.Cong Liu2016-06-245-3/+59
| | | | llvm-svn: 273659
* Revert "Revert "[misched] Extend scheduler to handle unsupported features""Simon Dardis2016-06-243-1/+53
| | | | | | | | This reverts commit r273565. This was an over-eager revert. llvm-svn: 273658
* AMDGPU: Add stub custom CodeGenPrepare passMatt Arsenault2016-06-245-0/+96
| | | | | | | | This will do various things including ones CodeGenPrepare does, but with knowledge of uniform values. llvm-svn: 273657
* Remove hack introduced by r273641.George Burgess IV2016-06-241-2/+0
| | | | | | Hopefully the buildbots have had enough time to pick this up by now. llvm-svn: 273656
OpenPOWER on IntegriCloud