| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The dependencies of our libraries (only liblldb, really) we marked as public, which caused all
their dependencies to be repeated when linking any executables to them. This is a problem because
then all the .a files could end up being linked twice, once to liblldb and once
again to to the executable linking against liblldb (lldb, lldb-mi). As it turns out,
our build actually depends on this behavior:
- on windows, lldb does not have getopt, so it pulls it from inside liblldb, even
though getopt is not a part of the exported interface of liblldb (maybe some of
the bsd variants have this problem as well)
- lldb-mi uses llvm, which again is not exported by liblldb
This change does not actually fix these problems (that is going to be a hard
one), but it does make them explicit by moving this magic from add_lldb_library
to the places the executable targets are defined. That way, I can link the
additional .a files only on targets that really need it, and the other targets
can build cleanly and make sure we don't regress further. It also fixes the
LLVM_LINK_LLVM_DYLIB build on linux.
Reviewers: zturner, beanz
Subscribers: ki.stfu, lldb-commits, mgorny
Differential Revision: https://reviews.llvm.org/D25680
llvm-svn: 284466
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In loops that look something like
i = n;
do {
...
} while(i++ < n+k);
where k is a constant, the maximum backedge count is k (in fact the backedge
count will be either 0 or k, depending on whether n+k wraps). More generally
for LHS < RHS if RHS-(LHS of first comparison) is a constant then the loop will
iterate either 0 or that constant number of times.
This allows for more loop unrolling with the recent upper bound loop unrolling
changes, and I'm working on a patch that will let loop unrolling additionally
make use of the loop being executed either 0 or k times (we need to retain the
loop comparison only on the first unrolled iteration).
Differential Revision: https://reviews.llvm.org/D25607
llvm-svn: 284465
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D25673
llvm-svn: 284464
|
| |
|
|
|
|
|
|
|
|
| |
CursorKind.OVERLOAD_CANDIDATE.
The test fails because the value does not lay in any existing group.
Differential Revision: https://reviews.llvm.org/D25470
llvm-svn: 284463
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commits 284436 and 284437 because they still break AArch64 bots:
Value of: format_number(-10, IntegerStyle::Integer, 1)
Actual: "-0"
Expected: "-10"
llvm-svn: 284462
|
| |
|
|
|
|
| |
vXi64 will benefit more from lowering to shifts than multiplies
llvm-svn: 284461
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This patch assigns cost of the scaling used in addressing for Cortex-R52.
On Cortex-R52 a negated register offset takes longer than a non-negated
register offset, in a register-offset addressing mode.
Differential Revision: http://reviews.llvm.org/D25670
Reviewer: jmolloy
llvm-svn: 284460
|
| |
|
|
|
|
|
|
|
|
|
|
| |
As discussed on PR28461 we currently miss the chance to lower "fptosi <2 x double> %arg to <2 x i32>" to cvttpd2dq due to its use of illegal types.
This patch adds support for fptosi to 2i32 from both 2f64 and 2f32.
It also recognises that cvttpd2dq zeroes the upper 64-bits of the xmm result (similar to D23797) - we still don't do this for the cvttpd2dq/cvttps2dq intrinsics - this can be done in a future patch.
Differential Revision: https://reviews.llvm.org/D23808
llvm-svn: 284459
|
| |
|
|
|
|
|
| |
an assertion failure looking up a matching ::operator delete for
__builtin_operator_delete.
llvm-svn: 284458
|
| |
|
|
|
|
|
|
|
| |
dependent noexcept specifications result in the same canonical function type.
We still use non-canonical hashing when deduplicating type sugar so that
diagnostics will point to the right place.
llvm-svn: 284457
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds simplified support for tail calls on ARM with XRay instrumentation.
Known issue: compiled with generic flags: `-O3 -g -fxray-instrument -Wall
-std=c++14 -ffunction-sections -fdata-sections` (this list doesn't include my
specific flags like --target=armv7-linux-gnueabihf etc.), the following program
#include <cstdio>
#include <cassert>
#include <xray/xray_interface.h>
[[clang::xray_always_instrument]] void __attribute__ ((noinline)) fC() {
std::printf("In fC()\n");
}
[[clang::xray_always_instrument]] void __attribute__ ((noinline)) fB() {
std::printf("In fB()\n");
fC();
}
[[clang::xray_always_instrument]] void __attribute__ ((noinline)) fA() {
std::printf("In fA()\n");
fB();
}
// Avoid infinite recursion in case the logging function is instrumented (so calls logging
// function again).
[[clang::xray_never_instrument]] void simplyPrint(int32_t functionId, XRayEntryType xret)
{
printf("XRay: functionId=%d type=%d.\n", int(functionId), int(xret));
}
int main(int argc, char* argv[]) {
__xray_set_handler(simplyPrint);
printf("Patching...\n");
__xray_patch();
fA();
printf("Unpatching...\n");
__xray_unpatch();
fA();
return 0;
}
gives the following output:
Patching...
XRay: functionId=3 type=0.
In fA()
XRay: functionId=3 type=1.
XRay: functionId=2 type=0.
In fB()
XRay: functionId=2 type=1.
XRay: functionId=1 type=0.
XRay: functionId=1 type=1.
In fC()
Unpatching...
In fA()
In fB()
In fC()
So for function fC() the exit sled seems to be called too much before function
exit: before printing In fC().
Debugging shows that the above happens because printf from fC is also called as
a tail call. So first the exit sled of fC is executed, and only then printf is
jumped into. So it seems we can't do anything about this with the current
approach (i.e. within the simplification described in
https://reviews.llvm.org/D23988 ).
Differential Revision: https://reviews.llvm.org/D25030
llvm-svn: 284456
|
| |
|
|
|
|
|
|
| |
r284450.
This is harder to do for vpermilpd as shuffle combining turns the constant vector into an immediate since all vpermilpd's inputs with constant vector can also be encoded with the immediate form.
llvm-svn: 284455
|
| |
|
|
|
|
|
|
| |
When Error was threaded through these APIs back in r265606 the
"return" was missed here, which triggers a warning if/when I add
LLVM_NODISCARD to the Error type.
llvm-svn: 284454
|
| |
|
|
|
|
|
|
| |
a different type than the shuffle itself.
This is especially important for 32-bit targets with 64-bit shuffle elements.
llvm-svn: 284453
|
| |
|
|
|
|
|
|
|
|
|
|
| |
-debug-only=subtarget-emitter prints a lot of machine model diagnostics.
This prunes the output so that the "No machine model for XXX on processor YYY"
only appears when there is definitely no machine model for that opcode.
Previously it was printing that error even if the opcode was covered by
a more general scheduling class.
<rdar://problem/15919845> [TableGen][CodeGenSchedule] Debug output does not help spotting the missing scheduling classes
llvm-svn: 284452
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
entry has a different type than the shuffle itself.
Summary: This is especially important for 32-bit targets with 64-bit shuffle elements.This is similar to how PSHUFB and VPERMIL handle the same problem.
Reviewers: RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25666
llvm-svn: 284451
|
| |
|
|
|
|
| |
masked VPERMILPS/PD.
llvm-svn: 284450
|
| |
|
|
| |
llvm-svn: 284448
|
| |
|
|
| |
llvm-svn: 284446
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Move alpha.valist from potential to alpha since it was implemented in D15227
Cleanup some HTML comments, add a missing link
Reviewers: jordan_rose, zaks.anna
Subscribers: cfe-commits, xazax.hun
Differential Revision: https://reviews.llvm.org/D25663
llvm-svn: 284445
|
| |
|
|
|
|
| |
COFF/InputFiles.h includes LTOModule.h which transitively relies on Attributes.inc.
llvm-svn: 284444
|
| |
|
|
|
|
| |
This just passes through a few missing CMake variables for multi-stage builds.
llvm-svn: 284443
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D25711
llvm-svn: 284442
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
There are differences in codegen between Linux and Windows due to:
1. Using std::sort which uses quicksort which is a non-stable sort.
2. Iterating over Set data structure where the iteration order is
non deterministic.
Reviewers: arsenm, grosbach, junbuml, zinob, MatzeB
Subscribers: MatzeB, wdng
Differential Revision: https://reviews.llvm.org/D25695
llvm-svn: 284441
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes __llvm_profile_set_filename() work across dylib boundaries on
Darwin.
This functionality was originally meant to work on all platforms, but
was moved to a Linux-only directory with r272404. The root cause of the
test failure on Darwin was that lprofCurFilename was not marked weak.
Each dylib maintained its own copy of the variable due to the two-level
namespace.
Tested with check-profile (on Darwin). I don't expect this to regress
other platforms.
Differential Revision: https://reviews.llvm.org/D25707
llvm-svn: 284440
|
| |
|
|
|
|
|
|
|
| |
In the expression command, if the target is NULL, you have to use the dummy
target.
<rdar://problem/28811687>
llvm-svn: 284439
|
| |
|
|
|
|
| |
This should fix the remaining broken builds.
llvm-svn: 284437
|
| |
|
|
|
|
|
|
|
|
| |
This resubmits commits 284425 and r284428, which were reverted
in r284429 due to some infinite recursion caused by an incorrect
selection of function overloads. Reproduced the failure on Linux
using GCC 4.8.4, and confirmed that with the new patch the tests
path on GCC as well as MSVC. So hopefully this fixes everything.
llvm-svn: 284436
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D25694
llvm-svn: 284435
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CachedHashStringRef.
Summary:
Reclaiming the name 'CachedHashString' will let us add a type with that
name that owns its value.
Reviewers: timshen
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25644
llvm-svn: 284434
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: timshen
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25629
llvm-svn: 284433
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: This matches SmallDenseMap.
Reviewers: timshen
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25628
llvm-svn: 284432
|
| |
|
|
|
|
|
|
|
|
|
|
| |
load commands that use the MachO::sub_framework_command,
MachO::sub_umbrella_command, MachO::sub_library_command
and MachO::sub_client_command types but are not used in llvm
libObject code but used in llvm tool code.
This includes the LC_SUB_FRAMEWORK, LC_SUB_UMBRELLA,
LC_SUB_LIBRARY and LC_SUB_CLIENT load commands.
llvm-svn: 284431
|
| |
|
|
|
|
|
|
|
|
| |
When comparing the linker name in Fuchsia driver, use stem rather
than filename to get the name of the linker becase on Windows, the
filename will have an extension.
Differential Revision: https://reviews.llvm.org/D25700
llvm-svn: 284430
|
| |
|
|
|
|
|
| |
This reverts r288425 and r284428 as they are causing test crashes
on some systems.
llvm-svn: 284429
|
| |
|
|
| |
llvm-svn: 284428
|
| |
|
|
| |
llvm-svn: 284427
|
| |
|
|
|
|
|
| |
If the address of a load depends on another load, make sure to emit
the loads in the right order.
llvm-svn: 284426
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
raw_ostream has not afforded a lot of flexibility in terms of
how to format numbers when outputting. Wrap this all up into
a set of low level helper functions that can be used to output
numbers with arbitrary precision, alignment, format, etc and
then update raw_ostream to use these functions.
This will be useful for upcoming improvements to llvm's string
formatting libraries, but are still useful independently.
Differential Revision: https://reviews.llvm.org/D25497
llvm-svn: 284425
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The scalar version of this pattern was noted in:
https://reviews.llvm.org/D25485
and fixed with:
https://reviews.llvm.org/rL284395
More refactoring of the constant/splat helpers is needed and will happen in follow-up patches.
Differential Revision: https://reviews.llvm.org/D25685
llvm-svn: 284424
|
| |
|
|
|
|
|
|
| |
target.
This fixes the green dragon builders after r284416.
llvm-svn: 284423
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
When the local lldb doesn't have access to a copy of the modules in the target, e.g. winphone, with this change now we read these modules from memory.
There are mainly 2 changes:
1. create pecoff object files from memory
2. read from memory when the local file is not available
Reviewers: sas, fjricci, zturner
Subscribers: #lldb
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D24284
llvm-svn: 284422
|
| |
|
|
|
|
|
|
|
|
|
|
| |
As noted in:
https://reviews.llvm.org/D25685
This is the next-to-smallest step needed to enable the ComputeNumSignBits fix in that patch.
In a minor attempt to keep some structure, we're pulling the FP helper over along with its
integer sibling, but clearly we can and should do more refactoring of the similar helper
functions in DAGCombiner and SelectionDAG to simplify and not duplicate functionality.
llvm-svn: 284421
|
| |
|
|
|
|
| |
for debug info kind and dwarf version.
llvm-svn: 284420
|
| |
|
|
|
|
| |
We now strip coverage metadata if debug info are not present.
llvm-svn: 284419
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If -coverage is passed, but -g is not, clang populates the PassManager
pipeline with StripSymbols(debugOnly = true).
The stripSymbol pass therefore scans the list of named metadata,
drops !llvm.dbg.cu, but leaves !llvm.gcov and !0 (the compileUnit MD)
around. The verifier runs, and finds out that there's a CU not listed
in !llvm.dbg.cu (as it was previously dropped) -> crash.
When we strip debug info, so, check if there's coverage data,
and strip it as well, in order to avoid pending metadata left around.
Differential Revision: https://reviews.llvm.org/D25689
llvm-svn: 284418
|
| |
|
|
| |
llvm-svn: 284417
|
| |
|
|
|
|
|
|
|
|
|
| |
System utilities such as atos only support DWARF 4 on OS X 10.11+ and
iOS 9+. We thus want to enable DWARF 4 only if the deployment target
has a recent enough operating system version and use DWARF 2 for older
systems.
<rdar://problem/28766743>
llvm-svn: 284416
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Debug info should *not* affect code generation. This patch properly handles debug info to make sure the generated code are the same with or without debug info.
Reviewers: davidxl, mzolotukhin, jmolloy
Subscribers: aprantl, llvm-commits
Differential Revision: https://reviews.llvm.org/D25286
llvm-svn: 284415
|
| |
|
|
| |
llvm-svn: 284414
|