summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Use an early return instead of a long if block.Cameron Zwarich2011-03-241-51/+51
| | | | llvm-svn: 128196
* When UpdateDT is set, DT is invalid, which could cause problems when trying toCameron Zwarich2011-03-241-2/+3
| | | | | | use it later. I couldn't make a test that hits this with the current code. llvm-svn: 128195
* Check for TLI so that -codegenprepare can be used from opt.Cameron Zwarich2011-03-241-0/+3
| | | | llvm-svn: 128194
* Did a lot more work on abtracting and organizing the platforms. Greg Clayton2011-03-2429-661/+1297
| | | | | | | | | | | | | | | | | | | | On Mac OS X we now have 3 platforms: PlatformDarwin - must be subclassed to fill in the missing pure virtual funcs but this implements all the common functionality between remote-macosx and remote-ios. It also allows for another platform to be used (remote-gdb-server for now) when doing remote connections. Keeping this pluggable will allow for flexibility. PlatformMacOSX - Now implements both local and remote macosx desktop platforms. PlatformRemoteiOS - Remote only iOS that knows how to locate SDK files in the cached SDK locations on the host. A new agnostic platform has been created: PlatformRemoteGDBServer - this implements the platform using the GDB remote protocol and uses the built in lldb_private::Host static functions to implement many queries. llvm-svn: 128193
* CPS3p: Let's reject impossible imod values by returning false from the ↵Johnny Chen2011-03-241-0/+3
| | | | | | | | | | | | | | | | | | | | | | | DisassembleMiscFrm() function. Fixed rdar://problem/9179416 ARM disassembler crash: "Unknown imod operand" (fuzz testing) Opcode=98 Name=CPS3p Format=ARM_FORMAT_MISCFRM(26) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ------------------------------------------------------------------------------------------------- | 1: 1: 1: 1| 0: 0: 0: 1| 0: 0: 0: 0| 0: 0: 1: 0| 0: 0: 0: 1| 1: 1: 0: 0| 1: 0: 0: 1| 0: 0: 1: 1| ------------------------------------------------------------------------------------------------- Before: cpsUnknown imod operand UNREACHABLE executed at /Volumes/data/lldb/llvm/lib/Target/ARM/InstPrinter/../ARMBaseInfo.h:123! After: /Volumes/data/Radar/9179416/mc-input-arm.txt:1:1: warning: invalid instruction encoding 0x93 0x1c 0x2 0xf1 ^ llvm-svn: 128192
* Load/Store Multiple:Johnny Chen2011-03-242-4/+10
| | | | | | | These instructions were changed to not embed the addressing mode within the MC instructions We also need to update the corresponding assert stmt. Also add two test cases. llvm-svn: 128191
* Convert the BaseOffset member of BaseSubobject to CharUnits from bits. NoKen Dyck2011-03-245-82/+104
| | | | | | change in functionality intended. llvm-svn: 128190
* STRT and STRBT was incorrectly tagged as IndexModeNone during the ↵Johnny Chen2011-03-242-2/+5
| | | | | | | | refactorings (r119821). We now tag them as IndexModePost. llvm-svn: 128189
* Add a new warning for exit-time destructors.Anders Carlsson2011-03-244-3/+38
| | | | llvm-svn: 128188
* Rework checker "packages" and groups to be more hierarchical.Ted Kremenek2011-03-2432-271/+334
| | | | llvm-svn: 128187
* The r128103 fix to cope with the removal of addressing modes from the MC ↵Johnny Chen2011-03-242-2/+10
| | | | | | | | | | instructions were incomplete. The assert stmt needs to be updated and the operand index incrment is wrong. Fix the bad logic and add some sanity checking to detect bad instruction encoding; and add a test case. llvm-svn: 128186
* Call out ObjC parameter types as a different kind of declarator contextJohn McCall2011-03-234-13/+69
| | | | | | from a normal type-spec, just for completeness. llvm-svn: 128185
* Runtime dylib simple ARM 24-bit branch relocation support.Jim Grosbach2011-03-231-14/+49
| | | | llvm-svn: 128184
* Enable GlobalMerge on darwin.Devang Patel2011-03-233-8/+1
| | | | llvm-svn: 128183
* Fix comments.Jim Grosbach2011-03-231-2/+2
| | | | llvm-svn: 128182
* Revert r128175.Andrew Trick2011-03-233-103/+16
| | | | | | I'm backing this out for the second time. It was supposed to be fixed by r128164, but the mingw self-host must be defeating the fix. llvm-svn: 128181
* Fixed type error in last commit (forgot that now that selectors are notDavid Chisnall2011-03-232-155/+207
| | | | | | | | | | | | | accessed via the indirect pointer, they don't need to be pointers to pointers). Finished moving the message lookup code into separate subclasses for each runtime. Also performed a few smallish related tidies. We're now bitcasting the result of the message lookup functions, rather than casting the lookup functions themselves, so the messages.m test needed updating to reflect this. llvm-svn: 128180
* Cmp peephole optimization isn't always safe for signed arithmetics.Evan Cheng2011-03-233-5/+88
| | | | | | | | | | | | | | | | | | | | | int tries = INT_MAX; while (tries > 0) { tries--; } The check should be: subs r4, #1 cmp r4, #0 bgt LBB0_1 The subs can set the overflow V bit when r4 is INT_MAX+1 (which loop canonicalization apparently does in this case). cmp #0 would have cleared it while not changing the N and Z bits. Since BGT is dependent on the V bit, i.e. (N == V) && !Z, it is not safe to eliminate the cmp #0. rdar://9172742 llvm-svn: 128179
* Add missing cases to switch statements & remove 'default'.Caroline Tice2011-03-231-8/+21
| | | | llvm-svn: 128177
* PR9535: add support for splitting and scalarizing vector ISD::FP_ROUND.Eli Friedman2011-03-233-60/+65
| | | | | | Also cleaning up some duplicated code while I'm here. llvm-svn: 128176
* Reapply Eli's r127852 now that the pre-RA scheduler can spill EFLAGS.Andrew Trick2011-03-233-16/+103
| | | | | | (target-specific branchless method for double-width relational comparisons on x86) llvm-svn: 128175
* Split out relocation resolution into target-specific bits.Jim Grosbach2011-03-231-3/+71
| | | | llvm-svn: 128173
* The high bit of a Thumb2 ADR's offset is stored in bit 26, not bit 25.Owen Anderson2011-03-231-1/+1
| | | | | | This fixes 464.h264ref with the integrated assembler. llvm-svn: 128172
* Fix double-free of Module.Jim Grosbach2011-03-231-1/+0
| | | | | | | | The ExecutionEngine constructor already added the module, so there's no need to call addModule() directly. Doing so causes a double-free of the Module at program termination. llvm-svn: 128171
* Fix CFG-construction bug when run from ↵Ted Kremenek2011-03-232-9/+31
| | | | | | | | AnalysisBasedWarnings::IssueWarnings() where block-level expressions that need to be recorded in the Stmt*->CFGBlock* map were not always done so. Fixes <rdar://problem/9171946>. llvm-svn: 128170
* Fix a bug introduced by my patch yesterday: BL is a 4-byte instructions like ↵Owen Anderson2011-03-231-3/+2
| | | | | | BLX, rather than a 2-byte instruction like B. llvm-svn: 128169
* Unbreak testDouglas Gregor2011-03-232-6/+13
| | | | llvm-svn: 128168
* Silence clang warnings.Johnny Chen2011-03-231-0/+8
| | | | llvm-svn: 128167
* Ensure that def-side physreg copies are scheduled above any other usesAndrew Trick2011-03-231-0/+9
| | | | | | | | | so the scheduler can't create new interferences on the copies themselves. Prior to this fix the scheduler could get stuck in a loop creating copies. Fixes PR9509. llvm-svn: 128164
* whitespaceAndrew Trick2011-03-231-2/+2
| | | | llvm-svn: 128163
* Turns out that the test failure wrt:Johnny Chen2011-03-235-14/+37
| | | | | | | | | | | | | | | | | | | | | | | rdar://problem/9173060 lldb hangs while running unique-types disappears if running with clang version >= 3. Modify the TestUniqueTypes.py to detect if we are running with clang version < 3 and, if true, skip the test. Update the lldbtest.system() function to return a tuple of (stdoutdata, stderrdata) since we need the stderr data from "clang -v" command. Modify existing clients of lldbtest.system() to now use, for example: # First, capture the golden output emitted by the oracle, i.e., the # series of printf statements. - go = system("./a.out", sender=self) + go = system("./a.out", sender=self)[0] # This golden list contains a list of (variable, value) pairs extracted # from the golden output. gl = [] And add two utility functions to lldbutil.py. llvm-svn: 128162
* Start of relocation resolution for the runtime dyld library.Jim Grosbach2011-03-231-21/+130
| | | | llvm-svn: 128161
* Make sure to report any errors from the runtime dyld.Jim Grosbach2011-03-231-1/+2
| | | | llvm-svn: 128160
* Support for Transparent unions used as overloadableFariborz Jahanian2011-03-234-2/+79
| | | | | | | function parameter. // rdar:// 9129552 and PR9406. llvm-svn: 128159
* Add a test for !ptr-to-member (should fail)Marshall Clow2011-03-231-2/+3
| | | | llvm-svn: 128158
* Revert r128156 because of CodeGenObjC/messages.m and Coverage/codegen-gnu.m.Andrew Trick2011-03-231-9/+10
| | | | llvm-svn: 128157
* Remove the redundant loads / stores to globals that we were generating for ↵David Chisnall2011-03-231-10/+9
| | | | | | selectors (GNU runtimes). llvm-svn: 128156
* Don't coalesce identical DBG_VALUE instructions prematurely.Jakob Stoklund Olesen2011-03-231-3/+1
| | | | | | | | Each of these instructions may have a RegsClobberInsn entry that can't be ignored. Consecutive ranges are coalesced later when DwarfDebug::emitDebugLoc merges entries. llvm-svn: 128155
* Supports building with a list of targets that does not containOscar Fuentes2011-03-233-22/+27
| | | | | | X86. Fixes PR9533. llvm-svn: 128154
* PTX: Improve support for 64-bit addressingJustin Holewinski2011-03-233-21/+72
| | | | | | | | | - Fix bug in ADDRrr/ADDRri/ADDRii selection for 64-bit addresses - Add comparison selection for i64 - Add zext selection for i32 -> i64 - Add shl/shr/sha support for i64 llvm-svn: 128153
* Initial work on refactoring GNU runtime code (long overdue - it's quite obviousDavid Chisnall2011-03-231-298/+349
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | that I hadn't used C++ for several years before writing most of this code). Still lots more to do. This set of changes includes: - Remove the distinction between typed and untyped selectors. More accurately reflect what the runtime does, by using typed selectors everywhere, with an empty type field if the types are unknown. Now we just store a small list of types for each selector (in theory, this should always be exactly one, but this constraint was not enforced back in 1986 when it should have been). - Add some consistency to how runtime functions are created. These are all generated via the LazyRuntimeFunction class (which might be useful outside CGObjCGNU - feel free to move it into a header if it is). This function stores the types of a function, looks it up the first time it's used, and caches the result. This means that we're now not wasting time constructing the llvm::FunctionType every time some of the functions are looked up, but also not inserting references to runtime functions into the module if they're not actually used. - Started separating out the fragile and non-fragile ABI behaviours into two subclasses of CGObjCGNU: CGObjCGCC for the legacy GCC runtime ABI and CGObjCGNUstep for the new GNUstep ABI. Not all of the differences in behaviour are factored out yet, but they will be in future commits. - Removed all of the CodeGen:: things: we've been using namespace CodeGen in this file for ages, so having explicit namespace specifiers is just a bit confusing. - Added a few more comments. - Used llvm::StringRef instead of std::string in a few places. - Finally got around to storing the module path in the module structure. The ABI says that the compiler should do this, although it's not used in the runtime or exposed outside the runtime, so it's pretty useless. Still to do: - We currently have two code paths for generating try blocks, one for ObjC and one for ObjC++. Not only are these substantially similar, they are also very similar to the CGObjCMac version. These need factoring out into a single parameterised implementation, either in CGObjCRuntime or CodeGenFunction. The EmitObjCXXTryStmt() function was added so that the changes to fix a bug in time for the 2.9 release would be self-contained and reduce the chances of breaking anything else, but these should be done properly as soon as possible. - Split up some large functions (e.g. GenerateClass()) into smaller functions for generating the various data structures. - The method lookup code into the two subclasses, removing the conditionals in the message send functions. - Add doxygen comments on the remaining undocumented functions. - We seem to be generating global pointer variables for selectors, then storing a pointer to the selector, then generating a load of this pointer (and then a load of the real selector later) every time a static selector is used. I can only assume I was asleep or drunk when I did this - we should just be referencing the selectors directly in the selector array. llvm-svn: 128152
* Test case for r128150.Devang Patel2011-03-231-0/+23
| | | | llvm-svn: 128151
* Update type cache when a type is completed.Devang Patel2011-03-234-5/+28
| | | | | | Radar 9168773 llvm-svn: 128150
* Revert r128140 for now.Anders Carlsson2011-03-232-52/+0
| | | | llvm-svn: 128149
* Teach DelayedDiagnostic to copy its string, rather than hope that theDouglas Gregor2011-03-234-17/+55
| | | | | | | string itself lives longer than the DelayedDiagnostic. Fixes a recent use-after-free regression due to my availability attribute work. llvm-svn: 128148
* Ignore weak_import on Objective-C property and method declarations onDouglas Gregor2011-03-232-5/+5
| | | | | | all platforms, not just darwin. Fixes the regression in this test case. llvm-svn: 128147
* Fix PR9464 by correcting some math that just happened to be right in most casesCameron Zwarich2011-03-232-11/+26
| | | | | | that were hit in practice. llvm-svn: 128146
* Notify the delegate before removing dead values from a live interval.Jakob Stoklund Olesen2011-03-231-0/+2
| | | | | | The register allocator needs to know when the range shrinks. llvm-svn: 128145
* Allow the allocation of empty live ranges that have uses.Jakob Stoklund Olesen2011-03-231-1/+8
| | | | | | Empty ranges may represent undef values. llvm-svn: 128144
* Dump the register map before rewriting.Jakob Stoklund Olesen2011-03-231-1/+1
| | | | llvm-svn: 128143
OpenPOWER on IntegriCloud