summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Implement Thumb2 ldr.Evan Cheng2009-06-2913-163/+489
| | | | | | After much back and forth, I decided to deviate from ARM design and split LDR into 4 instructions (r + imm12, r + imm8, r + r << imm12, constantpool). The advantage of this is 1) it follows the latest ARM technical manual, and 2) makes it easier to reduce the width of the instruction later. The down side is this creates more inconsistency between the two sub-targets. We should split ARM LDR instruction in a similar fashion later. I've added a README entry for this. llvm-svn: 74420
* Invalidate the alloca region by setting its default value to conjured symbol.Zhongxing Xu2009-06-292-2/+23
| | | | llvm-svn: 74419
* The default answer for isBoundable() should be false.Zhongxing Xu2009-06-291-1/+1
| | | | llvm-svn: 74418
* Make dynamic LLVMC plugins work on Windows (finally!).Mikhail Glushenkov2009-06-295-42/+76
| | | | | | | | Implemented by making lib/CompilerDriver a shared library that holds all the global static data (CommandLine options, plugin registry) that we unfortunately have to live with. llvm-svn: 74417
* Missed one.Andreas Bolka2009-06-291-1/+1
| | | | llvm-svn: 74416
* Fix case in LDA util function names.Andreas Bolka2009-06-291-4/+4
| | | | llvm-svn: 74415
* Make the StackProtector bitfield use enums instead of obscure numbers.Bill Wendling2009-06-285-16/+29
| | | | llvm-svn: 74414
* Move the check for vprintf* functions inside of SemaCheckStringLiteral. ↵Anders Carlsson2009-06-282-25/+33
| | | | | | Fixes PR4470. llvm-svn: 74413
* make these tests pass with the stack canary stuff even on targets where they ↵Chris Lattner2009-06-282-3/+3
| | | | | | default to on. llvm-svn: 74412
* Fix incorrect AST's being produced, noticed by Eli.Nate Begeman2009-06-281-10/+4
| | | | | | The issue this was working around is no longer present in TOT clang. llvm-svn: 74411
* Now this test case passes.Zhongxing Xu2009-06-281-2/+2
| | | | llvm-svn: 74410
* Adjust retrieve handler priority. If a field is of array type, it should be Zhongxing Xu2009-06-281-6/+6
| | | | | | handled by RetrieveArray(). llvm-svn: 74409
* Invalidate a field of struct type by setting its default value to conjured Zhongxing Xu2009-06-282-4/+26
| | | | | | symbol. llvm-svn: 74408
* Do not crash on binding concrete integer location.Zhongxing Xu2009-06-282-0/+6
| | | | llvm-svn: 74407
* Simplify some code. As in region store, we always expect the location is aZhongxing Xu2009-06-281-41/+34
| | | | | | memregion. llvm-svn: 74406
* Add stack protector support to clang. This generates the 'ssp' and 'sspreq'Bill Wendling2009-06-2810-7/+99
| | | | | | | | function attributes. There are predefined macros that are defined when stack protectors are used: __SSP__=1 with -fstack-protector and __SSP_ALL__=2 with -fstack-protector-all. llvm-svn: 74405
* OpenCL 1.0 support: Nate Begeman2009-06-282-29/+68
| | | | | | | | Handle rules for ExtVector + ExtVector and ExtVector + Scalar operations. Fix problem Eli noticed where we were allowing pointer types to be splatted to vector elements. llvm-svn: 74404
* Print pairwise dependence results, add testcases.Andreas Bolka2009-06-286-2/+139
| | | | llvm-svn: 74402
* Minimal LDA interface, maximally conservative tester.Andreas Bolka2009-06-282-0/+29
| | | | llvm-svn: 74401
* LDA analysis output scaffolding.Andreas Bolka2009-06-282-2/+27
| | | | llvm-svn: 74400
* Don't try to split a loop when the controlling icmp instructionDan Gohman2009-06-272-0/+198
| | | | | | doesn't have an IV-based operand. This fixes PR4471. llvm-svn: 74399
* Remove the block from the LoopInfo, rather than just the Loop.Dan Gohman2009-06-271-1/+1
| | | | | | | LoopInfo will handle removing it from the Loop, as well as updating its own tables. llvm-svn: 74398
* Implement feedback from Eli re: the purpose of lax vector conversionsNate Begeman2009-06-271-13/+2
| | | | llvm-svn: 74397
* Teach LoopSimplify how to merge multiple loop exits into a single exit,Dan Gohman2009-06-274-1/+128
| | | | | | | | | | | | | | | | when one of them can be converted to a trivial icmp and conditional branch. This addresses what is essentially a phase ordering problem. SimplifyCFG knows how to do this transformation, but it doesn't do so if the primary block has any instructions in it other than an icmp and a branch. In the given testcase, the block contains other instructions, however they are loop-invariant and can be hoisted. SimplifyCFG doesn't have LoopInfo though, so it can't hoist them. And, it's important that the blocks be merged before LoopRotation, as it doesn't support multiple-exit loops. llvm-svn: 74396
* More minor code simplifications.Dan Gohman2009-06-271-14/+9
| | | | llvm-svn: 74395
* Eliminate a layer of indirection in LoopInfo and MachineLoopInfo.Dan Gohman2009-06-274-52/+52
| | | | llvm-svn: 74394
* Convert ScalarEvolution to use BumpPtrAllocator and FoldingSet, insteadDan Gohman2009-06-273-167/+244
| | | | | | of a team of individual allocations and a team of std::maps. llvm-svn: 74393
* Remove a redundant #include.Dan Gohman2009-06-271-1/+0
| | | | llvm-svn: 74392
* Change SCEVExpander to use an IRBuilder to emit instructions.Dan Gohman2009-06-272-91/+83
| | | | llvm-svn: 74391
* Improve support for overloaded operator templates.Douglas Gregor2009-06-276-43/+72
| | | | llvm-svn: 74390
* Add a 'const' in a comment.Dan Gohman2009-06-271-1/+1
| | | | llvm-svn: 74389
* Fix the parser error hanlding for __builtin_offsetof to actually print Eli Friedman2009-06-272-6/+14
| | | | | | out an error for a malformed __builtin_offsetof. llvm-svn: 74388
* Add a Last Updated field to the C++ status pageDouglas Gregor2009-06-271-0/+1
| | | | llvm-svn: 74387
* Renamed MarcDestructorReferenced -> MarkDestructorReferencedFariborz Jahanian2009-06-274-6/+6
| | | | llvm-svn: 74386
* Simplify a bitAnton Korobeynikov2009-06-276-80/+70
| | | | llvm-svn: 74385
* ARM refactoring. Step 2: split RegisterInfoAnton Korobeynikov2009-06-279-694/+1075
| | | | llvm-svn: 74384
* Fix screwup with my previous patch which broke tests. (The patch is Eli Friedman2009-06-271-1/+1
| | | | | | | making sure we return true when annotating a function template with explicit template arguments, but not when we don't annotate anything.) llvm-svn: 74383
* Add ThumbInstrInfo.cpp to the CMake makefilesDouglas Gregor2009-06-271-0/+1
| | | | llvm-svn: 74382
* Fix a crash with constructs like x<false>() in C++. No testcase because Eli Friedman2009-06-271-1/+1
| | | | | | it doesn't actually work yet; we just error out a bit more gracefully. llvm-svn: 74381
* Fix a bogus error overloading an operator where the only class Eli Friedman2009-06-272-2/+17
| | | | | | parameter has a dependent type. llvm-svn: 74380
* remove a bunch of fixmes (old checking code) and commonize all theChris Lattner2009-06-271-87/+29
| | | | | | target-specific operand printing functionality. Yay. llvm-svn: 74379
* pull @GOT, @GOTOFF, @GOTPCREL handling into isel from the asmprinter.Chris Lattner2009-06-272-40/+23
| | | | llvm-svn: 74378
* simplify some code and eliminate the symbolicAddressesAreRIPRel() predicate.Chris Lattner2009-06-273-19/+4
| | | | llvm-svn: 74377
* When a value is used multiple times within a single PHI, instructionsDan Gohman2009-06-272-3/+48
| | | | | | | | inserted to replace that value must dominate all of of the basic blocks associated with the uses of the value in the PHI, not just one of them. llvm-svn: 74376
* fix clang/test/CodeGenObjC/try.m, a basereg doesn't mean no global anymore.Chris Lattner2009-06-271-5/+3
| | | | llvm-svn: 74375
* fix a bunch of failures in the X86-64 JIT by tolerating RIP asChris Lattner2009-06-271-3/+5
| | | | | | a base register. We just ignore it for now. llvm-svn: 74374
* factor some logic out into a helper function, allow remat of loads from constantChris Lattner2009-06-272-6/+26
| | | | | | globals. This implements remat-constant.ll even without aggressive-remat. llvm-svn: 74373
* Reimplement rip-relative addressing in the X86-64 backend. The newChris Lattner2009-06-2711-166/+251
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | implementation primarily differs from the former in that the asmprinter doesn't make a zillion decisions about whether or not something will be RIP relative or not. Instead, those decisions are made by isel lowering and propagated through to the asm printer. To achieve this, we: 1. Represent RIP relative addresses by setting the base of the X86 addr mode to X86::RIP. 2. When ISel Lowering decides that it is safe to use RIP, it lowers to X86ISD::WrapperRIP. When it is unsafe to use RIP, it lowers to X86ISD::Wrapper as before. 3. This removes isRIPRel from X86ISelAddressMode, representing it with a basereg of RIP instead. 4. The addressing mode matching logic in isel is greatly simplified. 5. The asmprinter is greatly simplified, notably the "NotRIPRel" predicate passed through various printoperand routines is gone now. 6. The various symbol printing routines in asmprinter now no longer infer when to emit (%rip), they just print the symbol. I think this is a big improvement over the previous situation. It does have two small caveats though: 1. I implemented a horrible "no-rip" modifier for the inline asm "P" constraint modifier. This is a short term hack, there is a much better, but more involved, solution. 2. I had to xfail an -aggressive-remat testcase because it isn't handling the use of RIP in the constant-pool reading instruction. This specific test is easy to fix without -aggressive-remat, which I intend to do next. llvm-svn: 74372
* remove some unneeded eh info.Chris Lattner2009-06-273-4/+4
| | | | llvm-svn: 74371
* When doing remat, don't consider uses of non-allocatable physregs. Patch Chris Lattner2009-06-271-0/+4
| | | | | | by Evan. llvm-svn: 74370
OpenPOWER on IntegriCloud