OSDN Git Service
Leonard Chan [Thu, 31 Jan 2019 19:15:37 +0000 (19:15 +0000)]
[Intrinsic] Expand SMULFIX to MUL, MULH[US], or [US]MUL_LOHI on vector arguments
r zero scale SMULFIX, expand into MUL which produces better code for X86.
For vector arguments, expand into MUL if SMULFIX is provided with a zero scale.
Otherwise, expand into MULH[US] or [US]MUL_LOHI.
Differential Revision: https://reviews.llvm.org/D56987
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352783
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 31 Jan 2019 19:05:22 +0000 (19:05 +0000)]
Revert "[X86] Mark EMMS and FEMMS as clobbering MM0-7 and ST0-7."
This is causing a failure in chromium
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352782
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Thu, 31 Jan 2019 18:45:46 +0000 (18:45 +0000)]
Lower widenable_conditions in CGP
This ensures that if we make it to the backend w/o lowering widenable_conditions first, that we generate correct code. Doing it in CGP - instead of isel - let's us fold control flow before hitting block local instruction selection.
Differential Revision: https://reviews.llvm.org/D57473
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352779
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 31 Jan 2019 18:01:49 +0000 (18:01 +0000)]
GlobalISel: Fix handling of vectors of pointers in clamp{Min,Max}NumElements
This avoids hitting the assert added in r352636 in a future commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352777
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Thu, 31 Jan 2019 17:58:59 +0000 (17:58 +0000)]
[ADT] Fix a typo in isOSVersionLT that breaks the Micro version check
The original commit of this function (r129800 in 2011) had a typo where
part of the "Micro" version check was actually comparing against the "Minor"
version number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352776
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 31 Jan 2019 17:49:25 +0000 (17:49 +0000)]
Trim trailing whitespace. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352775
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 31 Jan 2019 17:48:35 +0000 (17:48 +0000)]
[X86][AVX] Fold concat(broadcast(x),broadcast(x)) -> broadcast(x)
Differential Revision: https://reviews.llvm.org/D57514
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352774
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 31 Jan 2019 17:38:10 +0000 (17:38 +0000)]
[X86][AVX] insert_subvector(bitcast(v), bitcast(s), c1) -> bitcast(insert_subvector(v,s,c2))
Similar to what we already do in DAGCombiner, but this version also handles bitcasts from types with different scalar sizes, which x86 is better at handling.
Differential Revision: https://reviews.llvm.org/D57514
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352773
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 31 Jan 2019 17:23:29 +0000 (17:23 +0000)]
[CallSite removal] Remove CallSite uses from InstCombine.
Reviewers: chandlerc
Reviewed By: chandlerc
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D57494
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352771
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Thu, 31 Jan 2019 17:18:11 +0000 (17:18 +0000)]
Recommit "[ThinLTO] Rename COMDATs for COFF when promoting/renaming COMDAT leader"
Recommit of r352763 with fix for use after free.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352770
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 31 Jan 2019 16:48:42 +0000 (16:48 +0000)]
revert r352766: [PatternMatch] add special-case uaddo matching for increment-by-one
Missed some regression test updates when testing this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352769
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Thu, 31 Jan 2019 16:46:14 +0000 (16:46 +0000)]
Revert "[ThinLTO] Rename COMDATs for COFF when promoting/renaming COMDAT leader"
This reverts commit r352763.
Causing a couple bot failures, root cause pointed to by sanitizer bot:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/28909/steps/annotate/logs/stdio
Use after free. I understand the issue but will revert and test with fix
before recommitting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352768
91177308-0d34-0410-b5e6-
96231b3b80d8
Jordan Rupprecht [Thu, 31 Jan 2019 16:45:16 +0000 (16:45 +0000)]
[llvm-objcopy] Skip --localize-symbol for undefined symbols
Summary:
Include the symbol being defined in the list of requirements for using --localize-symbol.
This is used, for example, when someone is depending on two different projects that have the same (or close enough) method defined in each library, and using "-L sym" for a conflicting symbol in one of the libraries so that the definition from the other one is used. However, the library may have internal references to the symbol, which cause program crashes when those are used, i.e.:
```
$ cat foo.c
int foo() { return 5; }
$ cat bar.c
int foo();
int bar() { return 2 * foo(); }
$ cat foo2.c
int foo() { /* Safer implementation */ return 42; }
$ cat main.c
int bar();
int main() {
__builtin_printf("bar = %d\n", bar());
return 0;
}
$ ar rcs libfoo.a foo.o bar.o
$ ar rcs libfoo2.a foo2.o
# Picks the wrong foo() impl
$ clang main.o -lfoo -lfoo2 -L. -o main
# Picks the right foo() impl
$ objcopy -L foo libfoo.a && clang main.o -lfoo -lfoo2 -L. -o main
# Links somehow, but crashes at runtime
$ llvm-objcopy -L foo libfoo.a && clang main.o -lfoo -lfoo2 -L. -o main
```
Reviewers: jhenderson, alexshap, jakehehrlich, espindola
Subscribers: emaste, arichardson
Differential Revision: https://reviews.llvm.org/D57417
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352767
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 31 Jan 2019 16:40:07 +0000 (16:40 +0000)]
[PatternMatch] add special-case uaddo matching for increment-by-one
This is the most important uaddo problem mentioned in PR31754:
https://bugs.llvm.org/show_bug.cgi?id=31754
We were failing to match the canonicalized pattern when it's an 'add 1' operation.
Pattern matching, however, shouldn't assume that we have canonicalized IR, so we
match 4 commuted variants of uaddo.
There's also a test with a crazy type to show that the existing CGP transform
based on this matcher is not limited by target legality checks, but that's a
different problem.
Differential Revision: https://reviews.llvm.org/D57516
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352766
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Thu, 31 Jan 2019 16:00:15 +0000 (16:00 +0000)]
[ThinLTO] Rename COMDATs for COFF when promoting/renaming COMDAT leader
Summary:
COFF requires that COMDAT name match that of the leader. When we promote
and rename an internal leader in ThinLTO due to an import, ensure we
subsequently rename the associated COMDAT. Similar to D31963 which did
this during ThinLTO module splitting.
Fixes PR40414.
Reviewers: pcc, inglorion
Subscribers: mehdi_amini, dexonsmith, dmajor, llvm-commits
Differential Revision: https://reviews.llvm.org/D57395
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352763
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 31 Jan 2019 15:48:46 +0000 (15:48 +0000)]
[CGP] add more tests for uaddo; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352762
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Thu, 31 Jan 2019 15:23:02 +0000 (15:23 +0000)]
gn build: Merge r352483
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352759
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Thu, 31 Jan 2019 14:45:40 +0000 (14:45 +0000)]
gn build: Merge r352681, r352739
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352758
91177308-0d34-0410-b5e6-
96231b3b80d8
James Henderson [Thu, 31 Jan 2019 14:22:50 +0000 (14:22 +0000)]
[llvm-symbolizer][test] Extract tests from llvm-symbolizer.test and simplify (#3)
This is the fourth (and final for now) of a series of patches
simplifying llvm-symbolizer tests. See r352752, r352753 and 352754 for
the previous ones. This patch splits out several more distinct test
cases from llvm-symbolizer.test into separate tests, and simplifies them
in various ways including:
1) Building a test case for spaces in path from source, rather than
using a pre-canned binary. This allows deleting of said binary and the
source it was built from.
2) Switching to specifying addresses and objects directly on the
command-line rather than via stdin.
This also adds an explict test for the ability to specify a file and
address as a line in stdin, since the majority of the tests have been
migrated away from this approach, leaving this largely untested.
Reviewed by: dblaikie
Differential Revision: https://reviews.llvm.org/D57446
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352756
91177308-0d34-0410-b5e6-
96231b3b80d8
James Henderson [Thu, 31 Jan 2019 14:17:33 +0000 (14:17 +0000)]
[llvm-symbolizer][test] Extract tests from llvm-symbolizer.test and simplify (#2)
This is the third of a series of patches simplifying llvm-symbolizer
tests. See r352752 and r352753 for the previous two. This patch splits
out a number of distinct test cases from llvm-symbolizer.test into
separate tests, and simplifies them in various ways including:
1) using --obj/positional arguments for the input file and addresses
instead of stdin,
2) using runtime-generated inputs rather than a pre-canned binary, and
3) testing more specifically (i.e. checking only what is interesting to
the behaviour changed in the original commit for that test case).
This patch also removes the test case for using --obj. The
tools/llvm-symbolizer/basic.s test already tests this case. Finally,
this patch adds a simple test case to the demangle switch test case to
show that demangling happens by default.
See https://bugs.llvm.org/show_bug.cgi?id=40070#c1 for the motivation.
Reviewed by: dblaikie
Differential Revision: https://reviews.llvm.org/D57446
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352754
91177308-0d34-0410-b5e6-
96231b3b80d8
James Henderson [Thu, 31 Jan 2019 14:11:17 +0000 (14:11 +0000)]
[llvm-symbolizer][test] Extract tests from llvm-symbolizer.test and simplify (#1)
This is the second of a series of patches simplifying llvm-symbolizer
tests. See r352752 for the first. This one splits out 5 distinct test
cases from llvm-symbolizer.test into separate tests, and simplifies them
slightly by using --obj/positional arguments for the input file and
addresses instead of stdin.
See https://bugs.llvm.org/show_bug.cgi?id=40070#c1 for the motivation.
Reviewed by: dblaikie
Differential Revision: https://reviews.llvm.org/D57443
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352753
91177308-0d34-0410-b5e6-
96231b3b80d8
James Henderson [Thu, 31 Jan 2019 14:04:47 +0000 (14:04 +0000)]
[llvm-symbolizer][test] Simplify test input reading
This change migrates most llvm-symbolizer tests away from reading input
via stdin and instead using --obj + positional arguments for the file
and addresses respectively, which makes the tests easier to read.
One exception is the test test/tools/llvm-symbolizer/pdb/pdb.test, which
was doing some manipulation on the input addresses. This patch
simplifies this somewhat, but it still reads from stdin.
More changes to follow to simplify/break-up other tests.
Reviewed by: dblaikie
Differential Revision: https://reviews.llvm.org/D57441
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352752
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 31 Jan 2019 14:04:07 +0000 (14:04 +0000)]
[X86][AVX] Fold broadcast(bitcast(src)) -> bitcast(broadcast(src))
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352751
91177308-0d34-0410-b5e6-
96231b3b80d8
James Henderson [Thu, 31 Jan 2019 13:58:48 +0000 (13:58 +0000)]
[CommandLine] Improve help text for cl::values style options
In order to make an option value truly optional, both the ValueOptional
and an empty-named value are required. This empty-named value appears in
the command-line help text, which is not ideal.
This change improves the help text for these sort of options in a number
of ways:
1) ValueOptional options with an empty-named value now print their help
text twice: both without and then with '=<value>' after the name. The
latter version then lists the allowed values after it.
2) Empty-named values with no help text in ValueOptional options are not
listed in the permitted values.
3) Otherwise empty-named options are printed as =<empty> rather than
simply '='.
4) Option values without help text do not have the '-' separator
printed.
It also tweaks the llvm-symbolizer -functions help text to not print a
trailing ':' as that looks bad combined with 1) above.
Reviewed by: thopre, ruiu
Differential Revision: https://reviews.llvm.org/D57030
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352750
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 31 Jan 2019 13:32:09 +0000 (13:32 +0000)]
[X86][AVX] Add PR34394 subvector broadcast test cases
Tidyup check-prefixes at the same time
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352749
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Leviant [Thu, 31 Jan 2019 12:16:20 +0000 (12:16 +0000)]
[llvm-strip] Add --strip-symbol
Differential revision: https://reviews.llvm.org/D57440
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352746
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 31 Jan 2019 11:55:30 +0000 (11:55 +0000)]
[X86] combineExtractWithShuffle - more aggressively peek through bitcasts
Fixes regression introduced by rL352743
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352745
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 31 Jan 2019 11:41:10 +0000 (11:41 +0000)]
[X86][AVX] Enable AVX1 broadcasts in shuffle combining
Enables 32/64-bit scalar load broadcasts on AVX1 targets
The extractelement-load.ll regression will be fixed shortly in a followup commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352743
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 31 Jan 2019 11:15:05 +0000 (11:15 +0000)]
[X86][AVX] Fold vt1 concat_vectors(vt2 undef, vt2 broadcast(x)) --> vt1 broadcast(x)
If we're not inserting the broadcast into the lowest subvector then we can avoid the insertion by just performing a larger broadcast.
Avoids a regression when we enable AVX1 broadcasts in shuffle combining
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352742
91177308-0d34-0410-b5e6-
96231b3b80d8
Max Kazantsev [Thu, 31 Jan 2019 09:10:17 +0000 (09:10 +0000)]
Default lowering for experimental.widenable.condition
Introduces a pass that provides default lowering strategy for the
`experimental.widenable.condition` intrinsic, replacing all its uses with
`i1 true`.
Differential Revision: https://reviews.llvm.org/D56096
Reviewed By: reames
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352739
91177308-0d34-0410-b5e6-
96231b3b80d8
Yevgeny Rouban [Thu, 31 Jan 2019 08:49:20 +0000 (08:49 +0000)]
Test commit. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352738
91177308-0d34-0410-b5e6-
96231b3b80d8
Sjoerd Meijer [Thu, 31 Jan 2019 08:38:06 +0000 (08:38 +0000)]
[ARM] Thumb2: ConstantMaterializationCost
Constants can also be materialised using the negated value and a MVN, and this
case seem to have been missed for Thumb2. To check the constant materialisation
costs, we now call getT2SOImmVal twice, once for the original constant and then
also for its negated value, and this function checks if the constant can both
be splatted or rotated.
This was revealed by a test that optimises for minsize: instead of a LDR
literal pool load and having a literal pool entry, just a MVN with an immediate
is smaller (and also faster).
Differential Revision: https://reviews.llvm.org/D57327
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352737
91177308-0d34-0410-b5e6-
96231b3b80d8
Sjoerd Meijer [Thu, 31 Jan 2019 08:07:30 +0000 (08:07 +0000)]
[SelectionDAG] Codesize: don't expand SHIFT to SHIFT_PARTS
And instead just generate a libcall. My motivating example on ARM was a simple:
shl i64 %A, %B
for which the code bloat is quite significant. For other targets that also
accept __int128/i128 such as AArch64 and X86, it is also beneficial for these
cases to generate a libcall when optimising for minsize. On these 64-bit targets,
the 64-bits shifts are of course unaffected because the SHIFT/SHIFT_PARTS
lowering operation action is not set to custom/expand.
Differential Revision: https://reviews.llvm.org/D57386
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352736
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Yung [Thu, 31 Jan 2019 07:58:34 +0000 (07:58 +0000)]
Fixup test after r352704 since it changes how paths may be emitted.
On Unix/Mac OS X, normpath() returns the path unchanged (FileCheck), but
on case-insensitive filesystems (like NTFS on Windows), it converts the
path to lowercase (filecheck) which was causing the test to fail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352735
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitry Venikov [Thu, 31 Jan 2019 07:38:19 +0000 (07:38 +0000)]
Commit tests for changes in revision D41940
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352734
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Thu, 31 Jan 2019 07:12:43 +0000 (07:12 +0000)]
Revert "[CMake] Unify scripts for generating VCS headers"
This reverts commits r352729 and r352731: this broke Sanitizer Windows bots
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352733
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitry Venikov [Thu, 31 Jan 2019 06:28:10 +0000 (06:28 +0000)]
[InstCombine] Missed optimization in math expression: simplify calls exp functions
Summary: This patch enables folding following expressions under -ffast-math flag: exp(X) * exp(Y) -> exp(X + Y), exp2(X) * exp2(Y) -> exp2(X + Y). Motivation: https://bugs.llvm.org/show_bug.cgi?id=35594
Reviewers: hfinkel, spatel, efriedma, lebedev.ri
Reviewed By: spatel, lebedev.ri
Subscribers: lebedev.ri, llvm-commits
Differential Revision: https://reviews.llvm.org/D41342
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352730
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Thu, 31 Jan 2019 06:21:01 +0000 (06:21 +0000)]
[CMake] Unify scripts for generating VCS headers
Previously, there were two different scripts for generating VCS headers:
one used by LLVM and one used by Clang. They were both similar, but
different. They were both broken in their own ways, for example the one
used by Clang didn't properly handle monorepo resulting in an incorrect
version information reported by Clang.
This change unifies two the scripts by introducing a new script that's
used from both LLVM and Clang, ensures that the new script supports both
monorepo and standalone SVN and Git setups, and removes the old scripts.
Differential Revision: https://reviews.llvm.org/D57063
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352729
91177308-0d34-0410-b5e6-
96231b3b80d8
Max Kazantsev [Thu, 31 Jan 2019 06:19:25 +0000 (06:19 +0000)]
[SCEV] Prohibit SCEV transformations for huge SCEVs
Currently SCEV attempts to limit transformations so that they do not work with
big SCEVs (that may take almost infinite compile time). But for this, it uses heuristics
such as recursion depth and number of operands, which do not give us a guarantee
that we don't actually have big SCEVs. This situation is still possible, though it is not
likely to happen. However, the bug PR33494 showed a bunch of simple corner case
tests where we still produce huge SCEVs, even not reaching big recursion depth etc.
This patch introduces a concept of 'huge' SCEVs. A SCEV is huge if its expression
size (intoduced in D35989) exceeds some threshold value. We prohibit optimizing
transformations if any of SCEVs we are dealing with is huge. This gives us a reliable
check that we don't spend too much time working with them.
As the next step, we can possibly get rid of old limiting mechanisms, such as recursion
depth thresholds.
Differential Revision: https://reviews.llvm.org/D35990
Reviewed By: reames
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352728
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Trieu [Thu, 31 Jan 2019 04:33:11 +0000 (04:33 +0000)]
Add namespace to some types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352725
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 31 Jan 2019 04:27:17 +0000 (04:27 +0000)]
Fix missing C++ mode comment in header
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352724
91177308-0d34-0410-b5e6-
96231b3b80d8
David L. Jones [Thu, 31 Jan 2019 03:28:46 +0000 (03:28 +0000)]
Revert "Reapply "[CGP] Check for existing inttotpr before creating new one""
This change reverts r351626.
The changes in r351626 cause quadratic work in several cases. (See r351626 thread on llvm-commits for details.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352722
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 31 Jan 2019 02:46:05 +0000 (02:46 +0000)]
GlobalISel: Handle odd splits in fewerElementsVector for load/store
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352720
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 31 Jan 2019 02:34:03 +0000 (02:34 +0000)]
GlobalISel: Implement narrowScalar for bswap
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352719
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 31 Jan 2019 02:22:39 +0000 (02:22 +0000)]
GlobalISel: Don't call changingInstruction before giving up
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352718
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 31 Jan 2019 02:09:57 +0000 (02:09 +0000)]
GlobalISel: Allow bitcount ops to have different result type
For AMDGPU the result is always 32-bit for 64-bit inputs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352717
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 31 Jan 2019 01:49:58 +0000 (01:49 +0000)]
GlobalISel: Use helper function for MMO splitting
Also fix an alignment bug getMachineMemOperand. If the
tracked value is null, the offset isn't tracked so the
base alignment needs to be reduced.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352716
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 31 Jan 2019 01:47:29 +0000 (01:47 +0000)]
[libFuzzer] update docs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352715
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Thu, 31 Jan 2019 01:41:39 +0000 (01:41 +0000)]
[InstCombine] Expand testing for Windows (NFC)
Added the checks to the existing cases when the target is Win64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352714
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 31 Jan 2019 01:38:47 +0000 (01:38 +0000)]
GlobalISel: Fix creating MMOs with align 0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352712
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 31 Jan 2019 00:49:40 +0000 (00:49 +0000)]
[X86] Add a 32-bit command line to avx512-intrinsics.ll. Move all 64-bit mode only intrinsics to avx512-intrinsics-x86_64.ll.
Most of the other intrinsic tests have a 32-bit command lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352708
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Thu, 31 Jan 2019 00:49:27 +0000 (00:49 +0000)]
[InstCombine] Simplify check clauses in test (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352707
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 31 Jan 2019 00:42:02 +0000 (00:42 +0000)]
Reland "gn build: Add BPF target."
Differential Revision: https://reviews.llvm.org/D57436
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352705
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Thu, 31 Jan 2019 00:40:43 +0000 (00:40 +0000)]
lit: Let lit.util.which() return a normcase()ed path
LLVMConfig.with_environment() uses os.path.normcase(os.path.normpath(x)) to
normalize temporary env vars. LLVMConfig.use_clang() uses with_environment() to
temporarily set PATH and then look for clang there. This means that on Windows,
clang will be run with a path like c:\foo\bin\clang.EXE (with a lower-case
"C:").
lit.util.which() used to not do this, which means the executables added in
clang/test/lit.cfg.py (e.g. c-index-test) were run with a path like
C:\foo\bin\c-index-test.EXE (because both CMake and GN happen to write
clang_tools_dir with an upper-case C to lit.site.cfg.py).
clang/test/Index/pch-from-libclang.c requires that both c-index-test and clang
use _exactly_ the same resource dir path (same case and everything), because a
hash of the resource directory is used as module cache path.
This patch is necessary but not sufficient to make pch-from-libclang.c pass on
Windows.
Differential Revision: https://reviews.llvm.org/D57343
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352704
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Thu, 31 Jan 2019 00:35:37 +0000 (00:35 +0000)]
[LegalizeVectorTypes] Allow illegal indices when splitting extract_vector_elt
Summary:
Fixes PR40267, in which the removed assertion was triggering on
perfectly valid IR. As far as I can tell, constant out of bounds
indices should be allowed when splitting extract_vector_elt, since
they will simply be propagated as out of bounds indices in the
resulting split vector and handled appropriately elsewhere.
Reviewers: aheejin
Subscribers: dschuff, sbc100, jgravelle-google, hiraditya
Differential Revision: https://reviews.llvm.org/D57471
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352702
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 31 Jan 2019 00:04:48 +0000 (00:04 +0000)]
[LegalizeTypes] Use report_fatal_error instead of llvm_unreachable in the default case of some type legalization handlers that can be reached with intrinsics with result or operands that aren't legal types.
These can be triggered by mistakenly using a 64-bit mode only intrinsics with a -mtriple=i686. Using report_fatal_error gives a better experience for this mistake in release builds instead of probably crashing.
We already do this for some of the vector type legalization handles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352699
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 31 Jan 2019 00:04:46 +0000 (00:04 +0000)]
[X86] Remove handling of ISD::INTRINSIC_WO_CHAIN in ReplaceNodeResults.
I believe this was there to handle avx512bw intrinsics that returned i64 type in 32-bit mode. But all those intrinsics have since been changed to v64i1 results or replaced with generic IR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352698
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 31 Jan 2019 00:04:42 +0000 (00:04 +0000)]
[X86] Add test case for pr40539. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352697
91177308-0d34-0410-b5e6-
96231b3b80d8
Heejin Ahn [Wed, 30 Jan 2019 23:53:36 +0000 (23:53 +0000)]
[WebAssembly] Remove TODO on wasm.extract.exception intrinsic (NFC)
Summary:
We planned to delete this intrinsic and do custom lowering from
`wasm.get.exception`, which has a token argument, to
`EXTRACT_EXCEPTION`, a wasm pseudo instruction that simulates popping a
value from the wasm stack.
To do that, we need to introduce a new `WebAssemblyISD` node for this,
which itself is not a problem, but also have to introduce the
`WebAssemblyISD` namespace in SelectionDAGBuilder.cpp. I don't think any
other targets are doing that in the file. And also putting a
target-specific intrinsic in the common file is a little weird too. (All
other intrinsic functions in this `visitIntrinsicCall` functions are not
target-specific ones. Other target-specific intrinsics are usually
handled in `lib/Target/[TargetName]/[TargetName]ISelLowering.cpp`. The
reason we can't do this is it has a token argument.
Anyway, so I think I prefer the current code with one redundant
intrinsic more than adding one more `WebAssemblyISD` node and
also introducing the `WebAssemblyISD` namespace into
SelectionDAGBuilder.cpp. What do you think?
Reviewers: dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D57480
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352695
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 30 Jan 2019 23:52:32 +0000 (23:52 +0000)]
[RuntimeDyld] Don't try to allocate sections with align 0.
ELF sections allow 0 for the alignment, which is specified to
be the same as 1. However many clients do not expect this and
will behave poorly in the presence of a 0-aligned section (for
example by trying to modulo something by the section alignment).
We can be more polite by making sure that we always pass a
non-zero value to clients.
Differential Revision: https://reviews.llvm.org/D57482
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352694
91177308-0d34-0410-b5e6-
96231b3b80d8
Jessica Paquette [Wed, 30 Jan 2019 23:46:15 +0000 (23:46 +0000)]
[GlobalISel][AArch64] Select G_FEXP
This teaches the legalizer to handle G_FEXP in AArch64. As a result, it also
allows us to select G_FEXP.
It...
- Updates the legalizer-info tests
- Adds a test for legalizing exp
- Updates the existing fp tests to show that we can now select G_FEXP
https://reviews.llvm.org/D57483
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352692
91177308-0d34-0410-b5e6-
96231b3b80d8
Amara Emerson [Wed, 30 Jan 2019 23:42:46 +0000 (23:42 +0000)]
[GlobalISel][LegalizerHelper] Add some missing MI change observer calls.
No test as it's a preventative fix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352691
91177308-0d34-0410-b5e6-
96231b3b80d8
Chen Zheng [Wed, 30 Jan 2019 23:18:38 +0000 (23:18 +0000)]
[PowerPC] delete no more needed workaround for readsRegister() in PowerPC
Differential Revision: https://reviews.llvm.org/D57439
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352689
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 30 Jan 2019 23:09:28 +0000 (23:09 +0000)]
MIR: Reject non-power-of-4 alignments in MMO parsing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352686
91177308-0d34-0410-b5e6-
96231b3b80d8
Jessica Paquette [Wed, 30 Jan 2019 22:54:21 +0000 (22:54 +0000)]
[GlobalISel][AArch64] Select G_FABS
This adds instruction selection support for G_FABS in AArch64. It also updates
the existing basic FP tests, adds a selection test for G_FABS.
https://reviews.llvm.org/D57418
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352684
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Clegg [Wed, 30 Jan 2019 22:47:35 +0000 (22:47 +0000)]
[WebAssembly] MC: Use WritePatchableLEB helper function. NFC.
Subscribers: dschuff, jgravelle-google, aheejin, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D57477
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352683
91177308-0d34-0410-b5e6-
96231b3b80d8
Heejin Ahn [Wed, 30 Jan 2019 22:44:45 +0000 (22:44 +0000)]
[WebAssembly] Restore stack pointer right after catch instruction
Summary:
After the staack is unwound due to a thrown exxception,
`__stack_pointer` global can point to an invalid address. So
a `global.set` to restore `__stack_pointer` should be inserted right
after `catch` instruction.
But after r352598 the `global.set` instruction is inserted not right
after `catch` but after `block` - `br-on-exn` - `end_block` -
`extract_exception` sequence. This CL fixes it.
While doing that, we can actually move ReplacePhysRegs pass after
LateEHPrepare and merge EHRestoreStackPointer pass into LateEHPrepare,
and now placing `global.set` to `__stack_pointer` right after `catch` is
much easier. Otherwise it is hard to guarantee that `global.set` is
still right after `catch` and not touched with other transformations, in
which case we have to do something to hoist it.
Reviewers: dschuff
Subscribers: mgorny, sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D57421
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352681
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 30 Jan 2019 22:41:35 +0000 (22:41 +0000)]
[DAGCombiner] sub X, 0/1 --> add X, 0/-1
This extends the existing transform for:
add X, 0/1 --> sub X, 0/-1
...to allow the sibling subtraction fold.
This pattern could regress with the proposed change in D57401.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352680
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 30 Jan 2019 21:58:20 +0000 (21:58 +0000)]
[AArch64][x86] add tests for add/sub signbits fold; NFC
As discussed/shown in D57401, we are missing a fold for
subtract of 0/1 --> add 0/-1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352678
91177308-0d34-0410-b5e6-
96231b3b80d8
Jessica Paquette [Wed, 30 Jan 2019 21:16:04 +0000 (21:16 +0000)]
[GlobalISel][AArch64] Add instruction selection support for @llvm.log2
This teaches GlobalISel to emit a RTLib call for @llvm.log2 when it encounters
it.
It updates the existing floating point tests to show that we don't fall back on
the intrinsic, and select the correct instructions. It also adds a legalizer
test for G_FLOG2.
https://reviews.llvm.org/D57357
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352673
91177308-0d34-0410-b5e6-
96231b3b80d8
Jessica Paquette [Wed, 30 Jan 2019 21:03:52 +0000 (21:03 +0000)]
[GlobalISel][AArch64] Add instruction selection support for @llvm.sqrt
This teaches the legalizer about G_FSQRT in AArch64. Also adds a legalizer
test for G_FSQRT, a selection test for it, and updates existing floating point
tests.
https://reviews.llvm.org/D57361
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352671
91177308-0d34-0410-b5e6-
96231b3b80d8
Jessica Paquette [Wed, 30 Jan 2019 20:58:14 +0000 (20:58 +0000)]
[GlobalISel] Add IRTranslator support for @llvm.sqrt -> G_FSQRT
Follow-up commit to https://reviews.llvm.org/D57359. (r352668)
This adds IRTranslator support for recognising a @llvm.sqrt intrinsic and
translating it into a G_FSQRT.
https://reviews.llvm.org/D57360
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352670
91177308-0d34-0410-b5e6-
96231b3b80d8
Jessica Paquette [Wed, 30 Jan 2019 20:49:50 +0000 (20:49 +0000)]
[GlobalISel] Introduce a G_FSQRT generic instruction
This introduces a generic instruction for computing the floating point
square root of a value.
Right now, we can't select @llvm.sqrt, so this is working towards fixing that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352668
91177308-0d34-0410-b5e6-
96231b3b80d8
Wolfgang Pieb [Wed, 30 Jan 2019 20:37:14 +0000 (20:37 +0000)]
Reverting r352642 - Handle restore instructions in LiveDebugValues - as it's causing
assertions on some buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352666
91177308-0d34-0410-b5e6-
96231b3b80d8
Erik Pilkington [Wed, 30 Jan 2019 20:34:35 +0000 (20:34 +0000)]
Add a 'dynamic' parameter to the objectsize intrinsic
This is meant to be used with clang's __builtin_dynamic_object_size.
When 'true' is passed to this parameter, the intrinsic has the
potential to be folded into instructions that will be evaluated
at run time. When 'false', the objectsize intrinsic behaviour is
unchanged.
rdar://
32212419
Differential revision: https://reviews.llvm.org/D56761
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352664
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Wed, 30 Jan 2019 20:06:24 +0000 (20:06 +0000)]
[Tests] Add tests for propagation of undef elements in vector GEPs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352662
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 30 Jan 2019 19:57:01 +0000 (19:57 +0000)]
[X86] Mark EMMS and FEMMS as clobbering MM0-7 and ST0-7.
This fixes the test case in PR35982 by preventing MMX instructions that read MM0-7 from being moved below EMMS/FEMMS by the post RA scheduler.
Though as discussed in bugzilla, this is not a complete fix. There is still the possibility of reordering in IR or by the pre-RA scheduler.
Differential Revision: https://reviews.llvm.org/D57298
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352660
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Wed, 30 Jan 2019 19:53:58 +0000 (19:53 +0000)]
gn build: Set executable bit on get.py
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352659
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Wed, 30 Jan 2019 19:21:11 +0000 (19:21 +0000)]
SimplifyDemandedVectorElts for all intrinsics
The point is that this simplifies integration of new intrinsics into SimplifiedDemandedVectorElts, and ensures we don't miss any existing ones.
This is intended to be NFC-ish, but as seen from the diffs, can produce slightly different output. This is due to order of transforms w/in instcombine resulting in two slightly different fixed points. That's something we should fix, but isn't a problem w/this patch per se.
Differential Revision: https://reviews.llvm.org/D57398
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352653
91177308-0d34-0410-b5e6-
96231b3b80d8
Wolfgang Pieb [Wed, 30 Jan 2019 19:15:43 +0000 (19:15 +0000)]
The test comitted with r348896 needed -march=x86=64 on the llc command line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352651
91177308-0d34-0410-b5e6-
96231b3b80d8
Yonghong Song [Wed, 30 Jan 2019 19:13:16 +0000 (19:13 +0000)]
Revert "gn build: Add BPF target."
This reverts commit r352638.
The change in this patch is not trivial and it is merged
without component owner approval.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352649
91177308-0d34-0410-b5e6-
96231b3b80d8
Wolfgang Pieb [Wed, 30 Jan 2019 18:34:07 +0000 (18:34 +0000)]
[DEBUGINFO] Handle restore instructions in LiveDebugValues
The LiveDebugValues pass recognizes spills but not restores, which can
cause large gaps in location information for some variables, depending
on control flow. This patch make LiveDebugValues recognize restores and
generate appropriate DBG_VALUE instructions.
Reviewers: aprantl, NicolaPrica
Differential Revision: https://reviews.llvm.org/D57271
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352642
91177308-0d34-0410-b5e6-
96231b3b80d8
Jordan Rupprecht [Wed, 30 Jan 2019 18:13:30 +0000 (18:13 +0000)]
[llvm-objcopy][NFC] More error propagation (linkToBuildIdDir)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352640
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 30 Jan 2019 18:04:08 +0000 (18:04 +0000)]
gn build: Add BPF target.
Differential Revision: https://reviews.llvm.org/D57436
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352638
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 30 Jan 2019 17:52:25 +0000 (17:52 +0000)]
GlobalISel: Add simpler way of always specifying custom lowering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352637
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 30 Jan 2019 17:52:23 +0000 (17:52 +0000)]
GlobalISel: Add assert that legalize mutation makes sense
I've repeatedly encountered bugs resulting from custom legalize
mutations returning nonsense legalize results, such as increasing the
number of elements for FewerElements. Add an assert function to make
sure the type to mutate to is consistent with the legalize action.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352636
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 30 Jan 2019 17:25:37 +0000 (17:25 +0000)]
AMDGPU: Stop generating unused intrinsic .inc files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352635
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 30 Jan 2019 16:19:19 +0000 (16:19 +0000)]
[X86][AVX] Prefer to combine shuffle to broadcasts whenever possible
This is the first step towards improving broadcast support on AVX1 targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352634
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 30 Jan 2019 16:15:59 +0000 (16:15 +0000)]
[utils] Fix update scripts output when run on python3.
This fixes a "bytes-like object is required, not 'str'" python3 error I hit on update_llc_test_checks.py (but present on the other scripts as well) by matching what update_mca_test_checks.py already does, plus I've added an explicit 'utf-8' encoding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352633
91177308-0d34-0410-b5e6-
96231b3b80d8
Clement Courbet [Wed, 30 Jan 2019 16:02:20 +0000 (16:02 +0000)]
[llvm-exegesis] Add throughput mode.
Summary:
This just uses the latency benchmark runner on the parallel uops snippet
generator.
Fixes PR37698.
Reviewers: gchatelet
Subscribers: tschuett, RKSimon, llvm-commits
Differential Revision: https://reviews.llvm.org/D57000
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352632
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Wed, 30 Jan 2019 15:39:05 +0000 (15:39 +0000)]
[llvm-readobj] - Few minor cleanups. NFC.
Minor code simplifications, relocations,
renamings (to match LLVM style).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352630
91177308-0d34-0410-b5e6-
96231b3b80d8
Stefan Granitz [Wed, 30 Jan 2019 15:10:08 +0000 (15:10 +0000)]
[CMake] Accept ENTITLEMENTS in llvm_add_library()
Summary: We added support for code signing entitlements in add_llvm_executable() with D54443. In the future it would be useful to have this functionality available also for libraries.
Reviewers: beanz, bogner
Reviewed By: bogner
Subscribers: mgorny, llvm-commits, lldb-commits, #lldb
Differential Revision: https://reviews.llvm.org/D57334
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352628
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 30 Jan 2019 15:07:49 +0000 (15:07 +0000)]
[InstCombine][x86] add tests for addcarry intrinsic; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352627
91177308-0d34-0410-b5e6-
96231b3b80d8
Jordan Rupprecht [Wed, 30 Jan 2019 14:58:13 +0000 (14:58 +0000)]
[llvm-objcopy] Support -X|--discard-locals.
Summary:
This adds support for the --discard-locals flag, which acts similarly to --discard-all, except it only applies to compiler-generated symbols (i.e. symbols starting with `.L` in ELF).
I am not sure about COFF local symbols: those appear to also use `.L` in most cases, but also use just `L` in other cases, so for now I am just leaving it unimplemented there.
Fixes PR36160
Reviewers: jhenderson, alexshap, jakehehrlich, mstorsjo, espindola
Reviewed By: jhenderson
Subscribers: llvm-commits, emaste, arichardson
Differential Revision: https://reviews.llvm.org/D57248
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352626
91177308-0d34-0410-b5e6-
96231b3b80d8
Jordan Rupprecht [Wed, 30 Jan 2019 14:36:53 +0000 (14:36 +0000)]
[llvm-objcopy][NFC] More error propagation
Summary: Do some more error cleanup, removing some dependencies from llvm-objcopy's error/reportError in [ELF/COFF]Objcopy methods.
Reviewers: jhenderson, alexshap, jakehehrlich, mstorsjo, espindola
Subscribers: emaste, arichardson
Differential Revision: https://reviews.llvm.org/D57423
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352625
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Wed, 30 Jan 2019 14:08:55 +0000 (14:08 +0000)]
[llvm-readobj] - Simplify the code.
We have a Field struct which has a StringRef member Str.
The code needs to create and keep alive the temporarily
std::string variables because of that.
That is not convenient and makes the code be more complicated
than it could be.
There seems to be no reason to keep Str be StringRef.
The patch changes it to be std::string and
rearranges the code around slightly.
Differential revision: https://reviews.llvm.org/D57447
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352623
91177308-0d34-0410-b5e6-
96231b3b80d8
Max Kazantsev [Wed, 30 Jan 2019 12:32:19 +0000 (12:32 +0000)]
Properly use DT.verify in LoopSimplifyCFG
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352621
91177308-0d34-0410-b5e6-
96231b3b80d8
Max Kazantsev [Wed, 30 Jan 2019 11:25:12 +0000 (11:25 +0000)]
Enable IRCE for narrow latch by defailt
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352619
91177308-0d34-0410-b5e6-
96231b3b80d8
Shiva Chen [Wed, 30 Jan 2019 11:16:59 +0000 (11:16 +0000)]
[RISCV] Insert R_RISCV_ALIGN relocation type and Nops for code alignment when linker relaxation enabled
Linker relaxation may change code size. We need to fix up the alignment
of alignment directive in text section by inserting Nops and R_RISCV_ALIGN
relocation type. So then linker could satisfy the alignment by removing Nops.
To do this:
1. Add shouldInsertExtraNopBytesForCodeAlign target hook to calculate
the Nops we need to insert.
2. Add shouldInsertFixupForCodeAlign target hook to insert
R_RISCV_ALIGN fixup type.
Differential Revision: https://reviews.llvm.org/D47755
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352616
91177308-0d34-0410-b5e6-
96231b3b80d8
Aleksandr Urakov [Wed, 30 Jan 2019 10:40:45 +0000 (10:40 +0000)]
[NativePDB] Fix access to both old & new fpo data entries from dbi stream
Summary:
This patch fixes access to fpo streams in native pdb from DbiStream and makes
code consistent with DbiStreamBuilder.
Patch By: leonid.mashinskiy
Reviewers: zturner, aleksandr.urakov
Reviewed By: zturner
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D56725
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352615
91177308-0d34-0410-b5e6-
96231b3b80d8