- Aug 22, 2013
-
-
Mihai Popa authored
The instruction to convert between floating point and fixed point representations takes an immediate operand for the number of fractional bits of the fixed point value. ARMARM specifies that when that number of bits is zero, the assembler should encode floating point/integer conversion instructions. This patch adds the necessary instruction aliases to achieve this behaviour. llvm-svn: 189009
-
Edwin Vane authored
Introducing new tool 'clang-replace' that finds files containing serialized Replacements and applies those changes after deduplication and detecting conflicts. Currently the tool does not apply changes. It stops just after the deduplication and conflict report phase. Forthcoming patches will complete functionality. Both build systems updated for new tool. Includes a conflict test case. clang-replace added to Doxygen build. Differential Revision: http://llvm-reviews.chandlerc.com/D1424 llvm-svn: 189008
-
Chandler Carruth authored
using GEPs. Previously, it used a number of different heuristics for analyzing the GEPs. Several of these were conservatively correct, but failed to fall back to SCEV even when SCEV might have given a reasonable answer. One was simply incorrect in how it was formulated. There was good code already to recursively evaluate the constant offsets in GEPs, look through pointer casts, etc. I gathered this into a form code like the SLP code can use in a previous commit, which allows all of this code to become quite simple. There is some performance (compile time) concern here at first glance as we're directly attempting to walk both pointers constant GEP chains. However, a couple of thoughts: 1) The very common cases where there is a dynamic pointer, and a second pointer at a constant offset (usually a stride) from it, this code will actually not do any unnecessary work. 2) InstCombine and other passes work very hard to collapse constant GEPs, so it will be rare that we iterate here for a long time. That said, if there remain performance problems here, there are some obvious things that can improve the situation immensely. Doing a vectorizer-pass-wide memoizer for each individual layer of pointer values, their base values, and the constant offset is likely to be able to completely remove redundant work and strictly limit the scaling of the work to scrape these GEPs. Since this optimization was not done on the prior version (which would still benefit from it), I've not done it here. But if folks have benchmarks that slow down it should be straight forward for them to add. I've added a test case, but I'm not really confident of the amount of testing done for different access patterns, strides, and pointer manipulation. llvm-svn: 189007
-
Joey Gouly authored
we pass these tests with -verify-machineinstrs. llvm-svn: 189006
-
Elena Demikhovsky authored
llvm-svn: 189005
-
Manuel Klimek authored
This reverts commit 606f5d7a99b11957e057e4cd1f55f931f66a42c7. llvm-svn: 189004
-
Manuel Klimek authored
Revert "Remove some unused variables identified by Juergen Ributzka *I need to turn on this warning in Visual C++ - sorry!*" This reverts commit d01d0b63d87ac465f15ce1d6b56bf3faf4525769. llvm-svn: 189003
-
Logan Chien authored
The function call to external function should come with PLT relocation type if the PIC relocation model is used. llvm-svn: 189002
-
NAKAMURA Takumi authored
llvm-svn: 189001
-
Chandler Carruth authored
pointers, but accumulate the offset into an APInt in the process of stripping it. This is a pretty handy thing to have, such as when trying to determine if two pointers are at some constant relative offset. I'll be committing a patch shortly to use it for exactly that purpose. llvm-svn: 189000
-
NAKAMURA Takumi authored
PageSize, aka AllocationGranularity, is 65536 on Win32 (and Cygwin). llvm-svn: 188999
-
NAKAMURA Takumi authored
The AllocationGranularity can be 65536 on Win32, even on Cygwin. llvm-svn: 188998
-
Chandler Carruth authored
Value. These methods probably don't belong here, and I'm discussing moving the lot of them to a better home, but for now I'm about to extend their functionality and wanted to tidy them up first. llvm-svn: 188997
-
David Majnemer authored
llvm-svn: 188996
-
Tim Northover authored
Back in the mists of time (2008), it seems TableGen couldn't handle the patterns necessary to match ARM's CMOV node that we convert select operations to, so we wrote a lot of fairly hairy C++ to do it for us. TableGen can deal with it now: there were a few minor differences to CodeGen (see tests), but nothing obviously worse that I could see, so we should probably address anything that *does* come up in a localised manner. llvm-svn: 188995
-
Robert Wilhelm authored
changing Parameter from MutableArrayRef to ArrayRef. No functionality change intended. llvm-svn: 188994
-
Dmitri Gribenko authored
This tests warning flags, so no need to test for specific alignment which is platform-dependent. llvm-svn: 188993
-
David Majnemer authored
llvm-svn: 188992
-
Craig Topper authored
llvm-svn: 188991
-
Tim Northover authored
The code for 'Q' and 'R' operand modifiers needs to look through tied operands to discover the register class. llvm-svn: 188990
-
Craig Topper authored
llvm-svn: 188989
-
Shankar Easwaran authored
llvm-svn: 188988
-
Michael Gottesman authored
[stackprotector] When finding the split point to splice off the end of a parentmbb into a successmbb, include any DBG_VALUE MI. Fix for PR16954. llvm-svn: 188987
-
Craig Topper authored
Constify the ASTContext& passed to Stmt creation functions. Also constify the context in couple other functions that are called from creation functions. llvm-svn: 188986
-
Craig Topper authored
Constify the ASTContext& passed to Expr creation functions. Also constify the context in couple other functions that are called from creation functions. llvm-svn: 188985
-
Craig Topper authored
llvm-svn: 188984
-
Shankar Easwaran authored
llvm-svn: 188983
-
Shankar Easwaran authored
llvm-svn: 188982
-
Shankar Easwaran authored
llvm-svn: 188981
-
Matt Arsenault authored
llvm-svn: 188980
-
Faisal Vali authored
Remove some unused variables identified by Juergen Ributzka *I need to turn on this warning in Visual C++ - sorry!* llvm-svn: 188979
-
Shankar Easwaran authored
llvm-svn: 188978
-
Faisal Vali authored
Specifically, the following features are not included in this commit: - any sort of capturing within generic lambdas - nested lambdas - conversion operator for captureless lambdas - ensuring all visitors are generic lambda aware As an example of what compiles: template <class F1, class F2> struct overload : F1, F2 { using F1::operator(); using F2::operator(); overload(F1 f1, F2 f2) : F1(f1), F2(f2) { } }; auto Recursive = [](auto Self, auto h, auto ... rest) { return 1 + Self(Self, rest...); }; auto Base = [](auto Self, auto h) { return 1; }; overload<decltype(Base), decltype(Recursive)> O(Base, Recursive); int num_params = O(O, 5, 3, "abc", 3.14, 'a'); Please see attached tests for more examples. Some implementation notes: - Add a new Declarator context => LambdaExprParameterContext to clang::Declarator to allow the use of 'auto' in declaring generic lambda parameters - Augment AutoType's constructor (similar to how variadic template-type-parameters ala TemplateTypeParmDecl are implemented) to accept an IsParameterPack to encode a generic lambda parameter pack. - Add various helpers to CXXRecordDecl to facilitate identifying and querying a closure class - LambdaScopeInfo (which maintains the current lambda's Sema state) was augmented to house the current depth of the template being parsed (id est the Parser calls Sema::RecordParsingTemplateParameterDepth) so that Sema::ActOnLambdaAutoParameter may use it to create the appropriate list of corresponding TemplateTypeParmDecl for each auto parameter identified within the generic lambda (also stored within the current LambdaScopeInfo). Additionally, a TemplateParameterList data-member was added to hold the invented TemplateParameterList AST node which will be much more useful once we teach TreeTransform how to transform generic lambdas. - SemaLambda.h was added to hold some common lambda utility functions (this file is likely to grow ...) - Teach Sema::ActOnStartOfFunctionDef to check whether it is being called to instantiate a generic lambda's call operator, and if so, push an appropriately prepared LambdaScopeInfo object on the stack. - Teach Sema::ActOnStartOfLambdaDefinition to set the return type of a lambda without a trailing return type to 'auto' in C++1y mode, and teach the return type deduction machinery in SemaStmt.cpp to process either C++11 and C++14 lambda's correctly depending on the flag. - various tests were added - but much more will be needed. A greatful thanks to all reviewers including Eli Friedman, James Dennett and the ever illuminating Richard Smith. And yet I am certain that I have allowed unidentified bugs to creep in; bugs, that I will do my best to slay, once identified! Thanks! llvm-svn: 188977
-
Hans Wennborg authored
Since it's an llvm-internal tool, we shouldn't install it. llvm-svn: 188976
-
Larisse Voufo authored
llvm-svn: 188975
-
Larisse Voufo authored
llvm-svn: 188974
-
Virgile Bello authored
llvm-svn: 188973
-
Virgile Bello authored
llvm-svn: 188972
-
Bill Wendling authored
llvm-svn: 188971
-
Eli Friedman authored
llvm-svn: 188970
-