summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [mips][microMIPS] Implement RECIP.fmt, RINT.fmt, ROUND.L.fmt, ROUND.W.fmt, ↵Hrvoje Varga2015-12-019-26/+233
| | | | | | | | SEL.fmt, SELEQZ.fmt, SELNEQZ.fmt and CLASS.fmt Differential Revision: http://reviews.llvm.org/D13885 llvm-svn: 254405
* Introduce new @llvm.get.dynamic.area.offset.i{32, 64} intrinsics.Yury Gribov2015-12-0115-0/+165
| | | | | | | | | | | | | | | The @llvm.get.dynamic.area.offset.* intrinsic family is used to get the offset from native stack pointer to the address of the most recent dynamic alloca on the caller's stack. These intrinsics are intendend for use in combination with @llvm.stacksave and @llvm.restore to get a pointer to the most recent dynamic alloca. This is useful, for example, for AddressSanitizer's stack unpoisoning routines. Patch by Max Ostapenko. Differential Revision: http://reviews.llvm.org/D14983 llvm-svn: 254404
* Fix race during process interruptionPavel Labath2015-12-014-126/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The following situation was occuring in TestAttachResume: - we did a "continue" from a breakpoint (which involves a private start-stop to step over the breakpoint) - after receiving the stop-reply from the step-over, we issue a "detach" (which requires a process interrupt) - at this moment, the public state is "running", private state is "about-to-be-stopped" (the stopped event was broadcast, but it was not received yet) - StopForDestroyOrDetach (public thread) notes the public state is running, sends an interrupt request to the private thread - private thread gets the eBroadcastBitInterrupt (before the eStateStopped message), and asks the process plugin to stop (via Halt()) - process plugin says it has nothing to do as the process is already stopped - private thread shrugs and carries on. receives the stop event, restores the breakpoint and resumes the process. - after a while, the public thread times out and says it failed to stop the process This patch does the following: - splits Halt() into two functions, private and public, their usage depends on the context - public Halt(): sends eBroadcastBitInterrupt to the private thread and waits for the Stop event - HaltPrivate(): asks the plugin to stop and makes a note that the halt was requested. When the next stop event comes it sets the interrupt flag on it. - removes HijackPrivateProcessEvents(), as the only user (old Halt()) has gone away - removes the m_currently_handling_event hack, as the new Halt() does not need it - adds a use_run_lock parameter to public Halt() and WaitForProcessToStop(). This was needed because RunThreadPlan uses Halt() while holding the run lock and we don't want Halt() to take it away from him. Reviewers: clayborg, jingham Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D14989 llvm-svn: 254403
* Allow known and unknown probabilities coexist in MBB's successor list.Cong Hou2015-12-011-8/+17
| | | | | | | | | | Previously it is not allowed for each MBB to have successors with both known and unknown probabilities. However, this may be too strict as at this stage we could not always guarantee that. It is better to remove this restriction now, and I will work on validating MBB's successors' probabilities first (for example, check if the sum is approximate one). llvm-svn: 254402
* [AArch64] Add ARMv8.2-A Statistical Profiling ExtensionOliver Stannard2015-12-0112-6/+355
| | | | | | | | | | | | The Statistical Profiling Extension is an optional extension to ARMv8.2-A. Since it is an optional extension, I have added the FeatureSPE subtarget feature to control it. The assembler-visible parts of this extension are the new "psb csync" instruction, which is equivalent to "hint #17", and a number of system registers. Differential Revision: http://reviews.llvm.org/D15021 llvm-svn: 254401
* [ARM] Add ARMv8.2-A to TargetParserOliver Stannard2015-12-0110-1/+72
| | | | | | | | | | | | Add ARMv8.2-A to TargetParser, so that it can be used by the clang command-line options and the .arch directive. Most testing of this will be done in clang, checking that the command-line options that this enables work. Differential Revision: http://reviews.llvm.org/D15037 llvm-svn: 254400
* [ARM] Add subtarget features for ARMv8.2-AOliver Stannard2015-12-014-3/+20
| | | | | | | | | | | | | | This adds subtarget features for ARMv8.2-A, which builds on (and requires the features from) ARMv8.1-A. Most assembler-visible features of ARMv8.2-A are system instructions, and are all required parts of the architecture, so just depend on the HasV8_2aOps subtarget feature. There is also one large, optional feature, which adds 16-bit floating point versions of all existing floating-point instructions (VFP and SIMD), this is represented by the FeatureFullFP16 subtarget feature. Differential Revision: http://reviews.llvm.org/D15036 llvm-svn: 254399
* [OPENMP 4.5] Parsing/sema analysis for 'priority' clause.Alexey Bataev2015-12-0154-168/+463
| | | | | | OpenMP 4.5 defines new clause 'priority' for 'task', 'taskloop' and 'taskloop simd' directives. Added parsing and sema analysis for 'priority' clause in 'task' and 'taskloop' directives. llvm-svn: 254398
* llvm/test/DebugInfo/X86/safestack-byval.ll: Give an explicit triple for now. ↵NAKAMURA Takumi2015-12-011-4/+1
| | | | | | | | It crashes for targeting *-win32. Also revert r254375 and r254361. llvm-svn: 254397
* Move llvm/test/DebugInfo/Generic/safestack-byval.ll to X86. It depends on ↵NAKAMURA Takumi2015-12-011-0/+0
| | | | | | x86-64. llvm-svn: 254396
* [asan] Correctly release memory allocated during early startup.Yury Gribov2015-12-012-2/+55
| | | | | | | | | | Calloc interceptor initially allocates memory from temp buffer (to serve dlsyms called during asan_init). There is a chance that some non-instrumented library (or executable) has allocated memory with calloc before asan_init and got pointer from the same temporary buffer which later caused problems with free. Inspired by https://github.com/google/sanitizers/issues/626 Differential Revision: http://reviews.llvm.org/D14979 llvm-svn: 254395
* [analyzer] Fix IssueHash generation.Gabor Horvath2015-12-018-20/+25
| | | | | | | | Differential Revision: http://reviews.llvm.org/D14919 Original patch by: Gyorgy Orban! llvm-svn: 254394
* [ELF] Rearrange relocation codes in natural order. NFC.Igor Kudrin2015-12-011-65/+76
| | | | | | Differential revision: http://reviews.llvm.org/D15045 llvm-svn: 254393
* Remove superfluous StringRef casts, NFC.Yaron Keren2015-12-011-7/+7
| | | | llvm-svn: 254392
* Introduce a range version of std::find, and use in SCEVSanjoy Das2015-12-012-2/+8
| | | | | | | | | | Reviewers: dblaikie, pcc Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D15064 llvm-svn: 254391
* Introduce a range version of std::any_of, and use it in SCEVSanjoy Das2015-12-013-10/+14
| | | | | | | | | | Reviewers: dblaikie, pcc Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D15063 llvm-svn: 254390
* [X86] Improve codegen for AVX2 gather with an all 1s mask.Craig Topper2015-12-011-30/+39
| | | | | | Use undefined instead of setzero as the pass through input since its going to be fully overwritten. Use cmpeq of two zero vectors to produce the all 1s vector. Casting -1 to a double and vectorizing causes a constant load of a -1.0 floating point value. llvm-svn: 254389
* [X86] Fix patterns for memory forms of FP FSUBR and FDIVR. They need to have ↵Craig Topper2015-12-011-39/+69
| | | | | | | | memory on the left hand side of the fsub/fdiv operations in their patterns. Not sure how to test this. I noticed by inspection in the isel tables where the same pattern tried to produce DIV and DIVR or SUB and SUBR. llvm-svn: 254388
* [X86] Use range-based for loops. NFCCraig Topper2015-12-011-6/+6
| | | | llvm-svn: 254387
* [X86] Use array_lengthof instead of calculating manually. Also change index ↵Craig Topper2015-12-011-7/+7
| | | | | | types to size_t to match. llvm-svn: 254386
* [Hexagon] Use std::begin() and std::end() instead of doing the same ↵Craig Topper2015-12-011-2/+1
| | | | | | manually. NFC llvm-svn: 254385
* [Hexagon] Use array_lengthof and const correct and type correct the array ↵Craig Topper2015-12-011-7/+5
| | | | | | and array size. NFC llvm-svn: 254384
* Use array_lengthof instead of manually calculating it. NFCCraig Topper2015-12-011-2/+2
| | | | llvm-svn: 254383
* [Hexagon] Use ArrayRef to avoid needing to calculate an array size. ↵Craig Topper2015-12-011-16/+11
| | | | | | Interestingly the original code may have had a bug because it was passing the byte size of a uint16_t array instead of the number of entries. llvm-svn: 254382
* [ARM] Use range-based for loops to avoid the need for calculating an array ↵Craig Topper2015-12-011-6/+5
| | | | | | size that I would have otherwise cconverted to array_lengthof. NFC llvm-svn: 254381
* Use array_lengthof instead of manually calculating it. NFCCraig Topper2015-12-011-3/+2
| | | | llvm-svn: 254380
* [LLDB][MIPS] Clear bug 25194 - LLDB-Server Assertion raised when single ↵Sagar Thakur2015-12-011-0/+3
| | | | | | | | | | | | | | | | | | | stepping on MIPS This patch will clear bug 25194 - LLDB-Server Assertion raised when single stepping on MIPS. The problem was that while emulating instructions, old and new pc values would have garbage value in their upper 32 bits. Therefore checking if pc was changed (old_pc == new_pc) would always return false, because of which pc was not getting updated. /* If we haven't changed the PC, change it here */ if (old_pc == new_pc) { new_pc += 4; Context context; return false; } Reviewers: tberghammer, clayborg Subscribers: dsanders, lldb-commits, mohit.bhakkad, bhushan, jaydeep, nitesh.jain Differential: http://reviews.llvm.org/D14633 llvm-svn: 254379
* [Windows] Partially revert r254363 until I can test the right fix.Davide Italiano2015-12-011-2/+6
| | | | | | Reported by: David Blaikie llvm-svn: 254378
* Replace all weight-based interfaces in MBB with probability-based ↵Cong Hou2015-12-0134-422/+301
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | interfaces, and update all uses of old interfaces. (This is the second attempt to submit this patch. The first caused two assertion failures and was reverted. See https://llvm.org/bugs/show_bug.cgi?id=25687) The patch in http://reviews.llvm.org/D13745 is broken into four parts: 1. New interfaces without functional changes (http://reviews.llvm.org/D13908). 2. Use new interfaces in SelectionDAG, while in other passes treat probabilities as weights (http://reviews.llvm.org/D14361). 3. Use new interfaces in all other passes. 4. Remove old interfaces. This patch is 3+4 above. In this patch, MBB won't provide weight-based interfaces any more, which are totally replaced by probability-based ones. The interface addSuccessor() is redesigned so that the default probability is unknown. We allow unknown probabilities but don't allow using it together with known probabilities in successor list. That is to say, we either have a list of successors with all known probabilities, or all unknown probabilities. In the latter case, we assume each successor has 1/N probability where N is the number of successors. An assertion checks if the user is attempting to add a successor with the disallowed mixed use as stated above. This can help us catch many misuses. All uses of weight-based interfaces are now updated to use probability-based ones. Differential revision: http://reviews.llvm.org/D14973 llvm-svn: 254377
* [LLDB][MIPS] Change ARCHFLAG for MIPSJaydeep Patil2015-12-011-0/+3
| | | | | | | | | | | SUMMARY: For MIPS, ARCH is specified without m. Reviewers: clayborg Subscribers: nitesh.jain, mohit.bhakkad, sagar, bhushan and lldb-commits Differential Revision: http://reviews.llvm.org/D14978 llvm-svn: 254376
* [Hexagon] Disabling failing safestack testColin LeMahieu2015-12-011-0/+1
| | | | llvm-svn: 254375
* RegisterPressure: If we do not collect dead defs the list must be emptyMatthias Braun2015-12-011-5/+1
| | | | llvm-svn: 254372
* RegisterPressure: Remove support for recede()/advance() at MBB boundariesMatthias Braun2015-12-012-22/+8
| | | | | | | Nobody was checking the returnvalue of recede()/advance() so we can simply replace this code with asserts. llvm-svn: 254371
* RegisterPressure: There is no need to make getCurSlot() publicMatthias Braun2015-12-011-4/+4
| | | | llvm-svn: 254370
* RegisterPressure: There is no need to make discoverLive{In|Out} publicMatthias Braun2015-12-011-3/+3
| | | | llvm-svn: 254369
* RegisterPressure: Split RegisterOperands analysis code from result object; NFCMatthias Braun2015-12-011-43/+60
| | | | | | | This is in preparation to expose the RegisterOperands class as RegisterPressure API. llvm-svn: 254368
* [OPENMP 4.5] Parsing/sema analysis for 'taskloop' directive.Alexey Bataev2015-12-0130-34/+2927
| | | | | | Adds initial parsing and semantic analysis for 'taskloop' directive. llvm-svn: 254367
* Revert r254348: "Replace all weight-based interfaces in MBB with ↵Hans Wennborg2015-12-0134-296/+420
| | | | | | | | | | probability-based interfaces, and update all uses of old interfaces." and the follow-up r254356: "Fix a bug in MachineBlockPlacement that may cause assertion failure during BranchProbability construction." Asserts were firing in Chromium builds. See PR25687. llvm-svn: 254366
* [modules] Don't reject multiple modules providing contents for the same ↵Richard Smith2015-12-012-1/+17
| | | | | | embedded file. llvm-svn: 254365
* [Windows] Follow-up r254363, remove return.Davide Italiano2015-12-011-3/+1
| | | | llvm-svn: 254364
* [Windows] Simplify assertion code. NFC.Davide Italiano2015-12-012-8/+3
| | | | llvm-svn: 254363
* Squelch unused variable warning in SIRegisterInfo.cpp.Matt Arsenault2015-12-011-1/+2
| | | | | | Patch by Justin Lebar llvm-svn: 254362
* llvm/test/DebugInfo/Generic/safestack-byval.ll is using tls.NAKAMURA Takumi2015-12-011-0/+2
| | | | llvm-svn: 254361
* check-llvm: Introduce the new feature "tls".NAKAMURA Takumi2015-12-011-0/+4
| | | | llvm-svn: 254360
* Fix use-after-free when a C++ thread_local variable gets replaced (because itsRichard Smith2015-12-017-32/+34
| | | | | | | type changes when the initializer is attached). Don't hold onto the GlobalVariable*; recompute it from the VarDecl* instead. llvm-svn: 254359
* [llvm-dwp] Add missing Makefile for the old configure+make buildDavid Blaikie2015-12-011-0/+18
| | | | llvm-svn: 254358
* [llvm-dwp] Add missing dependency from llvm tests on the llvm-dwp toolDavid Blaikie2015-12-011-0/+1
| | | | llvm-svn: 254357
* Fix a bug in MachineBlockPlacement that may cause assertion failure during ↵Cong Hou2015-12-011-3/+7
| | | | | | | | BranchProbability construction. The root cause is the rounding behavior in BranchProbability construction. We may consider to use truncation instead in the future. llvm-svn: 254356
* [llvm-dwp] Initial partial prototypeDavid Blaikie2015-12-019-1/+222
| | | | | | | | | | | | | | | | | | | This just concatenates the common DWP sections without doing any of the fancy DWP things like: 1) update str_offsets 2) deduplicating strings 3) merging/creating cu/tu_index Patches for these will follow shortly. (also not sure about target triple/object file type for this tool - do I really need a whole triple just to write an object file that contains purely static/hardcoded bytes in each section? & I guess I should just pick it based on the first input, maybe, rather than hardcoding for now - but we only produce .dwo on ELF platforms with objcopy for now anyway) llvm-svn: 254355
* llvm-dwp: Initial layoutDavid Blaikie2015-12-015-1/+40
| | | | llvm-svn: 254354
OpenPOWER on IntegriCloud