| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
That is pretty common for clang to produce code like
(shl %x, (and %amt, 31)). In this situation we can still perform
trunc (shl) into shl (trunc) conversion given the known value
range of shift amount.
Differential Revision: https://reviews.llvm.org/D34723
llvm-svn: 306499
|
| |
|
|
|
|
|
| |
Pull FrameIndex comparision reasoning from DAGCombiner::isAlias to
general BaseIndexOffset.
llvm-svn: 306498
|
| |
|
|
| |
llvm-svn: 306497
|
| |
|
|
|
|
|
|
|
|
| |
It is somewhat pointless to check that a specific error is not
produced. That is already checked by the ld.lld exit value.
Instead make the test a bit stronger by checking that the output file
has the expected symbol and section.
llvm-svn: 306496
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When simplifying an instruction that has been re-mapped, it should never
simplify to an instruction in the original function. In the edge case
where we are inlining a function into itself, the existing code led to
incorrect behavior. Replace the incorrect code with an assert verifying
that we never expect simplification to produce an instruction in the old
function, unless the functions are the same.
Differential Revision: https://reviews.llvm.org/D33850
llvm-svn: 306495
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The assertion was failing when a method of a parameterized class was
called and the types of the argument and parameter didn't match. To fix
the failure, move the assertion in EmitCallArg to its only caller
EmitCallArgs and require the argument and parameter types match only
when the method is not parameterized.
rdar://problem/32874473
Differential Revision: https://reviews.llvm.org/D34665
llvm-svn: 306494
|
| |
|
|
| |
llvm-svn: 306493
|
| |
|
|
|
|
|
|
|
| |
Add headers for each section of output, with white space and "+++" to
improve readability.
Differential Revision: https://reviews.llvm.org/D34713
llvm-svn: 306492
|
| |
|
|
| |
llvm-svn: 306491
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This is the llvm part of the initial implementation to support Windows ARM64 COFF format.
I will gradually add more functionality in subsequent patches.
Reviewers: ruiu, rnk, t.p.northover, compnerd
Reviewed By: ruiu, compnerd
Subscribers: aemerson, mgorny, javed.absar, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D34705
llvm-svn: 306490
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: This is the clang part of the initial implementation to support Windows ARM64 COFF format.
Reviewers: ruiu, t.p.northover, rnk, compnerd
Reviewed By: ruiu, compnerd
Subscribers: aemerson, kristof.beyls, cfe-commits, llvm-commits
Differential Revision: https://reviews.llvm.org/D34706
llvm-svn: 306489
|
| |
|
|
|
|
|
|
| |
Fixes PR27551.
Differential Revision: https://reviews.llvm.org/D33974
llvm-svn: 306488
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D33973
llvm-svn: 306487
|
| |
|
|
|
|
|
|
|
| |
These will be necessary in order to handle upgrades from old bitcode
files.
Differential Revision: https://reviews.llvm.org/D33972
llvm-svn: 306486
|
| |
|
|
| |
llvm-svn: 306485
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D34312
llvm-svn: 306484
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
libclang
Summary: This patch exposes the exception specification type (noexcept,
etc.) of a C++ function through libclang and Python clang.cindex.
Reviewers: rsmith, aaron.ballman
Reviewed By: aaron.ballman
Subscribers: jbcoe, cfe-commits
Differential Revision: https://reviews.llvm.org/D34091
Patch by Andrew Bennieston
llvm-svn: 306483
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also move wcslen, wscnlen to common interceptors.
Reviewers: vitalybuka
Reviewed By: vitalybuka
Subscribers: kubamracek, llvm-commits
Differential Revision: https://reviews.llvm.org/D34656
llvm-svn: 306482
|
| |
|
|
| |
llvm-svn: 306481
|
| |
|
|
| |
llvm-svn: 306480
|
| |
|
|
| |
llvm-svn: 306479
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Similar to X86, it should be safe to inline callees if their target-features
are a subset of the caller. This change matches GCC's inlining behavior
with respect to attributes [1].
[1] https://gcc.gnu.org/onlinedocs/gcc/AArch64-Function-Attributes.html#AArch64-Function-Attributes
Reviewers: kristof.beyls, javed.absar, rengolin, t.p.northover
Reviewed By: t.p.northover
Subscribers: aemerson, eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D34698
llvm-svn: 306478
|
| |
|
|
|
|
| |
EarlyCSE.
llvm-svn: 306477
|
| |
|
|
| |
llvm-svn: 306476
|
| |
|
|
|
|
|
| |
Also add IRTranslator support.
https://reviews.llvm.org/D34710
llvm-svn: 306475
|
| |
|
|
|
|
|
| |
It had a few inconsistent indentations that made a followup patch
hard to read.
llvm-svn: 306474
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D33341
llvm-svn: 306473
|
| |
|
|
|
|
| |
warnings; other minor fixes (NFC).
llvm-svn: 306472
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As noted in D34071, there are some IR optimization opportunities that could be
handled by normal IR passes if this expansion wasn't happening so late in CGP.
Regardless of that, it seems wasteful to knowingly produce suboptimal IR here,
so I'm proposing this change:
%s = sub i32 %x, %y
%r = icmp ne %s, 0
=>
%r = icmp ne %x, %y
Changing the predicate to 'eq' mimics what InstCombine would do, so that's just
an efficiency improvement if we decide this expansion should happen sooner.
The fact that the PowerPC backend doesn't eliminate the 'subf.' might be
something for PPC folks to investigate separately.
Differential Revision: https://reviews.llvm.org/D34416
llvm-svn: 306471
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Without this check, COPY instructions can actually be one of the generic casts
in disguise. That's confusing and bad.
At some point during ISel this restriction has to be relaxed since the fully
selected instructions will usually use COPY for those purposes. Right now I
think it's possible that relaxation occurs during RegBankSelect (hence the
change there). I'm not convinced that's where it belongs long-term though.
llvm-svn: 306470
|
| |
|
|
|
|
| |
'eInstrumentationRuntimeType' enum from the swift-lldb project (to avoid potential clashes).
llvm-svn: 306469
|
| |
|
|
| |
llvm-svn: 306468
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch extends the `overloadable` attribute to allow for one
function with a given name to not be marked with the `overloadable`
attribute. The overload without the `overloadable` attribute will not
have its name mangled.
So, the following code is now legal:
void foo(void) __attribute__((overloadable));
void foo(int);
void foo(float) __attribute__((overloadable));
In addition, this patch fixes a bug where we'd accept code with
`__attribute__((overloadable))` inconsistently applied. In other words,
we used to accept:
void foo(void);
void foo(void) __attribute__((overloadable));
But we will do this no longer, since it defeats the original purpose of
requiring `__attribute__((overloadable))` on all redeclarations of a
function.
This breakage seems to not be an issue in practice, since the only code
I could find that had this pattern often looked like:
void foo(void);
void foo(void) __attribute__((overloadable)) __asm__("foo");
void foo(int) __attribute__((overloadable));
...Which can now be simplified by simply removing the asm label and
overloadable attribute from the redeclaration of `void foo(void);`
Differential Revision: https://reviews.llvm.org/D32332
llvm-svn: 306467
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D34640
llvm-svn: 306466
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: The testing on the resource section of executables produced by lld has been very lax, and allowed a major bug to go unnoticed when we switched from shelling out to cvtres.exe to using llvm's own library. These additional tests should cover all the major failure points.
Reviewers: zturner, ruiu
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34664
llvm-svn: 306465
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D34712
llvm-svn: 306464
|
| |
|
|
| |
llvm-svn: 306463
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch enables significant performance enhancements to the
Cavium ThunderX2T99 LLVM backend, as observed by running SPEC2K6,
by adding more detailed scheduling information.
Related Bugzilla bug: http://bugs.llvm.org/show_bug.cgi?id=32562
Patch by: steleman
Differential Revision: https://reviews.llvm.org/D31801
llvm-svn: 306462
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D34658
llvm-svn: 306461
|
| |
|
|
|
|
|
|
| |
This makes automatic checkout work even in situations where the
current repository can't be determined, such as in the case of a
Git tag.
llvm-svn: 306460
|
| |
|
|
|
|
|
|
|
| |
The overal size of the data section (including BSS)
is otherwise not included in the wasm binary.
Differential Revision: https://reviews.llvm.org/D34657
llvm-svn: 306459
|
| |
|
|
| |
llvm-svn: 306458
|
| |
|
|
|
|
|
|
|
|
|
|
| |
the constant is a vector splat or the scalar bit width is larger than 64-bits
The check to see if we can propagate the nsw flag used m_ConstantInt(uint64_t*&) which doesn't work with splat vectors and has a restriction that the bitwidth of the ConstantInt must be 64-bits are less.
This patch changes it to use m_APInt to remove both these issues
Differential Revision: https://reviews.llvm.org/D34699
llvm-svn: 306457
|
| |
|
|
| |
llvm-svn: 306456
|
| |
|
|
| |
llvm-svn: 306455
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Cleaner than computing the intersection for each possible sanitizer
Reviewers: compnerd, beanz
Subscribers: llvm-commits, mgorny
Differential Revision: https://reviews.llvm.org/D34693
llvm-svn: 306453
|
| |
|
|
| |
llvm-svn: 306452
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: This allows check-all to be used when only a subset of the sanitizers are built.
Reviewers: beanz, compnerd, rnk, pcc
Subscribers: llvm-commits, mgorny
Differential Revision: https://reviews.llvm.org/D34644
llvm-svn: 306450
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D34655
llvm-svn: 306449
|
| |
|
|
|
|
|
|
|
| |
BlockAddress are only valid within their function context, which does not
interact well with CodeExtractor. Detect this case and prevent it.
Differential Revision: https://reviews.llvm.org/D33839
llvm-svn: 306448
|