summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Refactor MCInstFragment and MCDataFragment to adhere to a common interface,Eli Bendersky2012-12-077-99/+102
| | | | | | | | | which removes code duplication and prepares the ground for future additions. Full discussion: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20121203/158233.html llvm-svn: 169626
* X86: Prefer using VPSHUFD over VPERMIL because it has better throughput.Nadav Rotem2012-12-074-8/+9
| | | | llvm-svn: 169624
* Add separate statistics for Data and Inst fragments emitted during relaxation.Eli Bendersky2012-12-072-5/+6
| | | | | | | Also fixes a test that was overly-sensitive to the exact order of statistics emitted. llvm-svn: 169619
* Some common functionality from WinCOFFStreamer::EmitAssignment can be nowEli Bendersky2012-12-071-3/+1
| | | | | | delegated to MCObjectStreamer. llvm-svn: 169617
* Lift EmitAssignment into MCObjectStreamer which gets rid of at least threeEli Bendersky2012-12-077-29/+6
| | | | | | duplicate implementations in format-specific streamers. llvm-svn: 169613
* Added Mapping Symbols for ARM ELFTim Northover2012-12-0719-39/+515
| | | | | | | | | | Before this patch, when you objdump an LLVM-compiled file, objdump tried to decode data-in-code sections as if they were code. This patch adds the missing Mapping Symbols, as defined by "ELF for the ARM Architecture" (ARM IHI 0044D). Patch based on work by Greg Fitzgerald. llvm-svn: 169609
* Convert HowToReleaseLLVM.html to reSTDmitri Gribenko2012-12-073-582/+506
| | | | | | Patch by Alexander Zinenko. llvm-svn: 169608
* The test unconditionally assumes a particular cpu has a backend build in the ↵David Tweed2012-12-072-0/+6
| | | | | | | | | | target. Buildbots for some hosts may choose to build only their own backend in order to maximise testing-turnaround time. Move the test into a prefixed directory so lit's standard "backend specific" suppression can be done. llvm-svn: 169604
* Split MCELFStreamer into a header file.Logan Chien2012-12-072-107/+172
| | | | llvm-svn: 169603
* docs: Convert LangRef to reST.Sean Silva2012-12-073-9100/+8303
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NOTE: If you have any patches in the works that modify LangRef, you will need to rewrite the changes to LangRef.html to their equivalents in LangRef.rst. If you need assistance feel free to contact me. Since LangRef is mission-critical for the project and "normative", I have taken extra care to ensure that no content was lost or altered in the conversion. The content was converted with a tool called `pandoc`, so there is no chance for a human error like accidentally forgetting a sentence or whatever. After the initial conversion by `pandoc`, only changes to the markup were done. This is just the most literal conversion of the HTML document as possible. It might be worth exploring some way to chop up this massive document into separate pages, e.g. something like `docs/LangRef/Instructions.rst`, `docs/LangRef/Intrinsics.rst`, etc. with `docs/LangRef.rst` being an "intro/navigation page" of sorts. On the other hand, that loses the ability to {Ctrl,Cmd}-F for a given term right from your browser. IMO, I think our stylesheet needs some work because I find it hard to tell what level of nesting some of the headings are at (e.g. "is this a new section or is it a subsection?"). The issue is present on other pages, but the sheer size and deep section structure of LangRef really brings this issue out. If there are any web designers out there in the community it would be awesome if you tried to come up with something nicer. llvm-svn: 169596
* [msan] Remove readonly/readnone attributes from all called functions.Evgeniy Stepanov2012-12-071-0/+13
| | | | | | | | | | MSan uses a TLS slot to pass shadow for function arguments and return values. This makes all instrumented functions not readonly, and at the same time requires that all callees of an instrumented function that may be MSan-instrumented do not have readonly attribute (otherwise some of the instrumentation may be optimized out). llvm-svn: 169591
* Use the new MIBundleBuilder class in the Mips target.Jakob Stoklund Olesen2012-12-072-18/+26
| | | | | | This is the preferred way of creating bundled machine instructions. llvm-svn: 169585
* Add an MIBundleBuilder class.Jakob Stoklund Olesen2012-12-071-0/+64
| | | | | | | Like the MachineInstrBuilder, this class makes it easier to build bundles of MachineInstrs. llvm-svn: 169584
* Add higher-level API for dealing with bundled MachineInstrs.Jakob Stoklund Olesen2012-12-072-5/+59
| | | | | | | | | | | | | | | | | | | | | This is still a work in progress. The purpose is to make bundling and unbundling operations explicit, and to catch errors where bundles are broken or created inadvertently. The old IsInsideBundle flag is replaced by two MI flags: BundledPred which has the same meaning as IsInsideBundle, and BundledSucc which is set on instructions that are bundled with a successor. Having two flags provdes redundancy to detect when a bundle is inadvertently torn by a splice() or insert(), and it makes it possible to write bundle iterators that don't need to peek at adjacent instructions. The new flags can't be manipulated directly (once setIsInsideBundle is gone). Instead there are MI functions to make and break bundle bonds. The setIsInsideBundle function will be removed in a future commit. It should be replaced by bundleWithPred(). llvm-svn: 169583
* [mips] Delete nodes and instructions for dynamic alloca that are no longer inAkira Hatanaka2012-12-073-23/+0
| | | | | | use. llvm-svn: 169580
* [mips] Shorten predicate name.Akira Hatanaka2012-12-075-105/+105
| | | | llvm-svn: 169579
* [mips] Delete unused sub-target features.Akira Hatanaka2012-12-073-15/+2
| | | | llvm-svn: 169578
* [mips] Remove unnecessary predicates.Akira Hatanaka2012-12-073-4/+4
| | | | llvm-svn: 169577
* Add support to ValueTracking for determining that a pointer is non-nullChandler Carruth2012-12-072-0/+113
| | | | | | | | | | | | | | | | | | | | | | | by virtue of inbounds GEPs that preclude a null pointer. This is a very common pattern in the code generated by std::vector and other standard library routines which use allocators that test for null pervasively. This is one step closer to teaching Clang+LLVM to be able to produce an empty function for: void f() { std::vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); } Which is related to getting them to completely fold SmallVector push_back sequences into constants when inlining and other optimizations make that a possibility. llvm-svn: 169573
* Add manualRetain() and manualRelease() to ImmutableMapRef, and add a new ↵Ted Kremenek2012-12-071-0/+15
| | | | | | constructor. llvm-svn: 169572
* Makefile.common: Update a description, s/Source/SOURCES/ , according to ↵NAKAMURA Takumi2012-12-071-1/+1
| | | | | | MakefileGuide.html#control-variables . llvm-svn: 169569
* unittest/googletest/Makefile: Unbreak out-of-tree build.NAKAMURA Takumi2012-12-071-1/+1
| | | | | | | - Use SOURCES instead of Source. See Makefile.rules and MakefileGuide.html. - Don't assume the current directory. $(wildcard *.cc) doesn't match anything on corresponding build directory. llvm-svn: 169568
* Add convenience accessor to Triple for OS == NaClEli Bendersky2012-12-071-0/+5
| | | | llvm-svn: 169565
* Try to unbreak makefile build by excluding gtest-all.cc sourceAlexey Samsonov2012-12-061-0/+2
| | | | llvm-svn: 169564
* Add a 'using' declaration to suppress GCC's -Woverloaded-virtual while weMatt Beaumont-Gay2012-12-061-0/+1
| | | | | | decide what pattern we want to follow in the future. llvm-svn: 169561
* Modify the LLVM checkout of googletest:Alexey Samsonov2012-12-063-1/+59
| | | | | | | | | | | 1) don't delete gtest-all.cc (which is used to gather all gtest source files in a single file) 2) make including LLVMSupport headers optional (on by default). Sanitizer tools may want to use their own versions of googletest compiled with specific flags, instead of the common googletest library used for all other LLVM/Clang unittests. llvm-svn: 169559
* fixed valgrind issues of prior commit, this change applies r169456 changes ↵Pedro Artigas2012-12-063-10/+65
| | | | | | | | | | | | back to the tree with fixes. on darwin no valgrind issues exist in the tests that used to fail. original change description: change MCContext to work on the doInitialization/doFinalization model reviewed by Evan Cheng <evan.cheng@apple.com> llvm-svn: 169553
* Remove unused field.Jakub Staszak2012-12-061-6/+1
| | | | llvm-svn: 169551
* Remove trailing spaces.Jakub Staszak2012-12-061-25/+25
| | | | llvm-svn: 169550
* Fix typos in CHECK lines.Dmitri Gribenko2012-12-064-5/+5
| | | | | | Patch by Alexander Zinenko. llvm-svn: 169547
* Documentation: fix typos and formatting.Dmitri Gribenko2012-12-061-3/+3
| | | | llvm-svn: 169546
* Revert "Allow modifying an ImmutableMap without canonicalizing it immediately."Ted Kremenek2012-12-061-18/+5
| | | | | | Jordan and I discussed this, and we don't want this in the API. llvm-svn: 169541
* Replace r169459 with something safer. Rather than having computeMaskedBits toEvan Cheng2012-12-068-111/+65
| | | | | | | | | | understand target implementation of any_extend / extload, just generate zero_extend in place of any_extend for liveouts when the target knows the zero_extend will be implicit (e.g. ARM ldrb / ldrh) or folded (e.g. x86 movz). rdar://12771555 llvm-svn: 169536
* Remove unneeded function, since PR8156 was fixed over a year ago.Jakub Staszak2012-12-061-18/+1
| | | | llvm-svn: 169534
* Allow modifying an ImmutableMap without canonicalizing it immediately.Jordan Rose2012-12-061-5/+18
| | | | | | | | This is an alternative to the ImmutableMapRef interface where a factory should still be canonicalizing by default, but in certain cases an improvement can be made by delaying the canonicalization. llvm-svn: 169532
* Simplify code.Jakub Staszak2012-12-061-3/+1
| | | | llvm-svn: 169521
* Fix a bug in the code that merges consecutive stores. Previously we did notNadav Rotem2012-12-062-10/+37
| | | | | | | check if loads that happen in between stores alias with the first store in the chain, only with the second store onwards. llvm-svn: 169516
* MemorySanitizer.cpp: Suppress a warning. [-Wunused-variable]NAKAMURA Takumi2012-12-061-0/+1
| | | | llvm-svn: 169504
* [msan] Fix a typo in a comment.Evgeniy Stepanov2012-12-061-1/+1
| | | | llvm-svn: 169491
* [msan] Do not store origin for clean values.Evgeniy Stepanov2012-12-062-17/+83
| | | | | | | | | | | | | | | | | | Instead of unconditionally storing origin with every application store, only do this when the shadow of the stored value is != 0. This change also delays instrumentation of stores until after the walk over function's instructions, because adding new basic blocks confuses InstVisitor. We only keep 1 origin value per 4 bytes of application memory. This change fixes the bug when a store of a single clean byte wiped the origin for the whole 4-byte area. Since stores of uninitialized values are relatively uncommon, this change improves performance of track-origins mode by 5% median and by up to 47% on specs. llvm-svn: 169490
* s/getLowerBoundDefault/getDefaultLowerBound/ for consistency. Also put the ↵Bill Wendling2012-12-062-5/+7
| | | | | | more natural check first in the if-then statement. llvm-svn: 169486
* Handle non-default array bounds.Bill Wendling2012-12-064-15/+108
| | | | | | | | | Some languages, e.g. Ada and Pascal, allow you to specify that the array bounds are different from the default (1 in these cases). If we have a lower bound that's non-default, then we emit the lower bound. We also calculate the correct upper bound in those cases. llvm-svn: 169484
* Remove intrinsic specific instructions for (V)MOVQUmr with patterns pointing ↵Craig Topper2012-12-062-14/+9
| | | | | | to the normal instructions. llvm-svn: 169482
* Mark MOVDQ(A/U)rm as ReMaterializable. Mark all MOVDQ(A/U) instructions as ↵Craig Topper2012-12-062-4/+9
| | | | | | neverHasSideEffects. llvm-svn: 169477
* Properly fix the tes.Evan Cheng2012-12-061-2/+1
| | | | llvm-svn: 169464
* llvm/test/CodeGen/ARM/extload-knownzero.ll: Try to unbreak, to add -O0. I ↵NAKAMURA Takumi2012-12-061-1/+1
| | | | | | guess Chad expects fastisel here. llvm-svn: 169463
* Revert r169456, "change MCContext to work on the ↵NAKAMURA Takumi2012-12-063-47/+6
| | | | | | | | doInitialization/doFinalization model" It broke many builders. llvm-svn: 169462
* [arm fast-isel] Make the fast-isel implementation of memcpy respect alignment.Chad Rosier2012-12-062-14/+116
| | | | | | rdar://12821569 llvm-svn: 169460
* Let targets provide hooks that compute known zero and ones for any_extendEvan Cheng2012-12-068-7/+137
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and extload's. If they are implemented as zero-extend, or implicitly zero-extend, then this can enable more demanded bits optimizations. e.g. define void @foo(i16* %ptr, i32 %a) nounwind { entry: %tmp1 = icmp ult i32 %a, 100 br i1 %tmp1, label %bb1, label %bb2 bb1: %tmp2 = load i16* %ptr, align 2 br label %bb2 bb2: %tmp3 = phi i16 [ 0, %entry ], [ %tmp2, %bb1 ] %cmp = icmp ult i16 %tmp3, 24 br i1 %cmp, label %bb3, label %exit bb3: call void @bar() nounwind br label %exit exit: ret void } This compiles to the followings before: push {lr} mov r2, #0 cmp r1, #99 bhi LBB0_2 @ BB#1: @ %bb1 ldrh r2, [r0] LBB0_2: @ %bb2 uxth r0, r2 cmp r0, #23 bhi LBB0_4 @ BB#3: @ %bb3 bl _bar LBB0_4: @ %exit pop {lr} bx lr The uxth is not needed since ldrh implicitly zero-extend the high bits. With this change it's eliminated. rdar://12771555 llvm-svn: 169459
* change MCContext to work on the doInitialization/doFinalization modelPedro Artigas2012-12-063-6/+47
| | | | | | reviewed by Evan Cheng <evan.cheng@apple.com> llvm-svn: 169456
OpenPOWER on IntegriCloud