summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Classic JIT is still being supported by MIPS, along with MCJIT.Akira Hatanaka2012-12-033-11/+24
| | | | | | | | | This change adds endian-awareness to MipsJITInfo and emitWordLE in MipsCodeEmitter has become emitWord now to support both endianness. Patch by Petar Jovanovic. llvm-svn: 169177
* Minor tweaking to SmallVector static size.Michael Ilseman2012-12-031-1/+1
| | | | llvm-svn: 169176
* minor renaming, documentation and cleanups.Nadav Rotem2012-12-031-25/+21
| | | | llvm-svn: 169175
* Functions in MipsCodeEmitter.cpp that expand unaligned loads/stores are deadAkira Hatanaka2012-12-031-103/+0
| | | | | | | | code. Removing it. Patch by Petar Jovanovic. llvm-svn: 169174
* Use the new getRegAllocationHints() hook from AllocationOrder.Jakob Stoklund Olesen2012-12-032-79/+49
| | | | | | | This simplifies the hinting code quite a bit while making the targets easier to write at the same time. llvm-svn: 169173
* constify the cost APINadav Rotem2012-12-031-7/+7
| | | | llvm-svn: 169172
* IF-conversion: teach the cost-model how to grade if-converted loops.Nadav Rotem2012-12-031-15/+26
| | | | llvm-svn: 169171
* Implement ARMBaseRegisterInfo::getRegAllocationHints().Jakob Stoklund Olesen2012-12-032-0/+65
| | | | | | | This provides the same functionality as getRawAllocationOrder() for the even/odd hints, but without the many constant register arrays. llvm-svn: 169169
* Define store instructions with base+immediate offset addressing modeJyotsna Verma2012-12-032-185/+78
| | | | | | using multiclass. llvm-svn: 169168
* [Support] Make FileOutputBuffer work on Windows.Michael J. Spencer2012-12-031-55/+27
| | | | llvm-svn: 169167
* [Support][FileSystem] Fix open mode in resize_file on Windows.Michael J. Spencer2012-12-031-1/+1
| | | | llvm-svn: 169166
* Revert the header sort on this file.Michael J. Spencer2012-12-031-1/+1
| | | | | | | | "Windows.h" includes <Windows.h> which defines a bunch of stuff it shouldn't (even with all the restriction macros). We have no control over this file, so make it's scope as small as possible. llvm-svn: 169165
* moves doInitialization and doFinalization to the Pass class and removes some ↵Pedro Artigas2012-12-033-35/+6
| | | | | | | | unreachable code in MachineModuleInfo reviewed by Evan Cheng <evan.cheng@apple.com> llvm-svn: 169164
* Now that we have a basic if-conversion infrastructure we can rename theNadav Rotem2012-12-031-18/+18
| | | | | | "single basic block loop vectorizer" to "innermost loop vectorizer". llvm-svn: 169158
* Since this SmallVector immediately grows on the next line, don't waste stack ↵Michael Ilseman2012-12-031-1/+1
| | | | | | space. SmallVector is still needed due to existing APIs growing their arguments llvm-svn: 169157
* Add a new hook for providing register allocator hints more flexibly.Jakob Stoklund Olesen2012-12-031-0/+38
| | | | | | | | | | | | | | | | | | The TargetRegisterInfo::getRegAllocationHints() function is going to replace the existing mechanisms for providing target-dependent hints to the register allocator: ResolveRegAllocHint() and getRawAllocationOrder(). The new hook is more flexible because it allows the target to provide multiple preferred candidate registers for each virtual register, and it is easier to use because targets are not required to return a reference to a constant array like getRawAllocationOrder(). An optional VirtRegMap argument can be used to provide target-dependent hints that depend on the provisional assignments of other virtual registers. llvm-svn: 169154
* Define load instructions with base+immediate offset addressing modeJyotsna Verma2012-12-031-203/+73
| | | | | | using multiclass. llvm-svn: 169153
* Add initial support for IF-conversion. This patch implements the first 1/3,Nadav Rotem2012-12-031-134/+253
| | | | | | | | which is the legality of the if-conversion transformation. The next step is to implement the cost-model for the if-converted code as well as the vectorization itself. llvm-svn: 169152
* Define unsigned const-ext predicates.Jyotsna Verma2012-12-031-0/+128
| | | | llvm-svn: 169149
* Removing unnecessary 'else' statement from the predicates defined in ↵Jyotsna Verma2012-12-031-48/+12
| | | | | | HexagonOperards.td. llvm-svn: 169148
* Add 'getInt64Field()' method to get the signed integer instead of unsigned.Bill Wendling2012-12-031-0/+12
| | | | llvm-svn: 169145
* ASan: add blacklist file to ASan pass options. Clang patch for this will follow.Alexey Samsonov2012-12-031-13/+22
| | | | llvm-svn: 169143
* Fix PR12942: Allow two CUs to be generated from the same source file.Eli Bendersky2012-12-034-24/+33
| | | | | | Thanks Eric for the review. llvm-svn: 169142
* Teach the jump threading optimization to stop scanning the basic block when ↵Nadav Rotem2012-12-031-5/+10
| | | | | | calculating the cost after passing the threshold. llvm-svn: 169135
* Revert r169039, "Aggregate pass execution time report by pass ID instead of ↵Jakob Stoklund Olesen2012-12-031-3/+3
| | | | | | pass instance." llvm-svn: 169134
* Use the new script to sort the includes of every file under lib.Chandler Carruth2012-12-03582-2655/+2627
| | | | | | | | | | | | | | | | | Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented. Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =] llvm-svn: 169131
* Remove some buggy and apparantly unnecessary code from SROA.Chandler Carruth2012-12-031-25/+6
| | | | | | | | | | | | | | | | | | | | | | | | | The partitioning logic attempted to handle uses of an alloca with an offset starting before the alloca so long as the use had some overlap with the alloca itself. However, there was a bug where we tested '(uint64_t)Offset >= AllocSize' without first checking whether 'Offset' was positive. As a consequence, essentially every negative offset (that is, starting *before* the alloca does) would be thrown out, even if it was overlapping. The subsequent code to throw out negative offsets which were actually non-overlapping was essentially dead. The code to *handle* overlapping negative offsets was actually dead! I've just removed all of this, and taught SROA to discard any uses which start prior to the alloca from the beginning. It has the lovely property of simplifying the code. =] All the tests still pass, and in fact no new tests are needed as this is already covered by our testsuite. Fixing the code so that negative offsets work the way the comments indicate they were supposed to work causes regressions. That's how I found this. Anyways, this is all progress in the correct direction -- tightening up SROA to be maximally aggressive. Some day, I really hope to turn out-of-bounds accesses to an alloca into 'unreachable'. llvm-svn: 169120
* fix stats for added checksNuno Lopes2012-12-031-1/+1
| | | | llvm-svn: 169119
* Define signed const-ext predicates.Jyotsna Verma2012-12-031-0/+131
| | | | llvm-svn: 169117
* Allow merging multiple store sequences on the same chain.Nadav Rotem2012-12-021-2/+15
| | | | llvm-svn: 169111
* SROA: Avoid struct and array types early to avoid creating an overly large ↵Benjamin Kramer2012-12-011-0/+3
| | | | | | | | | | integer type. Fixes PR14465. Differential Revision: http://llvm-reviews.chandlerc.com/D148 llvm-svn: 169084
* Revert previous check in r168581, r169079 as they are still in code review ↵Zhou Sheng2012-12-012-34/+4
| | | | | | status. llvm-svn: 169083
* The patch is to improve the memory footprint of pass GlobalOpt. Zhou Sheng2012-12-011-4/+22
| | | | | | | | | | | | Also check in a case to repeat the issue, on which 'opt -globalopt' consumes 1.6GB memory. The big memory footprint cause is that current GlobalOpt one by one hoists and stores the leaf element constant into the global array, in each iteration, it recreates the global array initializer constant and leave the old initializer alone. This may result in many obsolete constants left. For example: we have global array @rom = global [16 x i32] zeroinitializer After the first element value is hoisted and installed: @rom = global [16 x i32] [ 1, 0, 0, ... ] After the second element value is installed: @rom = global [16 x 32] [ 1, 2, 0, 0, ... ] // here the previous initializer is obsolete ... When the transform is done, we have 15 obsolete initializers left useless. llvm-svn: 169079
* VMCore/DebugInfo.cpp: DICompileUnit::getSubprograms(): Check numOperands().NAKAMURA Takumi2012-12-011-2/+3
| | | | | | | 2012-11-30-misched-dbg.ll had crashed. Then (MDNode)N was "!{}". I am not sure it would be ill-formed or not. llvm-svn: 169074
* MC/AsmParser: Avoid unnecessary use of SourceMgr::FindBufferForLoc()Daniel Dunbar2012-12-011-7/+21
| | | | | | | | - Each macro instantiation introduces a new buffer, and FindBufferForLoc() is linear, so previously macro instantiation could be N^2 for some pathological inputs. llvm-svn: 169073
* misched: Fix RegisterPressureTracker handling of DebugVals.Andrew Trick2012-12-013-19/+25
| | | | | | | Assertion failed: (TopRPTracker.getPos() == RegionBegin && "bad initial Top tracker"). rdar://12790302. llvm-svn: 169072
* misched: Fix the DAG builder to handle an undef operand at ExitSU.Andrew Trick2012-12-011-1/+2
| | | | | | | Assertion failed: (VNI && "No value to read by operand") rdar://12790267. llvm-svn: 169071
* misched: Fix LiveInterval update to better handle DebugVal.Andrew Trick2012-12-011-1/+5
| | | | | | | Assertion failed: (itr != mi2iMap.end() && "Instruction not found in maps.") rdar://12777252. llvm-svn: 169070
* misched: fix RegionBegin when DebugValues get shuffled to the top.Andrew Trick2012-12-011-0/+2
| | | | | | | | assert (RemainingInstrs == 0 && "Instruction count mismatch!") rdar://12776937. llvm-svn: 169069
* Simplify REG_SEQUENCE lowering.Jakob Stoklund Olesen2012-12-011-187/+69
| | | | | | | | | | | The TwoAddressInstructionPass takes the machine code out of SSA form by expanding REG_SEQUENCE instructions into copies. It is no longer necessary to rewrite the registers used by a REG_SEQUENCE instruction because the new coalescer algorithm can do it now. REG_SEQUENCE is just converted to a sequence of sub-register copies now. llvm-svn: 169067
* Add some first skeleton work for the DWARF5 Fission proposal. EmitEric Christopher2012-11-302-8/+119
| | | | | | | | | part of the compile unit CU and start separating out information into the various sections that will be pulled out later. WIP. llvm-svn: 169061
* Convert COPY instructions into KILLs if they have implicit defs.Jakob Stoklund Olesen2012-11-301-3/+17
| | | | | | | | | | | MachineCopyPropagation doesn't understand super-register liveness well enough to be able to remove implicit defs of super-registers. This fixes a problem in ARM/2012-01-26-CopyPropKills.ll that is exposed by an future TwoAddressInstructionPass change. The KILL instructions are removed before the machine code is emitted. llvm-svn: 169060
* Add support for fission attributes/forms/operations -> string.Eric Christopher2012-11-301-0/+16
| | | | llvm-svn: 169056
* reversed the logic of the log2 detection routine to reduce the number of ↵Pedro Artigas2012-11-301-25/+29
| | | | | | nested ifs llvm-svn: 169049
* minor cleanupsNadav Rotem2012-11-301-8/+3
| | | | llvm-svn: 169048
* Fix a bug in APFloat.cpp: declare APFloat after fltSemantics itAlexey Samsonov2012-11-301-1/+3
| | | | | | | | | | | uses. APFloat::convert() takes the pointer to the fltSemantics variable, which is later accessed it in ~APFloat() desctructor. That is, semantics must still be alive at the moment we delete APFloat. Found by experimental AddressSanitizer use-after-scope checker. llvm-svn: 169047
* Replace r168930 with a more reasonable patch.Bill Wendling2012-11-303-78/+9
| | | | | | | | | | | The original patch removed a bunch of code that the SjLjEHPrepare pass placed into the entry block if all of the landing pads were removed during the CodeGenPrepare class. The more natural way of doing things is to run the CGP *before* we run the SjLjEHPrepare pass. Make it so! llvm-svn: 169044
* Addresses many style issues with prior checkin (r169025)Pedro Artigas2012-11-301-58/+44
| | | | llvm-svn: 169043
* Aggregate pass execution time report by pass ID instead of pass instance.Jakob Stoklund Olesen2012-11-301-3/+3
| | | | | | | This avoids unidentified duplicates in the pass execution time report when a pass runs more than once in the pass manager pipeline. llvm-svn: 169039
* Add fast math inst combine X*log2(Y*0.5)-->X*log2(Y)-XPedro Artigas2012-11-301-0/+77
| | | | | | reviewed by Michael Ilseman <milseman@apple.com> llvm-svn: 169025
OpenPOWER on IntegriCloud