- Jan 16, 2012
-
-
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
-
Benjamin Kramer authored
llvm-svn: 148221
-
Anton Yartsev authored
llvm-svn: 148220
-
Benjamin Kramer authored
llvm-svn: 148219
-
Benjamin Kramer authored
llvm-svn: 148218
-
Benjamin Kramer authored
llvm-svn: 148217
-
Stepan Dyatkovskiy authored
llvm-svn: 148216
-
Stepan Dyatkovskiy authored
Fixup for r148132. Type replacement for LoopsProperties: from DenseMap to std::map, since we need to keep a valid pointer to properties of current loop. Message for r148132: LoopUnswitch: All helper data that is collected during loop-unswitch iterations was moved to separated class (LUAnalysisCache). llvm-svn: 148215
-
Chandler Carruth authored
we're loading from the global array, not how it is spelled in the asm. This should fix the MSVC bots. llvm-svn: 148214
-
Chandler Carruth authored
removal desired. llvm-svn: 148213
-
Chandler Carruth authored
re-computed rather than the variables be re-used just after the assert. Just use the variables since we have them already. Fixes an unused variable warning. Also fix an 80-column violation. llvm-svn: 148212
-
Chandler Carruth authored
or Clang is using this, and it would be hard to use it correctly given the thread hostility of the function. Also, it never checked the return which is rather dangerous with chdir. If someone was in fact using this, please let me know, as well as what the usecase actually is so that I can add it back and make it more correct and secure to use. (That said, it's never going to be "safe" per-se, but we could at least document the risks...) llvm-svn: 148211
-
Richard Smith authored
Don't consider decltype(e) for an instantiation-dependent, but not type-dependent, e to be non-type-dependent but canonical(!). llvm-svn: 148210
-