- Jun 07, 2017
-
-
Peter Smith authored
Thunks are now generated per InputSectionDescription instead of per OutputSection. This allows created ThunkSections to be inserted directly into InputSectionDescription. Changes in this patch: - Loop over InputSectionDescriptions to find relocations to Thunks - Generate a ThunkSection per InputSectionDescription - Remove synchronize() as we no longer need it - Move fabricateDefaultCommands() before createThunks Differential Revision: https://reviews.llvm.org/D33835 llvm-svn: 304887
-
George Rimar authored
Previously we would merge relocation sections by name. That did not work in some cases, like testcase shows. Patch implements logic to merge relocation sections if their target sections were merged into the same output section. Differential revision: https://reviews.llvm.org/D33824 llvm-svn: 304886
-
Diana Picus authored
This is identical to the support for the other binary operators: - widen to s32 - map into GPR - select ANDrr (via TableGen'erated code) llvm-svn: 304885
-
Florian Hahn authored
Summary: This patch updates Triple::isCompatibleWith to make armxx and thumbxx triples compatible, as long as the subarch, vendor, os, envorionment and object format match. Thumb/ARM code generation should be controlled using the thumb-mode per-function target feature rather than by the triple to allow mixing Thumb and ARM functions. D33448 updates Clang's codegen to add thumb-mode for all functions with armxx or thumbxx triples. Reviewers: echristo, t.p.northover, rafael, kristof.beyls, rengolin, tejohnson Reviewed By: tejohnson Subscribers: rinon, eugenis, pcc, srhines, aemerson, mehdi_amini, javed.absar, llvm-commits Differential Revision: https://reviews.llvm.org/D33287 llvm-svn: 304884
-
Eric Fiselier authored
llvm-svn: 304883
-
Florian Hahn authored
Summary: Relocations are required for unconditional branches to function symbols with different execution mode. Without this patch, incorrect branches are generated for tail calls between functions with different execution mode. Reviewers: peter.smith, rafael, echristo, kristof.beyls Reviewed By: peter.smith Subscribers: aemerson, javed.absar, llvm-commits Differential Revision: https://reviews.llvm.org/D33898 llvm-svn: 304882
-
George Rimar authored
When linking linux kernel LLD currently reports next errors: ld: error: unable to evaluate expression: input section .head.text has no output section assigned ld: error: At least one side of the expression must be absolute ld: error: At least one side of the expression must be absolute That does not provide file/line information and overall looks unclear. Patch adds location information to ExprValue and that allows to provide more clear error messages. Differential revision: https://reviews.llvm.org/D33943 llvm-svn: 304881
-
Maxim Ostapenko authored
This commit adds a testcase for uncovered code paths in LSan options parsing logic in driver. Differential Revision: https://reviews.llvm.org/D33941 llvm-svn: 304880
-
Alexander Kornienko authored
The check failed to match iterator->const_iterator conversion that is happening at least when using the libstdc++'s vector. We might want to make it match even more flexible patterns, if we see more false negatives. llvm-svn: 304879
-
Eric Fiselier authored
llvm-svn: 304878
-
Craig Topper authored
I copy and pasted from isNullValue and forgot to update it. llvm-svn: 304877
-
Craig Topper authored
[InstCombine][InstSimplify] Use APInt::isNullValue/isOneValue to reduce compiled code for comparing APInts with 0 and 1. NFC These methods are specifically optimized to only counting leading zeros without an additional uint64_t compare. llvm-svn: 304876
-
Craig Topper authored
[InstCombine] Fix two asserts that were accidentally checking that an APInt pointer is non-zero instead of checking that the APInt self is non-zero. I believe this code used to use APInt references which would have worked. But then they were changed to pointers to allow m_APInt to be used. llvm-svn: 304875
-
Galina Kistanova authored
llvm-svn: 304874
-
Galina Kistanova authored
llvm-svn: 304873
-
Galina Kistanova authored
llvm-svn: 304872
-
Galina Kistanova authored
llvm-svn: 304871
-
Galina Kistanova authored
llvm-svn: 304870
-
NAKAMURA Takumi authored
llvm-svn: 304869
-
NAKAMURA Takumi authored
llvm-svn: 304868
-
Zachary Turner authored
llvm-svn: 304867
-
Zachary Turner authored
This breaks the MinGW build, but not other builds for some reason. llvm-svn: 304866
-
Zachary Turner authored
Hopefully this unbreaks the bots. llvm-svn: 304865
-
Zachary Turner authored
This creates a new library called BinaryFormat that has all of the headers from llvm/Support containing structure and layout definitions for various types of binary formats like dwarf, coff, elf, etc as well as the code for identifying a file from its magic. Differential Revision: https://reviews.llvm.org/D33843 llvm-svn: 304864
-
Galina Kistanova authored
Fixed warning: 'virtual void clang::ExternalASTSource::CompleteType(clang::ObjCInterfaceDecl*)' was hidden. llvm-svn: 304863
-
Richard Smith authored
RecursiveASTVisitor was not properly recursing through a SubstTemplateTypeParmTypes, resulting in crashes in pack expansion where we couldn't always find an unexpanded pack within a pack expansion. We also have an issue where substitution of deduced template arguments for an implicit deduction guide creates the "impossible" case of naming a non-dependent member of the current instantiation, but within a specialization that is actually instantiated from a different (partial/explicit) specialization of the template. We resolve this by declaring that constructors that do so can only be used to deduce specializations of the primary template. I'm running this past CWG to see if people agree this is the right thing to do. llvm-svn: 304862
-
Rafael Espindola authored
This now just requires not calling assignOffsets after it. llvm-svn: 304861
-
Rafael Espindola authored
Before this patch in -r we compute the OutputSection sizes early in the various calls to assignOffsets. With this change we can remove most of those calls. llvm-svn: 304860
-
Dan Gohman authored
The WebAssembly threads proposal has changed such that C++ implementations can now declare that atomics up to 64 bits are "lock free" in C++'s terms. llvm-svn: 304859
-
Vitaly Buka authored
GNU version of strerror_r returns a result pointer that doesn't match the input buffer. The result pointer is in fact a pointer to some internal storage. TSAN was recording a write to this location, which was incorrect. Fixed https://github.com/google/sanitizers/issues/696 llvm-svn: 304858
-
Craig Topper authored
[LazyValueInfo] Remove redundant calls to ConstantRange::contains. The same exact call was made in the if above and we already know it returned true. NFC llvm-svn: 304857
-
Craig Topper authored
llvm-svn: 304856
-
Craig Topper authored
[Constants] Use APInt::isNullValue/isOneValue/uge to simplify some code and take advantage of APInt optimizations. NFC llvm-svn: 304855
-
Craig Topper authored
[APInt] Add a isOneValue method that can determine if a number is 1 by only using getActiveBits/countLeadingZeros Previously you would have to use operator==(uint64_t) which does the getActiveBits call and a uint64_t comparison. But we can get all we need to know from the getActiveBits call. This method will be used in another commit. llvm-svn: 304854
-
Tony Tye authored
Builds sucessfully with Sphinx v1.5.5 Differential Revision: https://reviews.llvm.org/D33736 llvm-svn: 304853
-
Richard Smith authored
template is valid with or without it (with different meanings). If we see "dependent.x<...", and what follows the '<' is a valid expression, we must parse the '<' as a comparison rather than a template angle bracket. When we later come to instantiate, if we find that the LHS of the '<' actually names an overload set containing function templates, produce a diagnostic suggesting that the 'template' keyword was missed rather than producing a mysterious diagnostic saying that the function must be called (and pointing at what looks to already be a function call!). llvm-svn: 304852
-
NAKAMURA Takumi authored
Introduce the new feature "abi-breaking-checks" to satisfy -reverse-iterate in llvm/test/Transforms/Util/PredicateInfo/ A few tests in llvm/test/Transforms/Util/PredicateInfo/ are using -reverse-iterate. The option -reverse-iterate is enabled with +Asserts in usual cases, but it can be turned on/off regardless of LLVM_ENABLE_ASSERTIONS. I wonder if this were incompatible to https://reviews.llvm.org/D33908 (r304757). Differential Revision: https://reviews.llvm.org/D33854 llvm-svn: 304851
-
Quentin Colombet authored
Spills of undef values shouldn't impact the placement of the relevant spills. Drive by review. llvm-svn: 304850
-
Sanjay Patel authored
I'd like to enable CGP memcmp expansion for x86, but the output from CGP would regress the special cases (memcmp(x,y,N) != 0 for N=1,2,4,8,16,32 bytes) that we already handle. I'm not sure if we'll actually be able to produce the optimal code given the block-at-a-time limitation in the DAG. We might have to just avoid those special-cases here in CGP. But regardless of that, I think this is a win for the more general cases. http://rise4fun.com/Alive/cbQ Differential Revision: https://reviews.llvm.org/D33963 llvm-svn: 304849
-
Tony Tye authored
Remove extra tabs. Builds sucessfully with Sphinx v1.5.5 Differential Revision: https://reviews.llvm.org/D33736 llvm-svn: 304848
-