| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
Also, make the same change in and-of-icmps and remove a hack for detecting that case.
Finally, add some FIXME comments because the code duplication here is awful.
This should fix the remaining IR problem noted in:
https://bugs.llvm.org/show_bug.cgi?id=32524
llvm-svn: 299851
|
| |
|
|
|
|
| |
This reverts r299849, apparently these tests only fail on my machine.
llvm-svn: 299850
|
| |
|
|
|
|
| |
They all assert. Filed as PR32596.
llvm-svn: 299849
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Adds support for pointers to arrays, which was missing
* Adds some tests
* Improves consistency of const and volatile qualifiers
* Eliminates non-composable special case code for arrays and function by using
a more general recursive approach
* Has a hack for getting the calling convention into the right spot for
pointer-to-functions
Given the rapid changes happenning in llvm-pdbdump, this may be difficult to
merge.
Differential Revision: https://reviews.llvm.org/D31832
llvm-svn: 299848
|
| |
|
|
|
|
|
|
|
|
| |
select operations
We currently only fold scalar add of constants into selects. This improves this to support vectors too.
Differential Revision: https://reviews.llvm.org/D31683
llvm-svn: 299847
|
| |
|
|
| |
llvm-svn: 299846
|
| |
|
|
|
|
| |
The old URL is a 404 now. Pointed out by Smirftsch1 on IRC.
llvm-svn: 299845
|
| |
|
|
| |
llvm-svn: 299844
|
| |
|
|
|
|
|
|
|
|
| |
per directory.
Contributed by ilya-biryukov!
Differential Revision: https://reviews.llvm.org/D31746
llvm-svn: 299843
|
| |
|
|
|
|
| |
Legalize to a libcall.
llvm-svn: 299841
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This is my first time using the commutable matchers so wanted to make sure I was doing it right.
Are there any other matcher tricks to further shrink this? Can we commute the whole match so we don't have to LHS and RHS separately?
Reviewers: davide, spatel
Reviewed By: davide
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31680
llvm-svn: 299840
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
calculate KnownZero bits for ISD::SETCC and ISD::AssertZExt
Summary:
For SETCC we aren't calculating the KnownZero bits at all. I've copied the code from computeKnownZero over for this.
For AssertZExt we were only setting KnownZero for bits that were demanded. But the upper bits are zero whether they were demanded or not.
I'm interested in fixing this because my belief is the first part of the ISD::AND handling code in SimplifyDemandedBits largely exists because of these two bugs. In that code we go to computeKnownBits for the LHS and optimize a RHS constant. Because computeKnownBits handles SETCC and AssertZExt correctly we get better information sometimes than when we call SimplifyDemandedBits on the LHS later. With these two issues fixed in SimplifyDemandedBits I was able to remove that computeKnownBits call and still pass all X86 tests. I'll submit that change in a separate patch.
Reviewers: RKSimon, spatel
Reviewed By: RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31715
llvm-svn: 299839
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instructions into phi nodes
Summary: I noticed in the select folding code that we copied fast math flags, but did not do the same for the similar handling in phi nodes. This patch fixes that to do the same thing as select
Reviewers: spatel, davide, majnemer, hfinkel
Reviewed By: davide
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31690
llvm-svn: 299838
|
| |
|
|
|
|
| |
transform.
llvm-svn: 299837
|
| |
|
|
|
|
| |
version of a transform. NFC.
llvm-svn: 299836
|
| |
|
|
|
|
|
|
| |
matcher checks in visitXor.
The matchers themselves should be enough.
llvm-svn: 299835
|
| |
|
|
|
|
|
|
| |
very similar (A&B)^B -> ~A & B code. This should be NFC except for the addition of hasOneUse check.
I think this code is still overly complicated and should use matchers, but first I wanted to make it consistent.
llvm-svn: 299834
|
| |
|
|
| |
llvm-svn: 299833
|
| |
|
|
|
|
|
| |
This is causing build breaks, but it's unused anyway, so delete
it.
llvm-svn: 299832
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Added some asserts to make sure concrete symbol types don't
get constructed with RawSymbols that have an incompatible
SymTag enum value.
2. Added new forwarding macros that auto-define an Id/Sym method
pair whenever there is a method that returns a SymIndexId.
Previously we would just provide one method that returned only
the SymIndexId and it was up to the caller to use the Session
object to get a pointer to the symbol. Now we automatically
get both the method that returns the Id, as well as a method
that returns the pointer directly with just one macro.
3. Added some methods for dumping straight to stdout that can
be used from inside the debugger for diagnostics during a
debug session.
4. Added a clone() method and a cast<T>() method to PDBSymbol
that can shorten some usage patterns.
llvm-svn: 299831
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Resolve indirect branch target when possible.
This potentially eliminates more basicblocks and result in better evaluation for phi and other things.
Reviewers: davide, efriedma, sanjoy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D30322
llvm-svn: 299830
|
| |
|
|
|
|
|
|
|
|
|
|
| |
"PredicatesFoldable" returns false for signed/unsigned mismatched pairs,
so these cases should never exist. We'll default to 'unreachable' on those
predicate combos instead.
Most of what's left in these switches belongs in InstSimplify (and may
already be there), so there's probably more that can be done to reduce
this code.
llvm-svn: 299829
|
| |
|
|
|
|
| |
I moved this test to 'not.ll' in r299824 but accidentally added a copy here.
llvm-svn: 299828
|
| |
|
|
|
|
| |
No caller has been passing it for a long time.
llvm-svn: 299827
|
| |
|
|
| |
llvm-svn: 299825
|
| |
|
|
|
|
| |
Also, move a test next to its sibling to eliminate a file with just one test.
llvm-svn: 299824
|
| |
|
|
|
|
|
|
|
|
| |
isUseTriviallyOptimizableToLiveOnEntry
In isUseTriviallyOptimizableToLiveOnEntry, pointsToConstantMemory needs to be
called on the load's pointer operand, not on the result of the load (which
might not even be a pointer).
llvm-svn: 299823
|
| |
|
|
|
|
|
|
| |
This adds support for these combines for vectors
(X^C)|Y -> (X|Y)^C iff Y&C == 0
Y|(X^C) -> (X|Y)^C iff Y&C == 0
llvm-svn: 299822
|
| |
|
|
| |
llvm-svn: 299821
|
| |
|
|
|
|
| |
combine. Also add the commuted versions. NFC
llvm-svn: 299820
|
| |
|
|
| |
llvm-svn: 299819
|
| |
|
|
|
|
| |
We usually give constants a 'C' somewhere in the name...
llvm-svn: 299818
|
| |
|
|
| |
llvm-svn: 299817
|
| |
|
|
|
|
|
| |
Before this was just writing 0s, which ends up looking like a
v_cndmask_b32 v0, s0, v0, vcc. Write out an encoded s_nop instead.
llvm-svn: 299816
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
same name
Introducing a new error to macro parameters' parsing:
currently, llvm-mc won't complain if a macro have two (or more) named params with the same name.
this behavior is false, as there's no merit in having some params sharing a name.
now, instead of tolerate such a phenomena - emit an appropriate error.
Differential Revision: https://reviews.llvm.org/D31674
llvm-svn: 299815
|
| |
|
|
|
|
| |
This just makes it easier to follow the Doxygen blocks
llvm-svn: 299814
|
| |
|
|
|
|
|
|
|
|
| |
Add the 'z3' subdirectory to the list of possible path suffixes for
libz3 header search. The z3 headers are installed in /usr/include/z3
on Gentoo.
Differential Revision: https://reviews.llvm.org/D31756
llvm-svn: 299813
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously we silently produced broken output for R_386_GOT32X/R_386_GOT32
relocations if they were used to compute the address of the symbol’s global
offset table entry without base register when position-independent code is disabled.
Situation happened because of recent ABI changes. Released ABI mentions that
R_386_GOT32X can be calculated in a two different ways (so we did not follow ABI here
before this patch), but draft ABI also mentions R_386_GOT32 relocation here.
We should use the same calculations for both relocations.
Problem is that we always calculated them as G + A - GOT (offset from end of GOT),
but for case when PIC is disabled, according to i386 ABI calculation should be G + A,
what should produce just an address in GOT finally.
ABI: https://github.com/hjl-tools/x86-psABI/wiki/intel386-psABI-draft.pdf (p36, p60).
llvm-svn: 299812
|
| |
|
|
|
|
|
|
| |
getVectorElementType() that were already available inline.
Seems to have very little compiled code size impact. But might give a tiny performance boost.
llvm-svn: 299811
|
| |
|
|
|
|
|
|
|
| |
This concludes the refinements to Falkor Machine Model.
It includes SchedPredicates for immediate zero and LSL Fast.
Forwarding logic is also modeled for vector multiply and
accumulate only.
llvm-svn: 299810
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
coro-split-after-phi.ll test was flaky due to non-determinism in
the coroutine frame construction that was sorting the spill
vector using a pointer to a def as a part of the key.
The sorting was intended to make sure that spills for the same def
are kept together, however, we populate the vector by processing
defs in order, so the spill entires will end up together anyways.
This change removes spill sorting and restores the determinism
in the test.
llvm-svn: 299809
|
| |
|
|
| |
llvm-svn: 299808
|
| |
|
|
|
|
| |
llvm.org/pr32553 and <rdar://problem/30646077> are tracking this.
llvm-svn: 299807
|
| |
|
|
|
|
|
|
|
| |
Previously __cfi_check was created in LTO optimization pipeline, which
means LLD has no way of knowing about the existence of this symbol
without rescanning the LTO output object. As a result, LLD fails to
export __cfi_check, even when given --export-dynamic-symbol flag.
llvm-svn: 299806
|
| |
|
|
|
|
|
| |
https://reviews.llvm.org/D31796 will emit a dummy __cfi_check in the
frontend.
llvm-svn: 299805
|
| |
|
|
|
|
|
| |
https://reviews.llvm.org/D31796 results in LLD emitting __cfi_check
as a weak symbol, while Gold keeps it strong. Accept both.
llvm-svn: 299804
|
| |
|
|
|
|
|
|
|
|
|
|
| |
BIC is generally faster, and it can put the output in a different
register from the input.
We already do this in Thumb2 mode; not sure why the equivalent fix
never got applied to ARM mode.
Differential Revision: https://reviews.llvm.org/D31797
llvm-svn: 299803
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The original instruction might get legalized and erased and expanded
into intermediate instructions and the intermediate instructions might
fail legalization. This end up in reporting GISelFailure on the erased
instruction.
Instead report GISelFailure on the intermediate instruction which failed
legalization.
Reviewed by: ab
llvm-svn: 299802
|
| |
|
|
|
|
| |
NFCI
llvm-svn: 299801
|
| |
|
|
|
|
|
|
|
|
| |
crtbegin is not really a proper windows support thing. This was
duplicated when the toolchain was initially built. If the injection of
crtbegin is needed, it can be done via the `/include` directive.
Furthermore, since `-fPIC` doesnt make sense on PE/COFF, crtbegin and
crtbeginS dont really need to be different.
llvm-svn: 299800
|