summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Avoid a hard coded constant.Rafael Espindola2009-04-081-1/+1
| | | | llvm-svn: 68603
* Emit .line debug directives for stoppoints. The debug location is retrieved ↵Sanjiv Gupta2009-04-085-24/+19
| | | | | | by the MachineInstr itself, rather than by custom handling the DBG_STOPPOINT nodes. llvm-svn: 68602
* Instcombine should not promote whole computation trees to "strange"Chris Lattner2009-04-081-0/+20
| | | | | | | | | | | | | integer types, unless they are already strange. This prevents it from turning the code produced by SROA into crazy libcalls and stuff that the code generator can't handle. In the attached example, the result was an i96 multiply that caused the x86 backend to assert. Note that if TargetData had an idea of what the legal types are for a target that this could be used to stop instcombine from introducing i64 muls, as Scott wanted. llvm-svn: 68598
* Handle indirect function calls.Sanjiv Gupta2009-04-085-89/+346
| | | | | | | Every function has the address of its frame in the beginning of code section. The frame address is retrieved and used to pass arguments. llvm-svn: 68597
* disable this code for now, re-breaking PR2975, but fixingChris Lattner2009-04-081-3/+3
| | | | | | a testcase I'm about to attach to that pr. llvm-svn: 68592
* Remove AllowInverse: it leaks memory and is not the rightChris Lattner2009-04-081-21/+0
| | | | | | abstraction for CommandLine. llvm-svn: 68588
* change printStringChar to emit characters as unsigned char instead of char,Chris Lattner2009-04-081-9/+5
| | | | | | | | | | | avoiding sign extension for the top octet. For "negative" chars, we'd print stuff like: .asciz "\702... now we print: .asciz "\302... llvm-svn: 68577
* Implement support for using modeling implicit-zero-extension on x86-64Dan Gohman2009-04-089-62/+263
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | with SUBREG_TO_REG, teach SimpleRegisterCoalescing to coalesce SUBREG_TO_REG instructions (which are similar to INSERT_SUBREG instructions), and teach the DAGCombiner to take advantage of this on targets which support it. This eliminates many redundant zero-extension operations on x86-64. This adds a new TargetLowering hook, isZExtFree. It's similar to isTruncateFree, except it only applies to actual definitions, and not no-op truncates which may not zero the high bits. Also, this adds a new optimization to SimplifyDemandedBits: transform operations like x+y into (zext (add (trunc x), (trunc y))) on targets where all the casts are no-ops. In contexts where the high part of the add is explicitly masked off, this allows the mask operation to be eliminated. Fix the DAGCombiner to avoid undoing these transformations to eliminate casts on targets where the casts are no-ops. Also, this adds a new two-address lowering heuristic. Since two-address lowering runs before coalescing, it helps to be able to look through copies when deciding whether commuting and/or three-address conversion are profitable. Also, fix a bug in LiveInterval::MergeInClobberRanges. It didn't handle the case that a clobber range extended both before and beyond an existing live range. In that case, multiple live ranges need to be added. This was exposed by the new subreg coalescing code. Remove 2008-05-06-SpillerBug.ll. It was bugpoint-reduced, and the spiller behavior it was looking for no longer occurrs with the new instruction selection. llvm-svn: 68576
* Revert prev. patch for now.Devang Patel2009-04-071-4/+6
| | | | llvm-svn: 68569
* Temporarily revert r68552. This was causing a failure in the self-hosting LLVMBill Wendling2009-04-0717-231/+193
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | builds. --- Reverse-merging (from foreign repository) r68552 into '.': U test/CodeGen/X86/tls8.ll U test/CodeGen/X86/tls10.ll U test/CodeGen/X86/tls2.ll U test/CodeGen/X86/tls6.ll U lib/Target/X86/X86Instr64bit.td U lib/Target/X86/X86InstrSSE.td U lib/Target/X86/X86InstrInfo.td U lib/Target/X86/X86RegisterInfo.cpp U lib/Target/X86/X86ISelLowering.cpp U lib/Target/X86/X86CodeEmitter.cpp U lib/Target/X86/X86FastISel.cpp U lib/Target/X86/X86InstrInfo.h U lib/Target/X86/X86ISelDAGToDAG.cpp U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h U lib/Target/X86/X86ISelLowering.h U lib/Target/X86/X86InstrInfo.cpp U lib/Target/X86/X86InstrBuilder.h U lib/Target/X86/X86RegisterInfo.td llvm-svn: 68560
* Right now DBG_LABEL are required for llvm.dbg.region_start and ↵Devang Patel2009-04-071-6/+4
| | | | | | llvm.dbg.region_end in non-fast mode also. llvm-svn: 68559
* Reduce code duplication on the TLS implementation.Rafael Espindola2009-04-0717-193/+231
| | | | | | | | | | This introduces a small regression on the generated code quality in the case we are just computing addresses, not loading values. Will work on it and on X86-64 support. llvm-svn: 68552
* Don't attempt to handle aggregate argument values in FastISel; letDan Gohman2009-04-071-1/+5
| | | | | | SelectionDAG do those. This fixes PR3955. llvm-svn: 68546
* PR2985 / <rdar://problem/6584986>Jim Grosbach2009-04-077-194/+318
| | | | | | | | | | When compiling in Thumb mode, only the low (R0-R7) registers are available for most instructions. Breaking the low registers into a new register class handles this. Uses of R12, SP, etc, are handled explicitly where needed with copies inserted to move results into low registers where the rest of the code generator can deal with them. llvm-svn: 68545
* fix style.Torok Edwin2009-04-071-3/+3
| | | | llvm-svn: 68542
* Another attempt at fixing PR2975.Torok Edwin2009-04-071-0/+25
| | | | | | Types can have references to eachother, so we can't just call destroy on them. llvm-svn: 68523
* fix rdar://6762290, a crash compiling cxx filt with clang.Chris Lattner2009-04-071-3/+4
| | | | llvm-svn: 68500
* remove empty sectionChris Lattner2009-04-071-4/+0
| | | | llvm-svn: 68485
* Handle 'a' modifier in ARM inline assembly.Bob Wilson2009-04-061-0/+3
| | | | | | Patch by Richard Pennington. llvm-svn: 68464
* revert r68457, its crashing in make check.Torok Edwin2009-04-061-16/+0
| | | | llvm-svn: 68459
* Teach llvm-bcanalyzer to skip over the header we use on LLVM IR files.Chris Lattner2009-04-061-45/+2
| | | | llvm-svn: 68458
* fix (part of) memory leak on shutdown. See PR2975.Torok Edwin2009-04-061-0/+16
| | | | llvm-svn: 68457
* Let the strcat optimizer return the pointer to the start of the buffer,Ed Schouten2009-04-061-2/+2
| | | | | | | | | instead of the place where it started to perform the string copy. - PR3661 - Patch by Benjamin Kramer! llvm-svn: 68443
* Map stack based frameindices for spills to zero based indices that can be ↵Sanjiv Gupta2009-04-065-33/+62
| | | | | | accessed based on an external symbol defining the location of temporary data for a function. For example: we have spill slots addressed as foo.tmp + 0, foo.tmp + 1 etc. llvm-svn: 68442
* Remove bogus include.Nick Lewycky2009-04-041-1/+0
| | | | llvm-svn: 68421
* Add support for embedded metadata to LLVM. This introduces two new types ofNick Lewycky2009-04-0410-6/+262
| | | | | | | | Constant, MDString and MDNode which can only be used by globals with a name that starts with "llvm." or as arguments to a function with the same naming restriction. llvm-svn: 68420
* Wrap some lines to fix indentation problems.Bob Wilson2009-04-031-30/+36
| | | | llvm-svn: 68405
* Fix some comments.Bob Wilson2009-04-031-5/+5
| | | | llvm-svn: 68404
* Fix a TargetLowering optimization so that it doesn't duplicateDan Gohman2009-04-031-0/+1
| | | | | | loads when an input node has multiple uses. llvm-svn: 68398
* CMake: removed IA64AsmPrinter.cpp from lib/Target/IA64/CMakeLists.txtOscar Fuentes2009-04-031-1/+0
| | | | llvm-svn: 68384
* Separate MIPS asmprinterAnton Korobeynikov2009-04-035-3/+33
| | | | llvm-svn: 68383
* Fix target library nameAnton Korobeynikov2009-04-031-1/+1
| | | | llvm-svn: 68382
* Fix commentAnton Korobeynikov2009-04-031-1/+1
| | | | llvm-svn: 68381
* Move IA64 asmprinter to separate libraryAnton Korobeynikov2009-04-034-1/+32
| | | | llvm-svn: 68380
* Added a x86 dag combine to increase the chances to use aMon P Wang2009-04-031-2/+30
| | | | | | movq for v2i64 on x86-32. llvm-svn: 68368
* Delete ISD::INSERT_SUBREG and ISD::EXTRACT_SUBREG, which are unused.Dan Gohman2009-04-032-20/+0
| | | | | | | Note that these are distinct from TargetInstrInfo::INSERT_SUBREG and TargetInstrInfo::EXTRACT_SUBREG, which are used. llvm-svn: 68355
* use higher level APIs.Chris Lattner2009-04-031-8/+6
| | | | llvm-svn: 68351
* Fixed build warnings.Sanjiv Gupta2009-04-021-2/+0
| | | | llvm-svn: 68333
* To convert the StopPoint insn into an assembler directive by ISel, we need ↵Sanjiv Gupta2009-04-025-0/+35
| | | | | | to have access to the line number field. So we convert that info as an operand by custom handling DBG_STOPPOINT in legalize. llvm-svn: 68329
* Params are not being generated as static globals now. The caller passes them ↵Sanjiv Gupta2009-04-025-53/+133
| | | | | | onto the callee's stack directly and the callee loads the argvals from its own stack. Clang generated frameindexes validatd by recalculating the stack as if all frameindexes represent 1-byte slots. llvm-svn: 68327
* Fix build on Linux.Mikhail Glushenkov2009-04-021-0/+1
| | | | llvm-svn: 68269
* Reapply r68211, with the miscompilations it caused fixed.Owen Anderson2009-04-011-9/+30
| | | | llvm-svn: 68262
* Clean up pass manager cache after each run.Devang Patel2009-04-011-0/+14
| | | | llvm-svn: 68254
* silence warning in release-asserts build.Chris Lattner2009-04-011-4/+2
| | | | llvm-svn: 68253
* Add llvm::Triple class for abstracting access to target triples.Daniel Dunbar2009-04-011-0/+183
| | | | | | | | | | - The code is silly, I'm just amusing myself. Rewrite to be efficient if you like. :) Also, if you wish to debate the proper names of the triple components I'm all ears. llvm-svn: 68252
* Use CHAR_BIT instead of hard-coding 8 in several places where itDan Gohman2009-04-014-7/+8
| | | | | | | is appropriate. This helps visually differentiate host-oriented calculations from target-oriented calculations. llvm-svn: 68227
* Use LLVM type names instead of C type names in comments, to beDan Gohman2009-04-011-5/+5
| | | | | | less ambiguous and less C-specific. llvm-svn: 68219
* Fix PR3862: Recognize some ARM-specific constraints for immediates in inlineBob Wilson2009-04-012-0/+145
| | | | | | assembly. llvm-svn: 68218
* Revert r68172. It caused regressions inDan Gohman2009-04-011-38/+10
| | | | | | | | Applications/Burg/burg Applications/ClamAV/clamscan and many other tests. llvm-svn: 68211
* hopefully fix an apparent build error on windows.Chris Lattner2009-04-011-0/+1
| | | | llvm-svn: 68175
OpenPOWER on IntegriCloud