summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* This patch fixes a Mips specific bug where Jack Carter2013-01-152-1/+44
| | | | | | | | | | | we need to generate a N64 compound relocation R_MIPS_GPREL_32/R_MIPS_64/R_MIPS_NONE. The bug was exposed by the SingleSourcetest case DuffsDevice.c. Contributer: Jack Carter llvm-svn: 172496
* Now GenericAsmParser and AsmParser are no longer friends, GenericAsmParser canEli Bendersky2013-01-141-4/+0
| | | | | | | | simply use the getParser method from MCAsmParserExtension, working through the MCAsmParser interface. There's no longer a need to overload that method to cast it to the concrete AsmParser. llvm-svn: 172491
* Properly encapsulate additional methods and data from AsmParser.Eli Bendersky2013-01-142-68/+115
| | | | | | | | | This finally allows AsmParser to no longer list GenericAsmParser as a friend. All member vars directly accessed by GenericAsmParser have been properly encapsulated and exposed through the MCAsmParser interface. This reduces the coupling between AsmParser and GenericAsmParser. llvm-svn: 172490
* Remove trailing spaces.Jakub Staszak2013-01-143-78/+78
| | | | llvm-svn: 172489
* This change is to implement following rules under the condition C_A and/or C_RShuxin Yang2013-01-142-8/+223
| | | | | | | | | | | | | | | | | | | | | --------------------------------------------------------------------------- C_A: reassociation is allowed C_R: reciprocal of a constant C is appropriate, which means - 1/C is exact, or - reciprocal is allowed and 1/C is neither a special value nor a denormal. ----------------------------------------------------------------------------- rule1: (X/C1) / C2 => X / (C2*C1) (if C_A) => X * (1/(C2*C1)) (if C_A && C_R) rule 2: X*C1 / C2 => X * (C1/C2) if C_A rule 3: (X/Y)/Z = > X/(Y*Z) (if C_A && at least one of Y and Z is symbolic value) rule 4: Z/(X/Y) = > (Z*Y)/X (similar to rule3) rule 5: C1/(X*C2) => (C1/C2) / X (if C_A) rule 6: C1/(X/C2) => (C1*C2) / X (if C_A) rule 7: C1/(C2/X) => (C1/C2) * X (if C_A) llvm-svn: 172488
* [ms-inline asm] Extend support for parsing Intel bracketed memory operands thatChad Rosier2013-01-142-95/+468
| | | | | | | have an arbitrary ordering of the base register, index register and displacement. rdar://12527141 llvm-svn: 172484
* Improve r172468: const_cast is not needed hereDmitri Gribenko2013-01-141-3/+2
| | | | llvm-svn: 172483
* Improve r172471: avoid all those extra casts on the lines nearbyDmitri Gribenko2013-01-141-4/+6
| | | | llvm-svn: 172481
* This patch addresses an incorrect transformation in the DAG combiner.Bill Schmidt2013-01-142-5/+49
| | | | | | | | | | | | | | | | | | | | | | The included test case is derived from one of the GCC compatibility tests. The problem arises after the selection DAG has been converted to type-legalized form. The combiner first sees a 64-bit load that can be converted into a pre-increment form. The original load feeds into a SRL that isolates the upper 32 bits of the loaded doubleword. This looks like an opportunity for DAGCombiner::ReduceLoadWidth() to replace the 64-bit load with a 32-bit load. However, this transformation is not valid, as the replacement load is not a pre-increment load. The pre-increment load produces an extra result, which feeds a subsequent add instruction. The replacement load only has one result value, and this value is propagated to all uses of the pre- increment load, including the add. Because the add is looking for the second result value as its operand, it ends up attempting to add a constant to a token chain, resulting in a crash. So the patch simply disables this transformation for any load with more than two result values. llvm-svn: 172480
* Follow up of commit r172472.Quentin Colombet2013-01-141-28/+15
| | | | | | Refactor the big if/else sequence into one string switch for ARM subtype selection. llvm-svn: 172475
* Improve r172464: const_cast is not needed if the variable is not constDmitri Gribenko2013-01-141-3/+2
| | | | llvm-svn: 172474
* Complete the existing support of ARM v6m, v7m, and v7em, i.e., respectively ↵Quentin Colombet2013-01-142-1/+13
| | | | | | | | cortex-m0, cortex-m3, and cortex-m4 on the backend side. Adds new subtype values for the MachO format and use them when the related triple are set. llvm-svn: 172472
* Fix CastingDavid Greene2013-01-141-1/+2
| | | | | | Fix a casting-away-const compiler warning. llvm-svn: 172471
* Fix CastingDavid Greene2013-01-141-1/+2
| | | | | | Do proper casting to eliminate a const-away-cast compiler warning. llvm-svn: 172470
* Fix More CastsDavid Greene2013-01-141-3/+8
| | | | | | Properly cast some more code that triggered cast-away-const errors. llvm-svn: 172469
* Fix Another CastDavid Greene2013-01-141-1/+2
| | | | | | Properly cast code to eliminate cast-away-const errors. llvm-svn: 172468
* Fix Casting BugDavid Greene2013-01-141-1/+3
| | | | | | Add a const version of getFpValPtr to avoid a cast-away-const warning. llvm-svn: 172467
* Fix More CastsDavid Greene2013-01-141-1/+2
| | | | | | Fix another cast-away-const cast. llvm-svn: 172466
* Fix CastingDavid Greene2013-01-141-1/+1
| | | | | | Stop a gcc warning about casting away const. llvm-svn: 172465
* Fix CastsDavid Greene2013-01-141-1/+2
| | | | | | Use const_cast<> to avoid cast-away-const errors. llvm-svn: 172464
* SCEVExpander fix. RAUW needs to update the InsertedExpressions cache.Andrew Trick2013-01-143-4/+89
| | | | | | | | Note that this bug is only exposed because LTO fails to use TTI. Fixes self-LTO of clang. rdar://13007381. llvm-svn: 172462
* Fix typo in comment.Nick Lewycky2013-01-141-1/+1
| | | | llvm-svn: 172460
* [ADT/StringMap] Add a constructor in StringMap that accepts both anArgyrios Kyrtzidis2013-01-141-0/+3
| | | | | | initial size and an allocator. llvm-svn: 172455
* Fix DenseMap when LLVM_HAS_RVALUE_REFERENCES is defined but equals 0.Joe Groff2013-01-141-1/+1
| | | | llvm-svn: 172454
* Add DenseMap::insert(value_type&&) method.Joe Groff2013-01-141-0/+18
| | | | | | | Use the existing move implementation of the internal DenseMap::InsertIntoBucket method to provide a user-facing move insert method. llvm-svn: 172453
* Changed SmallPtrSet.count guard + SmallPtrSet.insert to just SmallPtrSet.insert.Michael Gottesman2013-01-141-2/+1
| | | | llvm-svn: 172452
* Move CheckForValidSection to the MCAsmParser interface.Eli Bendersky2013-01-142-1/+5
| | | | | | | | | | | | | Now that it behaves itself in terms of streamer independence (r172450), this method can be moved to MCAsmParser to be available to all extensions, overriding, etc. -- -This line, and those below, will be ignored-- M lib/MC/MCParser/AsmParser.cpp M include/llvm/MC/MCParser/MCAsmParser.h llvm-svn: 172451
* Expose an InitToTextSection through MCStreamer.Eli Bendersky2013-01-1410-11/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The aim of this patch is to fix the following piece of code in the platform-independent AsmParser: void AsmParser::CheckForValidSection() { if (!ParsingInlineAsm && !getStreamer().getCurrentSection()) { TokError("expected section directive before assembly directive"); Out.SwitchSection(Ctx.getMachOSection( "__TEXT", "__text", MCSectionMachO::S_ATTR_PURE_INSTRUCTIONS, 0, SectionKind::getText())); } } This was added for the "-n" option of llvm-mc. The proposed fix adds another virtual method to MCStreamer, called InitToTextSection. Conceptually, it's similar to the existing InitSections which initializes all common sections and switches to text. The new method is implemented by each platform streamer in a way that it sees fit. So AsmParser can now do this: void AsmParser::CheckForValidSection() { if (!ParsingInlineAsm && !getStreamer().getCurrentSection()) { TokError("expected section directive before assembly directive"); Out.InitToTextSection(); } } Which is much more reasonable. llvm-svn: 172450
* Move ParseMacroArgument to the MCAsmParser interfance.Eli Bendersky2013-01-142-13/+20
| | | | | | | | | | | | Since it's used by extensions. One further step to fully decoupling GenericAsmParser from an intimate knowledge of the internals of AsmParser, pointing it to the MCASmParser interface instead (like all other parser extensions do). Since this change moves the MacroArgument type to the interface header, it's renamed to be a bit more descriptive in a general context. llvm-svn: 172449
* Encapsulate the MacroEnabled flag in AsmParser behind accessor methods.Eli Bendersky2013-01-142-4/+11
| | | | | | | | The methods are also exposed via the MCAsmParser interface, which allows more than one client to control them. Previously, GenericAsmParser was playing with a member var in AsmParser directly (by virtue of being its friend). llvm-svn: 172440
* Revert r171829 "Split changeset_ty using iterators instead of loops" as it ↵Timur Iskhodzhanov2013-01-141-8/+6
| | | | | | breaks the VS2008 build llvm-svn: 172411
* Simplify nested strconcats in X86 td files since strconcat can take more ↵Craig Topper2013-01-142-32/+32
| | | | | | than 2 arguments. llvm-svn: 172379
* Create a single multiclass for SSE and AVX version of MOVL/MOVH. Prevents ↵Craig Topper2013-01-141-23/+24
| | | | | | needing to specify everything twice. No functional change intended llvm-svn: 172378
* Fixed some 80+ violations.Michael Gottesman2013-01-141-14/+18
| | | | llvm-svn: 172374
* Updated the documentation in ObjCARC.cpp to fit the style guide better (i.e. ↵Michael Gottesman2013-01-141-232/+259
| | | | | | use doxygen). Still some work to do though. llvm-svn: 172371
* Added bugzilla PR number to test case.Michael Gottesman2013-01-131-0/+1
| | | | llvm-svn: 172369
* Fixed an infinite loop in the block escape in analysis in ObjCARC caused by ↵Michael Gottesman2013-01-132-3/+100
| | | | | | | | 2x blocks each assigned a value via a phi-node causing each to depend on the other. A test case is provided as well. llvm-svn: 172368
* Fix typo in comment.Nick Lewycky2013-01-131-1/+1
| | | | llvm-svn: 172364
* fix compile-time regression report by Joerg Sonnenberger:Nuno Lopes2013-01-132-10/+14
| | | | | | cache result of Size/OffsetVisitor to speedup analysis of PHI nodes llvm-svn: 172363
* Documentation: use monospaced font for intrinsics' namesDmitri Gribenko2013-01-131-10/+10
| | | | llvm-svn: 172360
* Fix broken link to LangRefDmitri Gribenko2013-01-131-11/+10
| | | | llvm-svn: 172359
* Remove redundant 'llvm::' qualificationsDmitri Gribenko2013-01-1313-47/+47
| | | | llvm-svn: 172358
* Update links to "Itanium C++ ABI: Exception Handling" documentDmitri Gribenko2013-01-131-9/+9
| | | | llvm-svn: 172356
* X86: Add patterns for X86ISD::VSEXT in registers.Benjamin Kramer2013-01-132-0/+218
| | | | | | | Those can occur when something between the sextload and the store is on the same chain and blocks isel. Fixes PR14887. llvm-svn: 172353
* Fix PR14547. Handle induction variables of small sizes smaller than i32 (i8 ↵Nadav Rotem2013-01-132-0/+38
| | | | | | and i16). llvm-svn: 172348
* [ObjCARC] Even more debug messages!Michael Gottesman2013-01-131-1/+17
| | | | llvm-svn: 172347
* [ObjCARC] More debug messages.Michael Gottesman2013-01-131-4/+29
| | | | llvm-svn: 172346
* Fix an editor goof in r171738 that Bill spotted. He may even have a testChandler Carruth2013-01-121-1/+1
| | | | | | | | case, but looking at the diff this was an obviously unintended change. Thanks for the careful review Bill! =] llvm-svn: 172336
* Use more canonical exception-handling link in docs.Tim Northover2013-01-121-1/+1
| | | | llvm-svn: 172325
* When lowering an inreg sext first shift left, then right arithmetically.Benjamin Kramer2013-01-122-6/+6
| | | | | | | Shifting right two times will only yield zero. Should fix SingleSource/UnitTests/SignlessTypes/factor. llvm-svn: 172322
OpenPOWER on IntegriCloud