| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cover the following cases:
ldr X, [x0, #32]
...
add x0, x0, #32
->
ldr X, [x0, #32]!
with X being either w1, x1, s0, d0 or q0.
llvm-svn: 209624
|
| |
|
|
|
|
| |
see PR17409
llvm-svn: 209623
|
| |
|
|
|
|
| |
clear we should use GnuWin32 rather than Cygwin on the PATH on Windows (see PR19744)
llvm-svn: 209622
|
| |
|
|
| |
llvm-svn: 209621
|
| |
|
|
|
|
| |
gnuwin/lit correctly
llvm-svn: 209620
|
| |
|
|
| |
llvm-svn: 209619
|
| |
|
|
|
|
|
|
| |
We have a couple of regression tests for load/store pairing, but (to my knowledge) there are no regression tests for the load/store + add/sub folding.
As a first step towards increased test coverage of this area, this commit adds a test for one instance of a load + add to pre-indexed load transformation.
llvm-svn: 209618
|
| |
|
|
|
|
|
|
|
|
| |
programmatically
and via the command line, mirroring similar functionality in LoopUnroll. In
situations where clients used custom unrolling thresholds, their intent could
previously be foiled by LoopRotate having a hardcoded threshold.
llvm-svn: 209617
|
| |
|
|
|
|
| |
size of global GOT entries map for that.
llvm-svn: 209616
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before:
void f()
{
[object
someMethod:@
{ @"a" : @"b" }];
}
After:
void f()
{
[object someMethod:@{ @"a" : @"b" }];
}
This fixes llvm.org/PR19854.
llvm-svn: 209615
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was previously regressed/broken by r192749 (reverted due to this
issue in r192938) and I was about to break it again by accident with
some more invasive changes that deal with the subprogram lists. So to
avoid that and further issues - here's a test.
It's a pretty basic test - in both r192749 and my impending case, this
test would crash, but checking the basics (that we put a subprogram in
just one of the two CUs) seems like a good start.
We still get this wrong in weird ways if the linkonce-odr function
happens to not be identical in the metadata (because it's defined in two
different files (hence the # line directives in this test), etc) even
though it meets the language requirements (identical token stream) for
such a thing. That results in two subprogram DIEs, but only one of them
gets the parameter and high/low pc information, etc. We probably need to
use the DIRef infrastructure to deduplicate functions as we do types to
address this issue - or perhaps teach the BC linker to remove the
duplicate entries in subprogram lists?
llvm-svn: 209614
|
| |
|
|
| |
llvm-svn: 209613
|
| |
|
|
| |
llvm-svn: 209612
|
| |
|
|
|
|
|
| |
Post commit review feedback from Manman called this out, but it looks
like it slipped through the cracks.
llvm-svn: 209611
|
| |
|
|
|
|
| |
Thanks to David Blaikie for the suggestion.
llvm-svn: 209610
|
| |
|
|
| |
llvm-svn: 209609
|
| |
|
|
| |
llvm-svn: 209608
|
| |
|
|
|
|
|
|
|
|
|
| |
Remove the use of the std::function and replace the capturing lambda with a
non-capturing one, opting to pass the user data down to the context. This is
needed as std::function is not yet available on all hosted platforms (it
requires RTTI, which breaks on Windows).
Thanks to Nico Rieck for pointing this out!
llvm-svn: 209607
|
| |
|
|
|
|
|
|
|
|
| |
Move the implementation of the Win64 EH printer from the COFFDumper into its own
class. This is in preparation for adding support to print ARM EH information.
The only real change here is in printUnwindInfo where we now lambda lift the
implicit this parameter for the resolveFunction. Also setup the printing to
handle ARM. This now has set the stage to introduce ARM EH printing.
llvm-svn: 209606
|
| |
|
|
|
|
|
| |
This inlines the single use function in preparation for splitting the Win64EH
printing out of the COFFDumper into its own entity.
llvm-svn: 209605
|
| |
|
|
|
|
|
|
|
|
| |
Make the use of the cache more transparent to the users. There is no reason
that the cached entries really need to be passed along. The overhead for doing
so is minimal: a single extra parameter. This requires that some standalone
functions be brought into the COFFDumper class so that they may access the
cache.
llvm-svn: 209604
|
| |
|
|
|
|
|
| |
Switch to use references for parameters that are guaranteed to be non-null.
Simplifies the code a slight bit in preparation for another change.
llvm-svn: 209603
|
| |
|
|
|
|
|
|
|
|
|
| |
Seems my previous fix was insufficient - we were still not adding the
inlined function to the abstract scope list. Which meant it wasn't
flagged as inline, didn't have nested lexical scopes in the abstract
definition, and didn't have abstract variables - so the inlined variable
didn't reference an abstract variable, instead being described
completely inline.
llvm-svn: 209602
|
| |
|
|
|
|
|
|
|
| |
straight to llvm-dwarfdump
We still do temporary files in many cases, just updating this particular
one because I was debugging it and made this change while doing so.
llvm-svn: 209601
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently we look at the Aliasee to decide what type of export
directive to use. It seems better to use the type of the alias
directly. This is similar to how we handle the alias having the
same address but other attributes (linkage, visibility) from the
aliasee.
With this patch it is now possible to do things like
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"
@foo = global [6 x i8] c"\B8*\00\00\00\C3", section ".text", align 16
@f = dllexport alias i32 (), [6 x i8]* @foo
!llvm.module.flags = !{!0}
!0 = metadata !{i32 6, metadata !"Linker Options", metadata !1}
!1 = metadata !{metadata !2, metadata !3}
!2 = metadata !{metadata !"/DEFAULTLIB:libcmt.lib"}
!3 = metadata !{metadata !"/DEFAULTLIB:oldnames.lib"}
llvm-svn: 209600
|
| |
|
|
|
|
| |
The " at the end of the line makes sure we matched the entire directive.
llvm-svn: 209599
|
| |
|
|
| |
llvm-svn: 209598
|
| |
|
|
| |
llvm-svn: 209597
|
| |
|
|
| |
llvm-svn: 209596
|
| |
|
|
|
|
|
|
|
|
| |
This extension point allows adding passes that perform peephole optimizations
similar to the instruction combiner. These passes will be inserted after
each instance of the instruction combiner pass.
Differential Revision: http://reviews.llvm.org/D3905
llvm-svn: 209595
|
| |
|
|
|
|
| |
perform calculations for R_MIPS_GOT16 and R_MIPS_CALL16 relocations.
llvm-svn: 209594
|
| |
|
|
|
|
| |
separate function.
llvm-svn: 209593
|
| |
|
|
|
|
| |
the MipsELFWriters member function.
llvm-svn: 209592
|
| |
|
|
| |
llvm-svn: 209591
|
| |
|
|
|
|
| |
perform similar calculations.
llvm-svn: 209590
|
| |
|
|
| |
llvm-svn: 209589
|
| |
|
|
| |
llvm-svn: 209588
|
| |
|
|
|
|
| |
Sort the source files. NFC.
llvm-svn: 209587
|
| |
|
|
| |
llvm-svn: 209586
|
| |
|
|
|
|
|
|
|
| |
The code emitted is what would be expected for the small model, so it
shouldn't be used when objects can be the full 64-bits away.
This fixes MCJIT tests on Linux.
llvm-svn: 209585
|
| |
|
|
| |
llvm-svn: 209584
|
| |
|
|
|
|
| |
unavailable on msc17.
llvm-svn: 209583
|
| |
|
|
| |
llvm-svn: 209582
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 209581
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This makes front/back symmetric with begin/end, avoiding some confusion.
Added instr_front/instr_back for the old behavior, corresponding to
instr_begin/instr_end. Audited all three in-tree users of back(), all
of them look like they don't want to look inside bundles.
Fixes an assertion (PR19815) when generating debug info on mips, where a
delay slot was bundled at the end of a branch.
llvm-svn: 209580
|
| |
|
|
|
|
| |
This keeps Clang consistent with backend naming conventions.
llvm-svn: 209579
|
| |
|
|
|
|
|
|
|
|
|
| |
A few (mostly CodeGen) parts of Clang were tightly coupled to the
AArch64 backend. Now that it's gone, they will not even compile.
I've also deduplicated RUN lines in many of the AArch64 tests. This
might improve "make check-all" time noticably: some of those NEON
tests were monsters.
llvm-svn: 209578
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit starts with a "git mv ARM64 AArch64" and continues out
from there, renaming the C++ classes, intrinsics, and other
target-local objects for consistency.
"ARM64" test directories are also moved, and tests that began their
life in ARM64 use an arm64 triple, those from AArch64 use an aarch64
triple. Both should be equivalent though.
This finishes the AArch64 merge, and everyone should feel free to
continue committing as normal now.
llvm-svn: 209577
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'm doing this in two phases for a better "git blame" record. This
commit removes the previous AArch64 backend and redirects all
functionality to ARM64. It also deduplicates test-lines and removes
orphaned AArch64 tests.
The next step will be "git mv ARM64 AArch64" and rewire most of the
tests.
Hopefully LLVM is still functional, though it would be even better if
no-one ever had to care because the rename happens straight
afterwards.
llvm-svn: 209576
|
| |
|
|
| |
llvm-svn: 209575
|