summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* DebugInfo: Avoid re-looking up the DwarfUnit when emitting pubnames/pubtypesDavid Blaikie2014-03-111-1/+4
| | | | llvm-svn: 203620
* DebugInfo: Refactor emitDebugPubNames/Types into a common implementationDavid Blaikie2014-03-113-57/+17
| | | | | | | | | | I could fold the callers into their one call site, but the indirection (given how verbose choosing the section is) seemed helpful. The use of a member function pointer's a bit "tricky", but seems limited enough, the call sites are simple/clean/clear, and there's only one use. llvm-svn: 203619
* Accept Twine's to AsmPrinter::getTempSymbol (refactoring for an incoming change)David Blaikie2014-03-112-4/+5
| | | | llvm-svn: 203617
* Clean up test/DebugInfo/empty.ll now that we have an alias for "llc with ↵David Blaikie2014-03-111-4/+2
| | | | | | dwarf output" llvm-svn: 203616
* move WITH_POLLY option before add_subdirectory(tools)Sebastian Pop2014-03-111-7/+7
| | | | | | | | | | | the first run of the polly buildbot failed, and then it started passing. This is due to the fact that the buildbot re-builds in an existing directory, and the first run does not have WITH_POLLY set when it enters tools/. Thus, cmake ignores the tools/polly dir in the first run, and then because it reuses the CMakeCache.txt of the previous run, it has the WITH_POLLY set by the previous run, and so it passes the second time. llvm-svn: 203615
* DebugInfo: Remove unused labels now that we just emit DW_AT_gnu_pubnames as ↵David Blaikie2014-03-111-8/+0
| | | | | | a flag (as of r203082) llvm-svn: 203612
* support: add a utility function to normalise path separatorsSaleem Abdulrasool2014-03-114-0/+63
| | | | | | | | Add a utility function to convert the Windows path separator to Unix style path separators. This is used by a subsequent change in clang to enable the use of Windows SDK headers on Linux. llvm-svn: 203611
* [mips] Implement NaCl sandboxing of function calls:Sasa Stankovic2014-03-112-2/+122
| | | | | | | | | * Add masking instructions before indirect calls (in MC layer). * Align call + branch delay to the bundle end (in MC layer). Differential Revision: http://llvm-reviews.chandlerc.com/D3032 llvm-svn: 203606
* Simplify a really complicated check for Arch == X86_64.Rafael Espindola2014-03-116-21/+8
| | | | | | | | | | | | The function hasReliableSymbolDifference had exactly one use in the MachO writer. It is also only true for X86_64. In fact, the comments refers to "Darwin x86_64" and everything else, so this makes the code match the comment. If this is to be abstracted again, it should be a property of TargetObjectWriter, like useAggressiveSymbolFolding. llvm-svn: 203605
* Remove dead code.Rafael Espindola2014-03-111-4/+0
| | | | llvm-svn: 203604
* Cleanup the interface for creating soft or hard links.Rafael Espindola2014-03-115-39/+20
| | | | | | | | | | | | Before this patch the unix code for creating hardlinks was unused. The code for creating symbolic links was implemented in lib/Support/LockFileManager.cpp and the code for creating hard links in lib/Support/*/Path.inc. The only use we have for these is in LockFileManager.cpp and it can use both soft and hard links. Just have a create_link function that creates one or the other depending on the platform. llvm-svn: 203596
* Don't assume an empty stderr.Rafael Espindola2014-03-112-6/+6
| | | | | | | | GuardMalloc can print info to stderr, causing these tests to fail. Since FileCheck errors on empty inputs, just add a bit of dummy data to make it happy. llvm-svn: 203595
* Range-ify a loop.Owen Anderson2014-03-111-4/+1
| | | | llvm-svn: 203590
* X86: Don't generate 64-bit movd after cmpneqsd in 32-bit mode (PR19059)Hans Wennborg2014-03-112-6/+46
| | | | | | | | | This fixes the bug where we would bitcast the 64-bit floating point result of cmpneqsd to a 64-bit integer even on 32-bit targets. Differential Revision: http://llvm-reviews.chandlerc.com/D3009 llvm-svn: 203581
* [ppc64] Patch in TOC restore code after all external function callsUlrich Weigand2014-03-111-3/+3
| | | | | | | | | | | | | | | | When resolving a function call to an external routine, the dynamic loader must patch the "nop" after the branch instruction to a load that restores the TOC register. Current code does that, but only with the *first* instance of a call to any particular external routine, i.e. at the point where it also allocates the call stub. With subsequent calls to the same routine, current code neglects to patch in the TOC restore code. This is a bug, and leads to corrupt TOC pointers in those cases. Fixed by patching in restore code every time. llvm-svn: 203580
* ARM: honour -f{no-,}optimize-sibling-callsSaleem Abdulrasool2014-03-112-2/+25
| | | | | | | | | | | Use the options in the ARMISelLowering to control whether tail calls are optimised or not. Previously, this option was entirely ignored on the ARM target and only honoured on x86. This option is mostly useful in profiling scenarios. The default remains that tail call optimisations will be applied. llvm-svn: 203577
* ARM: remove ancient -arm-tail-calls optionSaleem Abdulrasool2014-03-118-20/+14
| | | | | | | | This option is from 2010, designed to work around a linker issue on Darwin for ARM. According to grosbach this is no longer an issue and this option can safely be removed. llvm-svn: 203576
* ARM: enable tail call optimisation on Thumb 2Saleem Abdulrasool2014-03-116-12/+14
| | | | | | | | | | | | Tail call optimisation was previously disabled on all targets other than iOS5.0+. This enables the tail call optimisation on all Thumb 2 capable platforms. The test adjustments are to remove the IR hint "tail" to function invocation. The tests were designed assuming that tail call optimisations would not kick in which no longer holds true. llvm-svn: 203575
* Fix crash in PRE.Erik Verbruggen2014-03-112-0/+26
| | | | | | | | | | After r203553 overflow intrinsics and their non-intrinsic (normal) instruction get hashed to the same value. This patch prevents PRE from moving an instruction into a predecessor block, and trying to add a phi node that gets two different types (the intrinsic result and the non-intrinsic result), resulting in a failing assert. llvm-svn: 203574
* [lit] Fix non-function style print statement.Daniel Dunbar2014-03-111-1/+1
| | | | llvm-svn: 203573
* ARM: simplify EmitAtomicBinary64Tim Northover2014-03-113-34/+19
| | | | | | | | | ATOMIC_STORE operations always get here as a lowered ATOMIC_SWAP, so there's no need for any code to handle them specially. There should be no functionality change so no tests. llvm-svn: 203567
* Remove copy ctors that did the same thing as the default one.Benjamin Kramer2014-03-1113-63/+0
| | | | | | | The code added nothing but potentially disabled move semantics and made types non-trivially copyable. llvm-svn: 203563
* IR: add a second ordering operand to cmpxhg for failureTim Northover2014-03-1160-288/+489
| | | | | | | | | | | | | | | The syntax for "cmpxchg" should now look something like: cmpxchg i32* %addr, i32 42, i32 3 acquire monotonic where the second ordering argument gives the required semantics in the case that no exchange takes place. It should be no stronger than the first ordering constraint and cannot be either "release" or "acq_rel" (since no store will have taken place). rdar://problem/15996804 llvm-svn: 203559
* GVN: fix hashing of extractvalue.Erik Verbruggen2014-03-111-0/+4
| | | | | | | My last commit did not add the indexes to the hashed value for extractvalue. Adding that back in. llvm-svn: 203558
* GVN: merge overflow intrinsics with non-overflow instructions.Erik Verbruggen2014-03-112-58/+161
| | | | | | | | | | | | | | | | | | | When an overflow intrinsic is followed by a non-overflow instruction, replace the latter with an extract. For example: %sadd = tail call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %a, i32 %b) %sadd3 = add i32 %a, %b Here the add statement will be replaced by an extract. When an overflow intrinsic follows a non-overflow instruction, a clone of the intrinsic is inserted before the normal instruction, which makes it the same as the previous case. Subsequent runs of GVN can then clean up the duplicate instructions and insert the extract. This fixes PR8817. llvm-svn: 203553
* Fix fixme: remove unused method.Erik Verbruggen2014-03-111-4/+0
| | | | llvm-svn: 203552
* Object: rename ARMV7 to ARMNTSaleem Abdulrasool2014-03-114-4/+4
| | | | | | | The official specifications state the name to be ARMNT (as per the Microsoft Portable Executable and Common Object Format Specification v8.3). llvm-svn: 203530
* Cleanup whitespaceDuncan P. N. Exon Smith2014-03-111-9/+9
| | | | llvm-svn: 203529
* R600: Calculate store mask instead of using switch.Matt Arsenault2014-03-111-17/+3
| | | | llvm-svn: 203527
* Add helpers for getting scalar sizes of vector value types.Matt Arsenault2014-03-112-0/+12
| | | | llvm-svn: 203526
* X86: Enable ISel of 16-bit MOVBE instructions.Jim Grosbach2014-03-113-13/+42
| | | | | | | | | | | | | | | | | When the MOVBE instructions are available, use them for 16-bit endian swapping as well as for 32 and 64 bit. The patterns were already present on the instructions, but weren't being matched because the operation was unconditionally marked to 'Expand.' Change that to be conditional on whether the MOVBE instructions are available. Use 'rolw' to implement the in-register version (32 and 64 bit have the dedicated 'bswap' instruction for that). Patch by Louis Gerbarg <lgg@apple.com>. rdar://15479984 llvm-svn: 203524
* MultiJITTest.cpp: Tweak getPointerToNamedFunction() to be aware of also ↵NAKAMURA Takumi2014-03-111-0/+8
| | | | | | | | | | | | Windows x64. In import thunk, jmp is: - On x86, 0xFF 0x25 [disp32]. - On x64, 0xFF 0x25 [pcrel32]. See also my r144178. llvm-svn: 203523
* Follow up to r203488. Code clean up to eliminate a lot of copy+paste.Evan Cheng2014-03-111-215/+35
| | | | llvm-svn: 203520
* Fix undefined behavior in vector shift tests.Matt Arsenault2014-03-115-65/+65
| | | | | | These were all shifting the same amount as the bitwidth. llvm-svn: 203519
* Remove incomplete commentMatt Arsenault2014-03-111-2/+0
| | | | llvm-svn: 203518
* Move trivial getter into header.Matt Arsenault2014-03-112-7/+4
| | | | llvm-svn: 203517
* Use .data() instead of &x[0]Matt Arsenault2014-03-111-2/+2
| | | | llvm-svn: 203516
* Fix indentationMatt Arsenault2014-03-111-9/+8
| | | | llvm-svn: 203515
* Fix non 2-space indentation.Matt Arsenault2014-03-111-73/+73
| | | | llvm-svn: 203514
* Module: Don't rename in getOrInsertFunction()Duncan P. N. Exon Smith2014-03-103-10/+76
| | | | | | | | | | | | | | | | | | | | | | | During LTO, user-supplied definitions of C library functions often exist. -instcombine uses Module::getOrInsertFunction() to get a handle on library functions (e.g., @puts, when optimizing @printf). Previously, Module::getOrInsertFunction() would rename any matching functions with local linkage, and create a new declaration. In LTO, this is the opposite of desired behaviour, as it skips by the user-supplied version of the library function and creates a new undefined reference which the linker often cannot resolve. After some discussing with Rafael on the list, it looks like it's undesired behaviour. If a consumer actually *needs* this behaviour, we should add new API with a more explicit name. I added two testcases: one specifically for the -instcombine behaviour and one for the LTO flow. <rdar://problem/16165191> llvm-svn: 203513
* When analyzing vectors of element type that require legalization,Raul E. Silvera2014-03-103-18/+60
| | | | | | | | | | | | | | | | | | the legalization cost must be included to get an accurate estimation of the total cost of the scalarized vector. The inaccurate cost triggered unprofitable SLP vectorization on 32-bit X86. Summary: Include legalization overhead when computing scalarization cost Reviewers: hfinkel, nadav CC: chandlerc, rnk, llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2992 llvm-svn: 203509
* Use discriminator information in sample profiles.Diego Novillo2014-03-1011-91/+254
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: When the sample profiles include discriminator information, use the discriminator values to distinguish instruction weights in different basic blocks. This modifies the BodySamples mapping to map <line, discriminator> pairs to weights. Instructions on the same line but different blocks, will use different discriminator values. This, in turn, means that the blocks may have different weights. Other changes in this patch: - Add tests for positive values of line offset, discriminator and samples. - Change data types from uint32_t to unsigned and int and do additional validation. Reviewers: chandlerc CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2857 llvm-svn: 203508
* Test commit: Remove trailing whitespace.Manuel Jacob2014-03-101-4/+4
| | | | llvm-svn: 203502
* Fix a couple typos.Mark Lacey2014-03-101-2/+2
| | | | llvm-svn: 203499
* [lit] Bump dev version number.Daniel Dunbar2014-03-101-1/+1
| | | | llvm-svn: 203498
* [lit] Add a README.txt.Daniel Dunbar2014-03-103-0/+11
| | | | | | - Also, update MANIFEST.in and utils/check-sdist. llvm-svn: 203497
* [lit] Add --version option.Daniel Dunbar2014-03-101-0/+7
| | | | llvm-svn: 203496
* fix polly buildbotSebastian Pop2014-03-101-1/+1
| | | | llvm-svn: 203492
* IR: Slightly more verbose error in VerifierJustin Bogner2014-03-101-2/+4
| | | | | | | | | | Extend the error message generated by the Verifier when an intrinsic name does not match the expected mangling to include the expected name. Simplifies debugging. Patch by Philip Reames! llvm-svn: 203490
* MemCpyOpt: When merging memsets also merge the trivial case of two memsets ↵Benjamin Kramer2014-03-102-0/+19
| | | | | | | | with the same destination. The testcase is from PR19092, but I think the bug described there is actually a clang issue. llvm-svn: 203489
OpenPOWER on IntegriCloud