| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a fix for:
https://bugs.llvm.org/show_bug.cgi?id=33958
It seems universally true that we would not want to transform this kind of
sequence on any target, but if that's not correct, then we could view this
as a target-specific cost model problem. We could also white-list ConstantInt,
ConstantFP, etc. rather than blacklist Global and ConstantExpr.
Differential Revision: https://reviews.llvm.org/D67362
llvm-svn: 371931
|
| |
|
|
| |
llvm-svn: 371930
|
| |
|
|
|
|
|
|
| |
I missed Artem's comment in D67487 before committing.
Differential Revision: https://reviews.llvm.org/D67487
llvm-svn: 371929
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some VLIW instruction sets are Very Long Indeed. Using uint64_t constricts the Inst encoding to 64 bits (naturally).
This change switches CodeEmitter to a mode that uses APInts when Inst's bitwidth is > 64 bits (NFC for existing targets).
When Inst.BitWidth > 64 the prototype changes to:
void TargetMCCodeEmitter::getBinaryCodeForInstr(const MCInst &MI,
SmallVectorImpl<MCFixup> &Fixups,
APInt &Inst,
APInt &Scratch,
const MCSubtargetInfo &STI);
The Inst parameter returns the encoded instruction, the Scratch parameter is used internally for manipulating operands and is exposed so that the underlying storage can be reused between calls to getBinaryCodeForInstr. The goal is to elide any APInt constructions that we can.
Similarly the operand encoding prototype changes to:
getMachineOpValue(const MCInst &MI, const MCOperand &MO, APInt &op, SmallVectorImpl<MCFixup> &Fixups, const MCSubtargetInfo &STI);
That is, the operand is passed by reference as APInt rather than returned as uint64_t.
To reiterate, this APInt mode is enabled only when Inst.BitWidth > 64, so this change is NFC for existing targets.
llvm-svn: 371928
|
| |
|
|
|
|
|
|
| |
Also tighten up help strings for /force, --start-lib, and --end-lib.
Differential Revision: https://reviews.llvm.org/D67457
llvm-svn: 371927
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D66984
llvm-svn: 371926
|
| |
|
|
| |
llvm-svn: 371925
|
| |
|
|
| |
llvm-svn: 371924
|
| |
|
|
|
|
| |
Call SimplifyDemandedBits on the source vector.
llvm-svn: 371923
|
| |
|
|
|
|
|
| |
Suggested for an other loop by Pavel Labath in:
https://reviews.llvm.org/D66654#inline-605808
llvm-svn: 371922
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(PR43251)
Summary:
This is split off from D67356, since these cases produce a constant,
no real need to keep them in instcombine.
Alive proofs:
https://rise4fun.com/Alive/u7Fk
https://rise4fun.com/Alive/4lV
https://bugs.llvm.org/show_bug.cgi?id=43251
Reviewers: spatel, nikic, xbolva00
Reviewed By: spatel
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67498
llvm-svn: 371921
|
| |
|
|
|
|
|
|
|
|
|
| |
gcc will complain if -MT is used but neither -M nor -MM is specified:
> cc1: error: to generate dependencies you must specify either -M or -MM
r371918 changed our behavior to match GCC, but apparently
clang-scan-deps is not happy.
llvm-svn: 371920
|
| |
|
|
|
|
|
|
|
|
|
| |
-MMD -MT -MQ
-M -o test.i => dependency file is test.d, not test.i
-MM -o test.i => dependency file is test.d, not test.i
-M -MMD => bogus warning -Wunused-command-line-argument
-M MT dummy => -w not rendered
llvm-svn: 371918
|
| |
|
|
|
|
|
| |
The test file name metadata-with-dots.c is confusing because -MD and -MMD
have nothing to do with metadata.
llvm-svn: 371917
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D67478
llvm-svn: 371916
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: This should be obsolete once the functionality in D66967 is integrated.
Reviewers: uenoku, sstefan1
Subscribers: hiraditya, bollu, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67231
llvm-svn: 371915
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GNU objcopy documents that -B is only useful with architecture-less
input (i.e. "binary" or "ihex"). After D67144, -O defaults to -I, and
-B is essentially a NOP.
* If -O is binary/ihex, GNU objcopy ignores -B.
* If -O is elf*, -B provides the e_machine field in GNU objcopy.
So to convert a blob to an ELF, `-I binary -B i386:x86-64 -O elf64-x86-64` has to be specified.
`-I binary -B i386:x86-64 -O elf64-x86-64` creates an ELF with its
e_machine field set to EM_NONE in GNU objcopy, but a regular x86_64 ELF
in elftoolchain elfcopy. Follow the elftoolchain approach (ignoring -B)
to simplify code. Users that expect their command line portable should
specify -B.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D67215
llvm-svn: 371914
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes PR42171.
In GNU objcopy, if -O (--output-target) is not specified, the value is
copied from -I (--input-target).
```
objcopy -I binary -B i386:x86-64 a.txt b # b is copied from a.txt
llvm-objcopy -I binary -B i386:x86-64 a.txt b # b is an x86-64 object file
```
This patch changes our behavior to match GNU. With this change, we can
delete code related to -B handling (D67215).
Reviewed By: jakehehrlich
Differential Revision: https://reviews.llvm.org/D67144
llvm-svn: 371913
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Most GNU binutils don't append full stops in error messages. This
convention has been adopted by a bunch of LLVM binary utilities. Make
llvm-ar follow the convention as well.
Reviewed By: grimar
Differential Revision: https://reviews.llvm.org/D67558
llvm-svn: 371912
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Addresses https://bugs.llvm.org/show_bug.cgi?id=42671
Reviewers: jhenderson, espindola, alexshap, rupprecht
Reviewed By: jhenderson
Subscribers: seiya, emaste, arichardson, jakehehrlich, MaskRay, abrachet, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D65372
llvm-svn: 371911
|
| |
|
|
| |
llvm-svn: 371910
|
| |
|
|
|
|
|
|
|
|
|
| |
This adds a reproducer dump commands which makes it possible to inspect
a reproducer from inside LLDB. Currently it supports the Files, Commands
and Version providers. I'm planning to add support for the GDB Remote
provider in a follow-up patch.
Differential revision: https://reviews.llvm.org/D67474
llvm-svn: 371909
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
To support dumping the reproducer's GDB remote packets, we need the
(de)serialization logic to live in Utility rather than the GDB remote
plugin. This patch renames StreamGDBRemote to GDBRemote and moves the
relevant packet code there.
Its uses in the GDBRemoteCommunicationHistory and the
GDBRemoteCommunicationReplayServer are updated as well.
Differential revision: https://reviews.llvm.org/D67523
llvm-svn: 371907
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Implements target-specific LLVM intrinsics and clang builtins for
these new SIMD operations, as described at https://github.com/WebAssembly/simd/blob/master/proposals/simd/SIMD.md#integer-to-integer-narrowing.
Reviewers: aheejin
Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D67425
llvm-svn: 371906
|
| |
|
|
|
|
|
| |
The pretty function macro is including __cdecl on Windows, which was
causing the pattern matching to fail. This should fix that.
llvm-svn: 371905
|
| |
|
|
| |
llvm-svn: 371904
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Scan deps tool crashes when called on a C++ file, containing an include
that has the same name as a directory.
The tool crashes since it finds foo/dir and tries to read that as a file and fails.
Patch by: kousikk (Kousik Kumar)
Differential Revision: https://reviews.llvm.org/D67091
llvm-svn: 371903
|
| |
|
|
| |
llvm-svn: 371902
|
| |
|
|
|
|
|
|
|
|
| |
For some reason we sometimes insert new instructions one instruction before
the first non-PHI when legalizing. This can result in having non-PHI
instructions before PHIs, which mean that PHI elimination doesn't catch them.
Differential Revision: https://reviews.llvm.org/D67570
llvm-svn: 371901
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Rearrange the function declaration in lto.h so they falls in the correct
doxygen group.
Reviewers: tejohnson, bd1976llvm, deadalnix
Reviewed By: tejohnson
Subscribers: mehdi_amini, inglorion, jkorous, dexonsmith, ributzka, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67565
llvm-svn: 371900
|
| |
|
|
|
|
|
|
| |
This ensures that if the assertion fails we dump the log content. This
should help me investigate what the output looks like on Windows, where
the test is failing.
llvm-svn: 371899
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Orc uses registerFunctionAnalyses that's defined in Passes.
Reviewers: dblaikie
Subscribers: mcrosier, bixia, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67477
llvm-svn: 371898
|
| |
|
|
|
|
|
|
| |
This is both for consistency with other `mkdir`s in tests, and
fixing permission issues with the non-temporary cwd during testing (they
are not always writable).
llvm-svn: 371897
|
| |
|
|
|
|
|
|
| |
* std::move the error extracted from the parsing creation to avoid asserts
* print a newline after the error message
* create the parser from the metadata
llvm-svn: 371895
|
| |
|
|
| |
llvm-svn: 371894
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because memory intrinsics are handled differently than other calls, we need to
check them for tail call eligiblity in the legalizer. This allows us to still
inline them when it's beneficial to do so, but also tail call when possible.
This adds simple tail calling support for when the intrinsic is followed by a
return.
It ports the attribute checks from `TargetLowering::isInTailCallPosition` into
a similarly-named function in LegalizerHelper.cpp. The target-specific
`isUsedByReturnOnly` hook is not ported here.
Update tailcall-mem-intrinsics.ll to show that GlobalISel can now tail call
memory intrinsics.
Update legalize-memcpy-et-al.mir to have a case where we don't tail call.
Differential Revision: https://reviews.llvm.org/D67566
llvm-svn: 371893
|
| |
|
|
|
|
|
| |
Added basic support for declare variant directive and its match clause
with user context selector.
llvm-svn: 371892
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D67424
llvm-svn: 371890
|
| |
|
|
|
|
| |
This commit fixes a bug in which the toctree contained a reference to a non-existent document.
llvm-svn: 371889
|
| |
|
|
|
|
|
|
|
|
| |
non-constrained
Reviewed by: andrew.w.kaylor, cameron.mcinally, uweigand
Approved by: andrew.w.kaylor
Differential Revision: https://reviews.llvm.org/D67360
llvm-svn: 371888
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In preparation for def-pat selection of dot product instructions,
this patch moves the custom instruction selection of extract_vector_elt
to the td file. Without this change it is impossible to catch a pattern that
starts with an extract_vector_elt: the custom cpp code is executed first
ahead of the patterns in the td files that are only executed at the end of
the switch statement in SelectCode(Node).
With this patch applied, it becomes possible to select a different pattern
that starts with extract_vector_elt by selecting a higher complexity than
this pattern.
The patch has been tested on aarch64-linux with make check-all.
Differential Revision: https://reviews.llvm.org/D67497
llvm-svn: 371887
|
| |
|
|
| |
llvm-svn: 371886
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new centralized way of doing API logging through the reproducer
macros is lacking a way to easily correlate instances of API objects.
Logging the this pointer makes that significantly easier. For methods
this is now always passed as the first argument, similar to the self
argument in Python.
This patch also adds a test case for API logging, which uncovered that
we were not quoting strings.
Differential revision: https://reviews.llvm.org/D67538
llvm-svn: 371885
|
| |
|
|
| |
llvm-svn: 371884
|
| |
|
|
|
|
|
| |
For some reason I'd decided to mark the end-result of a GOT load as
dead. It's clearly not (necessarily).
llvm-svn: 371883
|
| |
|
|
|
|
| |
Restored missing parens on a function call.
llvm-svn: 371882
|
| |
|
|
| |
llvm-svn: 371881
|
| |
|
|
| |
llvm-svn: 371880
|
| |
|
|
|
|
| |
Goes with D67362.
llvm-svn: 371879
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When using clang as a cross-compiler, we should not use system
headers to do the compilation.
This CL adds support of a new warning flag -Wpoison-system-directories which
emits warnings if --sysroot is set and headers from common host system location
are used.
By default the warning is disabled.
The intention of the warning is to catch bad includes which are usually
generated by third party build system not targeting cross-compilation.
Such cases happen in Chrome OS when someone imports a new package or upgrade
one to a newer version from upstream.
This is reland of r371785 with a fix to test file.
Patch by: denik (Denis Nikitin)
llvm-svn: 371878
|