| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D38628
llvm-svn: 315278
|
| |
|
|
|
|
| |
DenseMap performs better here. No functionality change intended.
llvm-svn: 315277
|
| |
|
|
|
|
|
| |
This is a bit awkward because lookup returns a copy instead of a
reference. No functionality change intended.
llvm-svn: 315276
|
| |
|
|
|
|
|
| |
createELFObjectWriter now takes a std::unique_ptr<MCELFObjectTargetWriter>
rather than a MCELFObjectTargetWriter*.
llvm-svn: 315275
|
| |
|
|
|
|
| |
This enables broadcast loads to be commuted and allows normal loads to be folded without the peephole pass.
llvm-svn: 315274
|
| |
|
|
|
|
|
|
| |
This allows linking code with dwarf exception handling.
Differential Revision: https://reviews.llvm.org/D38681
llvm-svn: 315273
|
| |
|
|
|
|
|
|
|
|
|
| |
Eliminate inttype phi with inttoptr/ptrtoint.
This version fixed a bug in finding the matching
phi -- the order of the incoming blocks may be
different (triggered in self build on Windows).
A new test case is added.
llvm-svn: 315272
|
| |
|
|
| |
llvm-svn: 315271
|
| |
|
|
| |
llvm-svn: 315270
|
| |
|
|
| |
llvm-svn: 315269
|
| |
|
|
| |
llvm-svn: 315268
|
| |
|
|
| |
llvm-svn: 315267
|
| |
|
|
|
|
|
| |
This patch also moves declarations so that related declarations next
to each other.
llvm-svn: 315266
|
| |
|
|
| |
llvm-svn: 315265
|
| |
|
|
|
|
|
|
|
|
| |
Removes two report_fatal_errors.
Implement this by removing EmitCFICommon, and do the checking in
getCurrentDwarfFrameInfo. Have the callers check for null before
dereferencing it.
llvm-svn: 315264
|
| |
|
|
| |
llvm-svn: 315263
|
| |
|
|
|
|
|
|
|
|
| |
This makes the .seh_ directives slightly more usable from standalone
assembly files.
This removes a large number of report_fatal_errors and recovers from the
error by ignoring the directive.
llvm-svn: 315262
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ARCReclaimReturnedObject cast.
This is a follow-up to r314370.
Rather than throwing away the enclosing parentheses, this commit walks
down the expression until an ARCReclaimReturnedObject cast is found and
removes just the cast, preserving the syntactic sugar expressions
(parens and casts) that were visited up to that point.
rdar://problem/34705720
Differential Revision: https://reviews.llvm.org/D38659
llvm-svn: 315261
|
| |
|
|
|
|
|
|
|
|
| |
to WasmObjectWriter's constructor.
Fixes the same ownership issue for COFF that r315245 did for MachO:
WasmObjectWriter takes ownership of its MCWasmObjectTargetWriter, so we want to
pass this through to the constructor via a unique_ptr, rather than a raw ptr.
llvm-svn: 315260
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This suppresses the generation of .Lcfi labels in our textual assembler.
It was annoying that this generated cascading .Lcfi labels:
llc foo.ll -o - | llvm-mc | llvm-mc
After three trips through MCAsmStreamer, we'd have three labels in the
output when none are necessary. We should only bother creating the
labels and frame data when making a real object file.
This supercedes D38605, which moved the entire .seh_ implementation into
MCObjectStreamer.
This has the advantage that we do more checking when emitting textual
assembly, as a minor efficiency cost. Outputting textual assembly is not
performance critical, so this shouldn't matter.
Reviewers: majnemer, MatzeB
Subscribers: qcolombet, nemanjai, javed.absar, eraman, hiraditya, JDevlieghere, llvm-commits
Differential Revision: https://reviews.llvm.org/D38638
llvm-svn: 315259
|
| |
|
|
| |
llvm-svn: 315258
|
| |
|
|
|
|
|
|
|
|
|
| |
createWinCOFFObjectWriter to WinCOFFObjectWriter's constructor.
Fixes the same ownership issue for COFF that r315245 did for MachO:
WinCOFFObjectWriter takes ownership of its MCWinCOFFObjectTargetWriter, so we
want to pass this through to the constructor via a unique_ptr, rather than a
raw ptr.
llvm-svn: 315257
|
| |
|
|
|
|
|
|
|
|
| |
declaration in the global module.
This works around a language issue where adding a typedef name for linkage
purposes changes the linkage of an already-defined class after it becomes
complete.
llvm-svn: 315256
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D38707
llvm-svn: 315255
|
| |
|
|
|
|
|
|
|
|
| |
ELFObjectWriter's constructor.
Fixes the same ownership issue for ELF that r315245 did for MachO:
ELFObjectWriter takes ownership of its MCELFObjectTargetWriter, so we want to
pass this through to the constructor via a unique_ptr, rather than a raw ptr.
llvm-svn: 315254
|
| |
|
|
|
|
| |
Polly version of r315249 on LLVM trunk.
llvm-svn: 315253
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D38711
llvm-svn: 315252
|
| |
|
|
|
|
|
|
|
|
| |
When declaring an entity in the "purview" of a module, it's never a
redeclaration of an entity in the purview of a default module or in no module
("in the global module"). Don't consider those other declarations as possible
redeclaration targets if they're not visible, and reject any cases where we
pick a prior visible declaration that violates this rule.
llvm-svn: 315251
|
| |
|
|
|
|
|
|
| |
Fixes https://bugs.llvm.org/show_bug.cgi?id=34869
Differential Revision: https://reviews.llvm.org/D38702
llvm-svn: 315250
|
| |
|
|
|
|
|
| |
Sync it up with the name of the class actually defined here. This has been
bothering me for a while...
llvm-svn: 315249
|
| |
|
|
| |
llvm-svn: 315248
|
| |
|
|
|
|
| |
MAP_FIXED discards the existing mapping at the given address.
llvm-svn: 315247
|
| |
|
|
|
|
|
|
| |
Currently libstdc++ on Android doesn't support std::to_string().
Differential Revision: https://reviews.llvm.org/D38701
llvm-svn: 315246
|
| |
|
|
|
|
|
|
|
|
|
| |
to MCObjectWriter's constructor.
MCObjectWriter takes ownership of its MCMachObjectTargetWriter argument -- this
patch plumbs that ownership relationship through the constructor (which
previously took raw MCMachObjectTargetWriter*) and the createMachObjectWriter
function.
llvm-svn: 315245
|
| |
|
|
|
|
|
| |
As pointed out by David in D38453 and confirmed with the DWARF mailing
list, DW_TAG_imported_unit is not a valid unit type.
llvm-svn: 315244
|
| |
|
|
| |
llvm-svn: 315243
|
| |
|
|
|
|
|
| |
http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-expensive
http://green.lab.llvm.org/green/job/clang-stage1-configure-RA
llvm-svn: 315242
|
| |
|
|
|
|
| |
Ignore OS-specific mangled name.
llvm-svn: 315241
|
| |
|
|
|
|
|
|
|
|
|
| |
We end up creating COPY's that are either truncating/extending and this
should be illegal.
https://reviews.llvm.org/D37640
Patch for X86 and ARM by igorb, rovka
llvm-svn: 315240
|
| |
|
|
| |
llvm-svn: 315239
|
| |
|
|
| |
llvm-svn: 315238
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
On behalf of julia.koval@intel.com
The patch transforms canonical version of unsigned saturation, which is sub(max(a,b),a) or sub(a,min(a,b)) to special psubus insturuction on targets, which support it(8bit and 16bit uints).
umax(a,b) - b -> subus(a,b)
a - umin(a,b) -> subus(a,b)
There is also extra case handled, when right part of sub is 32 bit and can be truncated, using UMIN(this transformation was discussed in https://reviews.llvm.org/D25987).
The example of special case code:
```
void foo(unsigned short *p, int max, int n) {
int i;
unsigned m;
for (i = 0; i < n; i++) {
m = *--p;
*p = (unsigned short)(m >= max ? m-max : 0);
}
}
```
Max in this example is truncated to max_short value, if it is greater than m, or just truncated to 16 bit, if it is not. It is vaid transformation, because if max > max_short, result of the expression will be zero.
Here is the table of types, I try to support, special case items are bold:
| Size | 128 | 256 | 512
| ----- | ----- | ----- | -----
| i8 | v16i8 | v32i8 | v64i8
| i16 | v8i16 | v16i16 | v32i16
| i32 | | **v8i32** | **v16i32**
| i64 | | | **v8i64**
Reviewers: zvi, spatel, DavidKreitzer, RKSimon
Reviewed By: zvi
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D37534
llvm-svn: 315237
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D38643
llvm-svn: 315236
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
PTX does not differentiate between read and write fences. Hence, these a
lowered to a mem_fence call. The mem_fence function compiles to the
“member.cta” instruction, which commits all outstanding reads and writes
of a thread such that these become visible to all other threads in the same
CTA (i.e., work-group). The instruction does not differentiate between
global and local memory. Hence, the flags parameter is ignored, except
for deciding whether a “member.cta” instruction should be issued at all.
Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 315235
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The vcruntime headers are hairy and clash with both libc++ headers
themselves and other libraries. libc++ normally deals with the clashes
by deferring to the vcruntime headers and silencing its own definitions,
but for clients which don't want to depend on vcruntime headers, it's
desirable to support the opposite, i.e. have libc++ provide its own
definitions.
Certain operator new/delete replacement scenarios are not currently
supported in this mode, which requires some tests to be marked XFAIL.
The added documentation has more details.
Differential Revision: https://reviews.llvm.org/D38522
llvm-svn: 315234
|
| |
|
|
| |
llvm-svn: 315232
|
| |
|
|
| |
llvm-svn: 315231
|
| |
|
|
|
|
|
|
|
| |
Some functions were taking Twine's not by const&, these are all
fixed to take by const&. We also had a case where some functions
were overloaded to accept by const& and &&. Now there is only
one version which accepts by value and move's the value.
llvm-svn: 315229
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This generates a "bar.sync 0” instruction, which not only causes the
threads to wait, but does acts as a memory fence, as required by
OpenCL. The fence does not differentiate between local and global
memory. Unfortunately, there is no similar instruction which does
not include a memory fence. Hence, we cannot optimize the case
where neither CLK_LOCAL_MEM_FENCE nor CLK_GLOBAL_MEM_FENCE is
passed.
llvm-svn: 315228
|
| |
|
|
|
|
|
|
|
| |
Fuchsia doesn't support signals, so don't use interceptors for signal or
sigaction.
Differential Revision: https://reviews.llvm.org/D38669
llvm-svn: 315227
|