summaryrefslogtreecommitdiffstats
path: root/llvm/include
Commit message (Collapse)AuthorAgeFilesLines
* Use forward declarations and move TargetELFWriterInfo impl to a new file.Bruno Cardoso Lopes2009-06-111-14/+6
| | | | llvm-svn: 73209
* Remove unused parameter warnings.Bill Wendling2009-06-111-1/+1
| | | | llvm-svn: 73202
* Support for ELF VisibilityBruno Cardoso Lopes2009-06-111-1/+18
| | | | | | | | Emission for globals, using the correct data sections Function alignment can be computed for each target using TargetELFWriterInfo Some small fixes llvm-svn: 73201
* Cosmetic changes to parameter attribute verification.Duncan Sands2009-06-111-2/+3
| | | | llvm-svn: 73188
* Implement and use new method Function::hasAddressTaken().Jay Foad2009-06-101-0/+4
| | | | llvm-svn: 73164
* Remove warnings: no newline at end of file.Sanjiv Gupta2009-06-101-1/+2
| | | | llvm-svn: 73156
* Add the beginnings of an implementatation of lazy liveness analysis, based ↵Owen Anderson2009-06-091-0/+62
| | | | | | | | on "Fast Liveness Checking for SSA-form Programs" by Boissinot, et al. This is still very early, hasn't been tested, and is not yet well documented. More to come soon. llvm-svn: 73141
* Change IndexedModeAction representation.David Greene2009-06-091-22/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the IndexedModeAction representation to remove the limitation on the number of value types in MVT. This limitation prevents us from specifying AVX types. Prior to this change IndexedModActions was represented as follows... uint64_t IndexedModeActions[2][ISD::LAST_INDEXED_MODE]; the first dimension was used to represent loads, then stores. This imposed a limitation of 32 on the number of value types that could be handled with this method. The value type was used to shift the two bits into and out of the approprate bits in the uint64_t. With this change the array is now represented as ... uint8_t IndexedModeActions[MVT::LAST_VALUETYPE][2][ISD::LAST_INDEXED_MODE]; Takes more space but removes the limitation on MVT::LAST_VALUETYPE. The first dimension is now the value_type for the reference. The second dimension is the load [0] vs. store[1]. The third dimension represents the various modes for load store. Accesses are now direct, no shifting or masking. There are other limitations that need to be removed, so that MVT::LAST_VALUETYPE can be greater than 32. This is merely the first step towards that goal. llvm-svn: 73104
* Oops, didn't mean to commit 73102 yet. Revert it.David Greene2009-06-081-21/+22
| | | | llvm-svn: 73103
* Change IndexedModeAction representation.David Greene2009-06-081-22/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the IndexedModeAction representation to remove the limitation on the number of value types in MVT. This limitation prevents us from specifying AVX types. Prior to this change IndexedModActions was represented as follows... uint64_t IndexedModeActions[2][ISD::LAST_INDEXED_MODE]; the first dimension was used to represent loads, then stores. This imposed a limitation of 32 on the number of value types that could be handled with this method. The value type was used to shift the two bits into and out of the approprate bits in the uint64_t. With this change the array is now represented as ... uint8_t IndexedModeActions[MVT::LAST_VALUETYPE][2][ISD::LAST_INDEXED_MODE]; Takes more space but removes the limitation on MVT::LAST_VALUETYPE. The first dimension is now the value_type for the reference. The second dimension is the load [0] vs. store[1]. The third dimension represents the various modes for load store. Accesses are now direct, no shifting or masking. There are other limitations that need to be removed, so that MVT::LAST_VALUETYPE can be greater than 32. This is merely the first step towards that goal. llvm-svn: 73102
* The attached patches implement most of the ARM AAPCS-VFP hard floatAnton Korobeynikov2009-06-082-1/+17
| | | | | | | | | ABI. The missing piece is support for putting "homogeneous aggregates" into registers. Patch by Sandeep Patel! llvm-svn: 73095
* Make IntInits and ListInits typed. This helps deduce types of !if andDavid Greene2009-06-081-0/+1
| | | | | | | | other operators. For the rare cases where a list type cannot be deduced, provide a []<type> syntax, where <type> is the list element type. llvm-svn: 73078
* Simple ELF32/64 binary files can now be emitted for x86 and x86_64 withoutBruno Cardoso Lopes2009-06-071-1/+12
| | | | | | relocation sections. llvm-svn: 73038
* Create FunctionType::isValidArgumentType to go along with isValidReturnType.Nick Lewycky2009-06-072-1/+21
| | | | | | | | | | | | | | | Also create isValidElementType for ArrayType, PointerType, StructType and VectorType. Make LLParser use them. This closes up some holes like an assertion failure on: %x = type {label} but largely doesn't change any semantics. The only thing we accept now which we didn't before is vectors of opaque type such as "<4 x opaque>". The opaque can be resolved to an int or float when linking. llvm-svn: 73016
* Rename UnknownValue to CouldNotCompute, since it holds an instance ofDan Gohman2009-06-061-7/+7
| | | | | | SCEVCouldNotCompute, and not SCEVUnknown. llvm-svn: 72999
* Remove elf specific info from ELFWriter.h to Elf.h. Code cleanup and more ↵Bruno Cardoso Lopes2009-06-061-2/+16
| | | | | | comments added llvm-svn: 72982
* More portability checks for CMake's config.h.Douglas Gregor2009-06-051-4/+4
| | | | llvm-svn: 72975
* Add new function attribute - noimplicitfloatDevang Patel2009-06-053-8/+5
| | | | | | | Update code generator to use this attribute and remove NoImplicitFloat target option. Update llc to set this attribute when -no-implicit-float command line option is used. llvm-svn: 72959
* Adapt the x86 build_vector dagcombine to the current state of the legalizer.Nate Begeman2009-06-051-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | build vectors with i64 elements will only appear on 32b x86 before legalize. Since vector widening occurs during legalize, and produces i64 build_vector elements, the dag combiner is never run on these before legalize splits them into 32b elements. Teach the build_vector dag combine in x86 back end to recognize consecutive loads producing the low part of the vector. Convert the two uses of TLI's consecutive load recognizer to pass LoadSDNodes since that was required implicitly. Add a testcase for the transform. Old: subl $28, %esp movl 32(%esp), %eax movl 4(%eax), %ecx movl %ecx, 4(%esp) movl (%eax), %eax movl %eax, (%esp) movaps (%esp), %xmm0 pmovzxwd %xmm0, %xmm0 movl 36(%esp), %eax movaps %xmm0, (%eax) addl $28, %esp ret New: movl 4(%esp), %eax pmovzxwd (%eax), %xmm0 movl 8(%esp), %eax movaps %xmm0, (%eax) ret llvm-svn: 72957
* Move SCEVExpander::getOrInsertCanonicalInductionVariable out of line.Dan Gohman2009-06-051-6/+1
| | | | llvm-svn: 72949
* Split the Add, Sub, and Mul instruction opcodes into separateDan Gohman2009-06-048-57/+171
| | | | | | | | | | | | | | | integer and floating-point opcodes, introducing FAdd, FSub, and FMul. For now, the AsmParser, BitcodeReader, and IRBuilder all preserve backwards compatability, and the Core LLVM APIs preserve backwards compatibility for IR producers. Most front-ends won't need to change immediately. This implements the first step of the plan outlined here: http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt llvm-svn: 72897
* Add new function attribute - noredzone. Devang Patel2009-06-042-5/+3
| | | | | | | Update code generator to use this attribute and remove DisableRedZone target option. Update llc to set this attribute when -disable-red-zone command line option is used. llvm-svn: 72894
* Properly detect malloc_zone_statistics in CMake build systemDouglas Gregor2009-06-041-1/+1
| | | | llvm-svn: 72873
* Fix comments.Torok Edwin2009-06-041-2/+1
| | | | llvm-svn: 72858
* Add support for outputting ANSI colors to raw_fd_ostream.Torok Edwin2009-06-042-0/+60
| | | | llvm-svn: 72854
* <rdar://problem/6940611> libLTO.dylib needs to let linker specify path to ↵Nick Kledzik2009-06-041-0/+10
| | | | | | | | | | | assembler Add lto_codegen_set_assembler_path() API which allows the linker to specify the path to the assembler tool to run. When assembler is used (instead of compiler) different command line options are used. Add LTO_API_VERSION #define so clients (linkers) can conditionalize use of new APIs. llvm-svn: 72823
* Use uint8_t and int32_t in {JIT,Machine}CodeEmitersBruno Cardoso Lopes2009-06-043-82/+80
| | | | llvm-svn: 72821
* Change LTO to run the global opt pass twice.Daniel Dunbar2009-06-031-8/+2
| | | | | | | | | | | | | | | | | | | | | - This matches llvm-ld. It took a bit of archeology to figure out what the right thing to do was (whether this was intentionally added or intentionally removed). My final conclusion is that Chris added this intentionally here: http://llvm.org/viewvc/llvm-project?view=rev&revision=16913 but the changes weren't propogated to llvm-ld until here: http://llvm.org/viewvc/llvm-project?view=rev&revision=34058 which was after lto.cpp had been cloned off (of llvm-ld), here: http://llvm.org/viewvc/llvm-project?view=rev&revision=29494 From the commit message, it looks like the motivation for running global opt again is because we ran it prior to inlining. Based on that I updated the comment and also only run the pass if we actually ran the inliner. Chris, please review. llvm-svn: 72811
* PR4317: Handle splits where the new block is unreachable correctly in Eli Friedman2009-06-031-2/+7
| | | | | | DominatorTreeBase::Split. llvm-svn: 72810
* Add createStandardLTOPasses to StandardPasses.h, and move lto and llvm-ld over.Daniel Dunbar2009-06-031-0/+101
| | | | | | | - I know it sounds crazy, but I think all the pass lists are now coalesced into StandardPasses.h. llvm-svn: 72805
* Remove some silly code.Daniel Dunbar2009-06-031-1/+1
| | | | llvm-svn: 72788
* Add StandardPasses.h which embeds the standard compilation passes shared byDaniel Dunbar2009-06-031-0/+149
| | | | | | | clang/llvm-gcc. - Implemented as inline functions for linking simplicity. llvm-svn: 72786
* Revert 72650Bruno Cardoso Lopes2009-06-033-80/+82
| | | | llvm-svn: 72783
* Change TargetFolder's TD member from a reference to aDan Gohman2009-06-031-5/+7
| | | | | | | pointer, now that ConstantFoldConstantExpression can accept a null TargetData pointer. llvm-svn: 72744
* Change ConstantFoldConstantExpression to accept a nullDan Gohman2009-06-021-1/+1
| | | | | | | | | | | TargetData pointer. The only thing it's used for are calls to ConstantFoldCompareInstOperands and ConstantFoldInstOperands, which both already accept a null TargetData pointer. This makes ConstantFoldConstantExpression easier to use in clients where TargetData is optional. llvm-svn: 72741
* Delete an unnecessary forward declaration.Dan Gohman2009-06-021-1/+0
| | | | llvm-svn: 72740
* fix build on VC++2k8.Torok Edwin2009-06-021-4/+4
| | | | llvm-svn: 72736
* Simplify assertion message to avoid confusion.Devang Patel2009-06-021-17/+15
| | | | llvm-svn: 72731
* Update to in-place spilling framework. Includes live interval scaling and ↵Lang Hames2009-06-023-10/+39
| | | | | | trivial rewriter. llvm-svn: 72729
* Revert 72707 and 72709, for the moment.Dale Johannesen2009-06-024-23/+10
| | | | llvm-svn: 72712
* Make the implicit inputs and outputs of target-independentDale Johannesen2009-06-014-10/+23
| | | | | | | | | | | | | | | | | | | | | | | | ADDC/ADDE use MVT::i1 (later, whatever it gets legalized to) instead of MVT::Flag. Remove CARRY_FALSE in favor of 0; adjust all target-independent code to use this format. Most targets will still produce a Flag-setting target-dependent version when selection is done. X86 is converted to use i32 instead, which means TableGen needs to produce different code in xxxGenDAGISel.inc. This keys off the new supportsHasI1 bit in xxxInstrInfo, currently set only for X86; in principle this is temporary and should go away when all other targets have been converted. All relevant X86 instruction patterns are modified to represent setting and using EFLAGS explicitly. The same can be done on other targets. The immediate behavior change is that an ADC/ADD pair are no longer tightly coupled in the X86 scheduler; they can be separated by instructions that don't clobber the flags (MOV). I will soon add some peephole optimizations based on using other instructions that set the flags to feed into ADC. llvm-svn: 72707
* Dcoument that the opauque value used to construct QNaNs is truncatedMike Stump2009-06-011-1/+1
| | | | | | as necessary. llvm-svn: 72702
* Fix the name of the function in this comment.Dan Gohman2009-05-311-2/+2
| | | | llvm-svn: 72666
* Use uint8_t and int32_t in {JIT,Machine}CodeEmitersBruno Cardoso Lopes2009-05-303-82/+80
| | | | llvm-svn: 72650
* Add AMD64 elf machine typeBruno Cardoso Lopes2009-05-301-1/+2
| | | | llvm-svn: 72635
* First patch in the direction of splitting MachineCodeEmitter in two subclasses:Bruno Cardoso Lopes2009-05-303-8/+388
| | | | | | JITCodeEmitter and ObjectCodeEmitter. No functional changes yet. Patch by Aaron Gray llvm-svn: 72631
* Add some documentation.Mike Stump2009-05-301-1/+6
| | | | llvm-svn: 72622
* Give embedded metadata its own type instead of relying on EmptyStructTy.Nick Lewycky2009-05-304-14/+20
| | | | llvm-svn: 72610
* Add support for letting the client choose different flavors of NaNs. ↵Mike Stump2009-05-301-4/+5
| | | | | | | | Testcase to be added in clang. llvm-svn: 72606
* Untabify.Bill Wendling2009-05-302-7/+7
| | | | llvm-svn: 72603
OpenPOWER on IntegriCloud