- Jan 17, 2012
-
-
David Blaikie authored
Removing unused default switch cases in switches over enums that already account for all enumeration values explicitly. (This time I believe I've checked all the -Wreturn-type warnings from GCC & added the couple of llvm_unreachables necessary to silence them. If I've missed any, I'll happily fix them as soon as I know about them) llvm-svn: 148262
-
Hal Finkel authored
No test case: output assembly will be identical. llvm-svn: 148261
-
- Jan 16, 2012
-
-
Hal Finkel authored
AggressiveAntiDepBreaker needs to skip debug values because a debug value does not have a corresponding SUnit llvm-svn: 148260
-
Jakob Stoklund Olesen authored
It is safe to move uses of such registers. llvm-svn: 148259
-
Jim Grosbach authored
Move to a by-section allocation and relocation scheme. This allows better support for sections which do not contain externally visible symbols. Flesh out the relocation address vs. local storage address separation a bit more as well. Remote process JITs use this to tell the relocation resolution code where the code will live when it executes. The startFunctionBody/endFunctionBody interfaces to the JIT and the memory manager are deprecated. They'll stick around for as long as the old JIT does, but the MCJIT doesn't use them anymore. llvm-svn: 148258
-
Greg Clayton authored
More improvements to not follow child processes and improved logging that always shows the process info. llvm-svn: 148257
-
Nick Kledzik authored
First chunk of native object file reader/writer. The lld-core tool now reads YAML file, links, writes that out as native object format, then reads that native file, then writes the YAML to stdout. Thus the test suite tests both YAML reading/writing as well as native object file reading/writing. llvm-svn: 148256
-
Tanya Lattner authored
llvm-svn: 148255
-
Tanya Lattner authored
llvm-svn: 148254
-
Eli Friedman authored
Add some calls to MarkDeclarationReferenced, towards a point where every declaration which is used is marked as used. llvm-svn: 148253
-
Stepan Dyatkovskiy authored
llvm-svn: 148252
-
Jakob Stoklund Olesen authored
llvm-svn: 148251
-
Jakob Stoklund Olesen authored
Register masks will be used as a compact representation of large clobber lists. Currently, an x86 call instruction has some 40 operands representing call-clobbered registers. That's more than 1kB of useless operands per call site. A register mask operand references a bit mask of call-preserved registers, everything else is clobbered. The bit mask will typically come from TargetRegisterInfo::getCallPreservedMask(). By abandoning ImplicitDefs for call-clobbered registers, it also becomes possible to share call instruction descriptions between calling conventions, and we can get rid of the WINCALL* instructions. This patch introduces the new operand kind. Future patches will add RegMask support to target-independent passes before finally the fixed clobber lists can be removed from call instruction descriptions. llvm-svn: 148250
-
Eli Friedman authored
Make the auto-detection hack for the iOS simulator set the target triple correctly. Getting the target triple wrong mostly appears to work, but messes up in subtle cases; for example, we incorrectly conclude that fwrite is actually named fwrite$UNIX2003. Also shuffles around the auto-detection code a bit to try and make it a bit more reliable. Fixes <rdar://problem/10664848>. llvm-svn: 148249
-
Tobias Grosser authored
llvm-svn: 148248
-
Fariborz Jahanian authored
non-constant-folded-switch containing a constant-folded switch. llvm-svn: 148247
-
Howard Hinnant authored
One more small optimization: Where possible, for loops that do a search and then try to break out of the loop early, eliminate the attempt to break out of the loop after the last search. And with that, I'm declaring __dynamic_cast done. Though if anyone sees any problems, has suggestions for improvements, or wants to contribute some test cases, that is certainly welcome feedback. llvm-svn: 148246
-
Fariborz Jahanian authored
llvm-svn: 148245
-
Fariborz Jahanian authored
llvm-svn: 148244
-
Fariborz Jahanian authored
statement which has an unscoped case inside it. Patch by Aaron Ballman llvm-svn: 148243
-
David Chisnall authored
- Add atomic-to/from-nonatomic cast types - Emit atomic operations for arithmetic on atomic types - Emit non-atomic stores for initialisation of atomic types, but atomic stores and loads for every other store / load - Add a __atomic_init() intrinsic which does a non-atomic store to an _Atomic() type. This is needed for the corresponding C11 stdatomic.h function. - Enables the relevant __has_feature() checks. The feature isn't 100% complete yet, but it's done enough that we want people testing it. Still to do: - Make the arithmetic operations on atomic types (e.g. Atomic(int) foo = 1; foo++;) use the correct LLVM intrinsic if one exists, not a loop with a cmpxchg. - Add a signal fence builtin - Properly set the fenv state in atomic operations on floating point values - Correctly handle things like _Atomic(_Complex double) which are too large for an atomic cmpxchg on some platforms (this requires working out what 'correctly' means in this context) - Fix the many remaining corner cases llvm-svn: 148242
-
Howard Hinnant authored
llvm-svn: 148241
-
Eli Friedman authored
llvm-svn: 148240
-
Eli Friedman authored
llvm-svn: 148239
-
Tobias Grosser authored
llvm-svn: 148238
-
Joe Abbey authored
Committed as obvious llvm-svn: 148237
-
Evgeniy Stepanov authored
llvm-svn: 148236
-
Alexey Samsonov authored
llvm-svn: 148235
-
Evgeniy Stepanov authored
llvm-svn: 148234
-
Craig Topper authored
llvm-svn: 148233
-
Eli Bendersky authored
A fix for the previous commit: "integer constant is too large for ‘long’ type" error on some 32-bit bots llvm-svn: 148232
-
Eli Bendersky authored
Adding a basic ELF dynamic loader and MC-JIT for ELF. Functionality is currently basic and will be enhanced with future patches. Patch developed by Andy Kaylor and Daniel Malea. Reviewed on llvm-commits. llvm-svn: 148231
-
David Blaikie authored
llvm-svn: 148230
-
David Blaikie authored
llvm-svn: 148229
-
Pete Cooper authored
Changed intrinsic ID operand to a target constant as its not used in any arithmetic so should not be checked in legalisation llvm-svn: 148228
-
Howard Hinnant authored
I think this is getting close on __dynamic_cast. There's been quite a bit of code rearrangement, renaming, and better commenting. This exercise has exposed and fixed a few more bugs. I've also added several more tests (there's definitely a need for more tests here). llvm-svn: 148227
-
- Jan 15, 2012
-
-
Nadav Rotem authored
We know that the blend instructions only use the MSB, so if the mask is sign-extended then we can convert it into a SHL instruction. This is a common pattern because the type-legalizer sign-extends the i1 type which is used by the LLVM-IR for the condition. Added a new optimization in SimplifyDemandedBits for SIGN_EXTEND_INREG -> SHL. llvm-svn: 148225
-
Douglas Gregor authored
class/Objective-C protocol suffices get all of the redeclarations of that declaration wired to the definition, we no longer need to record the identity of the definition in every declaration. Instead, just record a bit to indicate whether a particular declaration is the definition. llvm-svn: 148224
-
Douglas Gregor authored
protocol, record the definition pointer in the canonical declaration for that entity, and then propagate that definition pointer from the canonical declaration to all other deserialized declarations. This approach works well even when deserializing declarations that didn't know about the original definition, which can occur with modules. A nice bonus from this definition-deserialization approach is that we no longer need update records when a definition is added, because the redeclaration chains ensure that the if any declaration is loaded, the definition will also get loaded. llvm-svn: 148223
-
Douglas Gregor authored
chains, again. The prior implementation was very linked-list oriented, and the list-splicing logic was both fairly convoluted (when loading from multiple modules) and failed to preserve a reasonable ordering for the redeclaration chains. This new implementation uses a simpler strategy, where we store the ordered redeclaration chains in an array-like structure (indexed based on the first declaration), and use that ordering to add individual deserialized declarations to the end of the existing chain. That way, the chain mimics the ordering from its modules, and a bug somewhere is far less likely to result in a broken linked list. llvm-svn: 148222
-