| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
We used to sort and uniquify CU vectors, but looks like CU vectors in
.gdb_index sections created by gold are not guaranteed to be sorted.
llvm-svn: 314095
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We used to use std::set to uniquify CU vector elements, but as we know,
std::set is pretty slow. Fortunately we didn't actually have to use a
std::set here. This patch replaces it with std::vector.
With this patch, lld's -gdb-index overhead when linking a clang debug
build is now about 1 second (8.65 seconds without -gdb-index vs 9.60
seconds with -gdb-index). Since gold takes more than 6 seconds to create
a .gdb_index for the same output, our number isn't that bad.
llvm-svn: 314094
|
| |
|
|
| |
llvm-svn: 314093
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, we had two levels of hash table lookup. The first hash
lookup uses CachedHashStringRefs as keys and returns offsets in string
table. Then, we did the second hash table lookup to obtain GdbSymbol
pointers. But we can directly map strings to GDbSymbols.
One test file is updated in this patch because we no longer have a '\0'
byte at the start of the string pool, which was automatically inserted
by StringTableBuilder.
This patch speeds up Clang debug build (with -gdb-index) link time by
0.3 seconds.
llvm-svn: 314092
|
| |
|
|
|
|
|
|
| |
This change alone speeds up linking of Clang debug build with -gdb-index
by 1.2 seconds, from 12.5 seconds to 11.3 seconds. (Without -gdb-index,
lld takes 8.5 seconds to link the same input files.)
llvm-svn: 314090
|
| |
|
|
|
|
| |
This patch is to improve code readability.
llvm-svn: 314089
|
| |
|
|
|
|
|
|
|
|
|
|
| |
In order to keep track of symbol renaming, we used to have
Config->SymbolRenaming, and whether a symbol is in the map or not
affects its symbol attribute (i.e. "LinkeRedefined" bit).
This patch adds "CanInline" bit to Symbol to aggreagate symbol
information in one place and removed the member from Config since
no one except SymbolTable now uses the table.
llvm-svn: 314088
|
| |
|
|
| |
llvm-svn: 314087
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch rewrites a part of GdbIndexSection to address the following
issues in the previous implementation:
- Previously, some struct declarations were in GdbIndex.h while they
were not used in GdbIndex.cpp. Such structs are moved to
SyntheticSection.h.
- The actual implementation were split into GdbIndexSection and GdbHash
section, but that separation didn't make much sense. They are now
unified as GdbIndexSection.
In addition to the above changes, this patch splits functions, rename
variables and remove redundant functions/variables to generally improve
code quality.
llvm-svn: 314084
|
| |
|
|
|
|
| |
This required changing the ISD opcode for these instructions to have the commutable operands first and the addend last. This way tablegen can autogenerate the additional patterns for us.
llvm-svn: 314083
|
| |
|
|
|
|
|
|
| |
IFMA instructions when the load is on operand1 of the instrinsic.
We need to enable commuting during isel to catch this since the load folding tables can't handle broadcasts.
llvm-svn: 314082
|
| |
|
|
|
|
|
|
| |
Reviewed-by: Tobias Grosser <tobias@grosser.es>
Differential Revision: https://reviews.llvm.org/D38218
llvm-svn: 314081
|
| |
|
|
|
|
| |
commutable for the multiply operands.
llvm-svn: 314080
|
| |
|
|
| |
llvm-svn: 314079
|
| |
|
|
| |
llvm-svn: 314078
|
| |
|
|
|
|
| |
elements (PR22415)
llvm-svn: 314077
|
| |
|
|
|
|
|
|
|
|
| |
This patch acts as a reverse to combineBitcastvxi1 - bitcasting a scalar integer to a boolean vector and extending it 'in place' to the requested legal type.
Currently this doesn't handle AVX512 at all - but the current mask register approach is lacking for some cases.
Differential Revision: https://reviews.llvm.org/D35320
llvm-svn: 314076
|
| |
|
|
|
|
|
|
|
|
|
| |
In case a PHI node follows an error block we can assume that the incoming value
can only come from the node that is not an error block. As a result, conditions
that seemed non-affine before are now in fact affine.
This is a recommit of r312663 after fixing
test/Isl/CodeGen/phi_after_error_block_outside_of_scop.ll
llvm-svn: 314075
|
| |
|
|
|
|
|
|
| |
As mentioned in https://reviews.llvm.org/D33718, this simply adds another
pattern to the compare elimination sequence and is committed without a
differential review.
llvm-svn: 314073
|
| |
|
|
|
|
|
|
| |
instructions when VLX isn't available.
We use a v16i32/v16f32 compare instead and truncate the result. We already did this for the unmasked version, but were missing the version with 'and'.
llvm-svn: 314072
|
| |
|
|
|
|
|
|
| |
we shrink 256/512 bit zeroing xors to 128-bit.
Not sure if anything really cares, but this seems like the right thing to do.
llvm-svn: 314071
|
| |
|
|
|
|
|
|
|
| |
This fixes the avr-rust issue (#75) with floating-point comparisons generating broken code.
By default, LLVM assumes these comparisons return 32-bit values, but ours are 8-bit.
Patch By Thomas Backman.
llvm-svn: 314070
|
| |
|
|
|
|
|
|
| |
The code wasn't yelling at the user when there's a reference
from a DIGlobalVariableExpression. Thanks to Adrian for the
reduced testcase. Fixes PR34672.
llvm-svn: 314069
|
| |
|
|
| |
llvm-svn: 314068
|
| |
|
|
|
|
|
|
| |
know are going to be constant-evaluated.
Any relevant diagnostics should be produced by constant expression evaluation.
llvm-svn: 314067
|
| |
|
|
| |
llvm-svn: 314066
|
| |
|
|
|
|
|
|
|
|
| |
Such RTCs may introduce integer wrapping intrinsics with more than 64 bit,
which are translated to library calls on AOSP that are not part of the
runtime and will consequently cause linker errors.
Thanks to Eli Friedman for reporting this issue and reducing the test case.
llvm-svn: 314065
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a follow-up from D38181 (r314023). We have to put 64-bit
constants into a register using a separate instruction, so we
should try harder to avoid that.
From what I see, we're not likely to encounter this pattern in the
DAG because the upstream setcc combines from this don't (usually?)
produce this pattern. If we fix that, then this will become more
relevant. Since the cost of handling this case is just loosening
the predicate of the existing fold, we might as well do it now.
llvm-svn: 314064
|
| |
|
|
| |
llvm-svn: 314063
|
| |
|
|
|
|
|
|
| |
As mentioned in https://reviews.llvm.org/D33718, this simply adds another
pattern to the compare elimination sequence and is committed without a
differential revision.
llvm-svn: 314062
|
| |
|
|
| |
llvm-svn: 314061
|
| |
|
|
|
|
|
|
| |
As mentioned in https://reviews.llvm.org/D33718, this simply adds another
pattern to the compare elimination sequence and is committed without a
differential revision.
llvm-svn: 314060
|
| |
|
|
|
|
|
|
| |
helper functions over to X86ISelDAGToDAG.cpp
Redefine them to call getI8Imm and return that directly.
llvm-svn: 314059
|
| |
|
|
|
|
| |
The only insert_subvector/extract_subvector nodes that make it to isel are guaranteed to match.
llvm-svn: 314058
|
| |
|
|
| |
llvm-svn: 314057
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit fixes a bug in the handling of storage-only __fp16 vectors
where clang didn't promote __fp16 vector operands to float vectors.
Conceptually, it performs the following transformation on the AST in
CreateBuiltinBinOp and CreateBuiltinUnaryOp:
(Before)
typedef __fp16 half4 __attribute__ ((vector_size (8)));
typedef float float4 __attribute__ ((vector_size (16)));
half4 hv0, hv1, hv2, hv3;
hv0 = hv1 + hv2 + hv3;
(After)
float4 t0 = (float4)hv1 + (float4)hv2;
float4 t1 = t0 + (float4)hv3;
hv0 = (half4)t1;
Note that this commit fixes the bug for targets that set
HalfArgsAndReturns to true (ARM and ARM64). Targets using intrinsics
such as llvm.convert.to.fp16 to handle __fp16 are still broken.
rdar://problem/20625184
Differential Revision: https://reviews.llvm.org/D32520
llvm-svn: 314056
|
| |
|
|
|
|
|
|
| |
As mentioned in https://reviews.llvm.org/D33718, this simply adds another
pattern to the compare elimination sequence and is committed without a
differential revision.
llvm-svn: 314055
|
| |
|
|
|
|
|
| |
We used to give such members no linkage instead of giving them the linkage of
the class.
llvm-svn: 314054
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: eugenis, alekseyshl
Subscribers: kubamracek, llvm-commits
Differential Revision: https://reviews.llvm.org/D38194
llvm-svn: 314053
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Part of https://github.com/google/sanitizers/issues/637
Standalone ubsan needs signal and sigaction handlers and interceptors.
Plugin mode should rely on parent tool.
Reviewers: eugenis, alekseyshl
Subscribers: kubamracek, llvm-commits, mgorny
Differential Revision: https://reviews.llvm.org/D37895
llvm-svn: 314052
|
| |
|
|
| |
llvm-svn: 314051
|
| |
|
|
|
|
|
| |
This class isn't similar to anything from the STL, so it shouldn't use
the STL naming conventions.
llvm-svn: 314050
|
| |
|
|
| |
llvm-svn: 314049
|
| |
|
|
|
|
| |
For consistency with asan, msan, tsan and ubsan.
llvm-svn: 314048
|
| |
|
|
| |
llvm-svn: 314047
|
| |
|
|
|
|
| |
What You Use warnings; other minor fixes (NFC).
llvm-svn: 314046
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This is required to be able to step through calls to external functions
that are not properly marked with __declspec(dllimport). When a call
like this is emitted, the linker will inject a trampoline to produce an
indirect call through the IAT.
Reviewers: zturner, jingham
Reviewed By: jingham
Subscribers: sas, jingham, lldb-commits
Differential Revision: https://reviews.llvm.org/D22231
llvm-svn: 314045
|
| |
|
|
|
|
|
| |
Fixed suboptimal encoding of instruction memory operand when assembler is used to select 32 bit fixup rather than 8 bit immediate for encoding memory offset value.
Differential Revision: https://reviews.llvm.org/D38117
llvm-svn: 314044
|
| |
|
|
| |
llvm-svn: 314043
|
| |
|
|
| |
llvm-svn: 314042
|