| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
This reapplies commit r309034 with a bugfix+test for inlined variables.
llvm-svn: 309057
|
| |
|
|
|
|
|
|
|
|
| |
This is needed, among others, to respect --section-ordering-file
with LTO. I'll follow up with a similar change for data sections.
I hope every version of gold available on the bots has support for
--section-ordering file.
llvm-svn: 309056
|
| |
|
|
|
|
|
|
| |
namespaces."
This reverts commit 813308e240792ca70ed2f998f21df24a5061ada0.
llvm-svn: 309050
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Does a simple merge, where mergeable elements are combined, all others
are appended. Does not apply trickly namespace rules.
Subscribers: llvm-commits, hiraditya
Differential Revision: https://reviews.llvm.org/D35753
llvm-svn: 309047
|
| |
|
|
|
|
|
|
| |
started""
This reverts commit 0d9d9250483761eb2f50236830161b0e2137d483.
llvm-svn: 309045
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As discussed on llvm-dev I've implemented the first basic steps towards
llvm-objcopy/llvm-objtool (name pending).
This change adds the ability to copy (without modification) 64-bit
little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS,
SHT_NULL and SHT_STRTAB sections.
Patch by Jake Ehrlich
Differential Revision: https://reviews.llvm.org/D33964
llvm-svn: 309043
|
| |
|
|
|
|
|
|
| |
started""
This reverts commit 960873b10dd071298c817ba74ef2228f94ead7a1.
llvm-svn: 309037
|
| |
|
|
|
|
| |
This reverts commit r309034 because of a sanitizer issue.
llvm-svn: 309035
|
| |
|
|
|
|
| |
<rdar://problem/17816343>
llvm-svn: 309034
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As discussed on llvm-dev I've implemented the first basic steps towards
llvm-objcopy/llvm-objtool (name pending).
This change adds the ability to copy (without modification) 64-bit
little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS,
SHT_NULL and SHT_STRTAB sections.
Patch by Jake Ehrlich
Differential Revision: https://reviews.llvm.org/D33964
llvm-svn: 309032
|
| |
|
|
|
|
|
|
| |
The comment ended up outdated when the test was rewritten in SVN r192281.
Differential Revision: https://reviews.llvm.org/D35543
llvm-svn: 309016
|
| |
|
|
|
|
|
|
| |
The existing tests only tested how a va_start is lowered.
Differential Revision: https://reviews.llvm.org/D35540
llvm-svn: 309015
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
ELF linkers generate __start_<secname> and __stop_<secname> symbols
when there is a value in a section <secname> where the name is a valid
C identifier. If dead stripping determines that the values declared
in section <secname> are dead, and we then internalize (and delete)
such a symbol, programs that reference the corresponding start and end
section symbols will get undefined reference linking errors.
To fix this, add the section name to the IRSymtab entry when a symbol is
defined in a specific section. Then use this in the gold-plugin to mark
the symbol as external and visible from outside the summary when the
section name is a valid C identifier.
Reviewers: pcc
Subscribers: mehdi_amini, inglorion, eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D35639
llvm-svn: 309009
|
| |
|
|
|
|
|
|
|
| |
This patch just adds printing of CR bit registers in a more human-readable
form akin to that used by the GNU binutils.
Differential Revision: https://reviews.llvm.org/D31494
llvm-svn: 309001
|
| |
|
|
|
|
|
| |
This is just a recommit since the issue that the commit exposed is now
resolved.
llvm-svn: 308995
|
| |
|
|
|
|
|
|
|
|
|
|
| |
D35067/rL308322 attempted to support up to 4 load pairs for memcmp inlining which resulted in regressions for some optimized libc memcmp implementations (PR33914).
Until we can match these more optimal cases, this patch reduces the memcmp expansion to a maximum of 2 load pairs (which matches what we do for -Os).
This patch should be considered for the 5.0.0 release branch as well
Differential Revision: https://reviews.llvm.org/D35830
llvm-svn: 308986
|
| |
|
|
| |
llvm-svn: 308981
|
| |
|
|
| |
llvm-svn: 308980
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Some SPARC TLS relocations were applying nontrivial adjustments
to zero value, leading to unexpected non-zero values in ELF and then
Solaris linker failures.
Getting rid of these adjustments.
Fixes PR33825.
Reviewers: rafael, asb, jyknight
Subscribers: joerg, jyknight, llvm-commits
Differential Revision: https://reviews.llvm.org/D35567
llvm-svn: 308978
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D35115
llvm-svn: 308972
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
it when safe.
Very often the BE count is the trip count minus one, and the plus one
here should fold with that minus one. But because the BE count might in
theory be UINT_MAX or some such, adding one before we extend could in
some cases wrap to zero and break when we scale things.
This patch checks to see if it would be safe to add one because the
specific case that would cause this is guarded for prior to entering the
preheader. This should handle essentially all of the common loop idioms
coming out of C/C++ code once canonicalized by LLVM.
Before this patch, both forms of loop in the added test cases ended up
subtracting one from the size, extending it, scaling it up by 8 and then
adding 8 back onto it. This is really silly, and it turns out made it
all the way into generated code very often, so this is a surprisingly
important cleanup to do.
Many thanks to Sanjoy for showing me how to do this with SCEV.
Differential Revision: https://reviews.llvm.org/D35758
llvm-svn: 308968
|
| |
|
|
| |
llvm-svn: 308964
|
| |
|
|
| |
llvm-svn: 308963
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Do not assume little endian architecture in DAGCombiner::visitTRUNCATE and DAGCombiner::visitEXTRACT_VECTOR_ELT.
PR33682
Reviewers: hfinkel, sdardis, RKSimon
Reviewed By: sdardis, RKSimon
Subscribers: uabelho, RKSimon, sdardis, llvm-commits
Differential Revision: https://reviews.llvm.org/D34990
llvm-svn: 308960
|
| |
|
|
|
|
|
|
|
|
| |
Enable runtime and partial loop unrolling of simple loops without
calls on M-class cores. The thresholds are calculated based on
whether the target is Thumb or Thumb-2.
Differential Revision: https://reviews.llvm.org/D34619
llvm-svn: 308956
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Create a dummy 8 byte fixed object for the unused slot below the first
stored vararg.
Alternative ideas tested but skipped: One could try to align the whole
fixed object to 16, but I haven't found how to add an offset to the stack
frame used in LowerWin64_VASTART.
If only the size of the fixed stack object size is padded but not the offset, via
MFI.CreateFixedObject(alignTo(GPRSaveSize, 16), -(int)GPRSaveSize, false),
PrologEpilogInserter crashes due to "Attempted to reset backwards range!".
This fixes misconceptions about where registers are spilled, since
AArch64FrameLowering.cpp assumes the offset from fixed objects is
aligned to 16 bytes (and the Win64 case there already manually aligns
the offset to 16 bytes).
This fixes cases where local stack allocations could overwrite callee
saved registers on the stack.
Differential Revision: https://reviews.llvm.org/D35720
llvm-svn: 308950
|
| |
|
|
|
|
| |
windows hosts.
llvm-svn: 308943
|
| |
|
|
| |
llvm-svn: 308942
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This starts the development on one of MS Visual Studio binutils,
Resource Converter. The tool compiles resource scripts (.rc)
into binary resource files (.res).
The current implementation does nothing but parse the command
line arguments. It is going to be extended in the future.
Differential Revision: https://reviews.llvm.org/D35810
llvm-svn: 308940
|
| |
|
|
|
|
|
|
| |
then it should be greater than lowPC for each range.
Differential Revision: https://reviews.llvm.org/D35733
llvm-svn: 308928
|
| |
|
|
| |
llvm-svn: 308917
|
| |
|
|
| |
llvm-svn: 308914
|
| |
|
|
|
|
| |
This patch doesn't modifay any non test file.
llvm-svn: 308909
|
| |
|
|
|
|
|
|
|
| |
This matches DMD:
https://github.com/dlang/dmd/blob/522263965cf3a27ed16b31f3c3562db86cdeabec/src/ddmd/backend/cv8.c#L199
Fixes PR33899.
llvm-svn: 308890
|
| |
|
|
|
|
|
|
|
|
|
| |
instructions that were missing.
patterns were missed by D33188. Adding for completion.
+Updating test.
Differential Revesion: https://reviews.llvm.org/D35179
llvm-svn: 308868
|
| |
|
|
|
|
|
|
| |
I have a much better way of running integration tests now.
https://github.com/dylanmckay/avr-test-suite
llvm-svn: 308857
|
| |
|
|
|
|
| |
Patch by Carl Peto.
llvm-svn: 308856
|
| |
|
|
|
|
|
|
|
|
| |
optimization
Patch by Roland McGrath
Differential Revision: https://reviews.llvm.org/D35748
llvm-svn: 308854
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: dblaikie, t.p.northover, rengolin
Reviewed By: rengolin
Subscribers: aemerson, rengolin, javed.absar, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D35620
llvm-svn: 308852
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch removes unnecessary zero copies in BBs that are targets of b.eq/b.ne
and we know the result of the compare instruction is zero. For example,
BB#0:
subs w0, w1, w2
str w0, [x1]
b.ne .LBB0_2
BB#1:
mov w0, wzr ; <-- redundant
str w0, [x2]
.LBB0_2
Differential Revision: https://reviews.llvm.org/D35075
llvm-svn: 308849
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When SCEV calculates product of two SCEVAddRecs from the same loop, it
tries to combine them into one big AddRecExpr. If the sizes of the initial
SCEVs were `S1` and `S2`, the size of their product is `S1 + S2 - 1`, and every
operand of the resulting SCEV is combined from operands of initial SCEV and
has much higher complexity than they have.
As result, if we try to calculate something like:
%x1 = {a,+,b}
%x2 = mul i32 %x1, %x1
%x3 = mul i32 %x2, %x1
%x4 = mul i32 %x3, %x2
...
The size of such SCEVs grows as `2^N`, and the arguments
become more and more complex as we go forth. This leads
to long compilation and huge memory consumption.
This patch sets a limit after which we don't try to combine two
`SCEVAddRecExpr`s into one. By default, max allowed size of the
resulting AddRecExpr is set to 16.
Differential Revision: https://reviews.llvm.org/D35664
llvm-svn: 308847
|
| |
|
|
|
|
|
|
| |
complexity adjustment to keep shift by immediate using the legacy instructions.
These patterns were only missing to favor using the legacy instructions when the shift was a constant. With careful adjustment of the pattern complexity we can make sure the immediate instructions still have priority over these patterns.
llvm-svn: 308834
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Check the actual memory type stored and not the extended value size
when considering if truncated store merge is worthwhile.
Reviewers: efriedma, RKSimon, spatel, jyknight
Reviewed By: efriedma
Subscribers: llvm-commits, nhaehnle
Differential Revision: https://reviews.llvm.org/D35623
llvm-svn: 308833
|
| |
|
|
|
|
|
|
| |
started""
This reverts commit 2b52298eb28ba4d3eca113353a348c02a6ef1f93.
llvm-svn: 308822
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As discussed on llvm-dev I've implemented the first basic steps towards
llvm-objcopy/llvm-objtool (name pending).
This change adds the ability to copy (without modification) 64-bit
little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS,
SHT_NULL and SHT_STRTAB sections.
Patch by Jake Ehrlich
Differential Revision: https://reviews.llvm.org/D33964
llvm-svn: 308821
|
| |
|
|
|
|
| |
compatibility.
llvm-svn: 308818
|
| |
|
|
|
|
| |
Fixes PR32805.
llvm-svn: 308817
|
| |
|
|
| |
llvm-svn: 308814
|
| |
|
|
|
|
|
|
|
| |
This case is similar to the one fixed in r308808,
except when rematerializing.
Fixes bug 33884.
llvm-svn: 308813
|
| |
|
|
|
|
|
|
|
| |
This is possible if there is an undef use when
splitting the vreg during spilling.
Fixes bug 33620.
llvm-svn: 308808
|