| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
After this change `MatchSelectPattern` recognizes the following form
of SMIN:
Y >s C ? ~Y : ~C == ~Y <s ~C ? ~Y : ~C = SMIN(~Y, ~C)
Reviewers: majnemer
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9352
llvm-svn: 236202
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Bug found with AFL fuzz.
Reviewers: rafael, dexonsmith
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9361
llvm-svn: 236200
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the least it should be guarded by some kind of target hook.
It also introduced catastrophic compile time and code quality
regressions on some out of tree targets (test case still being
reduced/sanitized).
Sanjay agreed with reverting this patch until these issues can be
resolved.
llvm-svn: 236199
|
|
|
|
|
|
| |
Bug found with AFL fuzz.
llvm-svn: 236193
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will cause hot nodes to appear closer to the root.
The literature says building the tree like this makes it a near-optimal (in
terms of search time given key frequencies) binary search tree. In LLVM's case,
we can do up to 3 comparisons in each leaf node, so it might be better to opt
for lower tree height in some cases; that's something to look into in the
future.
Differential Revision: http://reviews.llvm.org/D9318
llvm-svn: 236192
|
|
|
|
|
|
|
|
| |
Make it an error instead.
Bug found with AFL fuzz.
llvm-svn: 236190
|
|
|
|
|
|
| |
Saves finding the MCSectionData just to do a map lookup.
llvm-svn: 236189
|
|
|
|
| |
llvm-svn: 236187
|
|
|
|
|
|
|
|
|
|
| |
This was breaking sqlite with the machine verifier because operand 0 was a def according to tablegen, but didn't have the 'isDef' flag set.
Looking at the ISA, its clear that this operand is a source as writing to st(0) is implicit. So move the operand to the correct place in the td file.
rdar://problem/20751584
llvm-svn: 236183
|
|
|
|
| |
llvm-svn: 236175
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
32-bit x86 MSVC-style exceptions are functionaly similar to 64-bit, but
they take no arguments. Instead, they implicitly use the value of EBP
passed in by the caller as a pointer to the parent's frame. In LLVM, we
can represent this as llvm.frameaddress(1), and feed that into all of
our calls to llvm.framerecover.
The next steps are:
- Add an alloca to the fs:00 linked list of handlers
- Add something like llvm.sjlj.lsda or generalize it to store in the
alloca
- Move state number calculation to WinEHPrepare, arrange for
FunctionLoweringInfo to call it
- Use the state numbers to insert explicit loads and stores in the IR
llvm-svn: 236172
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the fold introduced in r236031:
http://reviews.llvm.org/rL236031
to its own helper function, so we can use it for other binops.
This is a preliminary step before partially solving:
https://llvm.org/bugs/show_bug.cgi?id=21768
https://llvm.org/bugs/show_bug.cgi?id=23116
llvm-svn: 236171
|
|
|
|
| |
llvm-svn: 236166
|
|
|
|
| |
llvm-svn: 236163
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
decomposing it into pointee type + address space
Many of the callers already have the pointer type anyway, and for the
couple of callers that don't it's pretty easy to call PointerType::get
on the pointee type and address space.
This avoids LLParser from using PointerType::getElementType when parsing
GlobalAliases from IR.
llvm-svn: 236160
|
|
|
|
| |
llvm-svn: 236158
|
|
|
|
|
|
| |
There is no need to first accumulate it in fragments.
llvm-svn: 236157
|
|
|
|
| |
llvm-svn: 236156
|
|
|
|
|
|
|
| |
This avoids having to compute the number upfront, which will be used in the
next patch.
llvm-svn: 236153
|
|
|
|
| |
llvm-svn: 236150
|
|
|
|
|
|
| |
There is no need to accumulate it in fragments first.
llvm-svn: 236148
|
|
|
|
| |
llvm-svn: 236147
|
|
|
|
|
|
|
|
| |
Mostly copy-and-paste from Sparc v8 architecture.
Differential Revision: http://reviews.llvm.org/D8741
llvm-svn: 236146
|
|
|
|
|
|
|
|
|
|
| |
Instead of accumulating the content in a fragment first, just write it
to the output stream.
Also put it first in the section table, so that we never have to worry
about its index being >= SHN_LORESERVE.
llvm-svn: 236145
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 236143
|
|
|
|
| |
llvm-svn: 236141
|
|
|
|
|
|
|
|
|
|
|
|
| |
There's probably no way to test BXJ, but if the compiler ever did emit it
during CodeGen it would have to be a block terminator so "isBranch" is
appropriate.
BLX is more tricky. Clearly a call, but it affects surprisingly little.
rdar://18719544
llvm-svn: 236140
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D9263
llvm-svn: 236139
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D9087
llvm-svn: 236137
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D8894
llvm-svn: 236131
|
|
|
|
| |
llvm-svn: 236129
|
|
|
|
|
|
|
|
|
|
|
|
| |
The clang frontend helps out GDB by emitting the members of local anonymous
unions as artificial local variables with shared storage. When SROA splits
the storage for artificial local variables that are smaller than the entire
union, the overhang piece will be outside of the allotted space for the
variable and this check fails.
rdar://problem/20730771
llvm-svn: 236124
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
x86 Windows uses the '_' prefix for all global symbols, and this was
mistakenly being applied to frameescape labels, which are not externally
visible global symbols. They use the private global prefix 'L'.
The *right* way to fix this is probably to stop masquerading this label
as an ExternalSymbol and create a new SDNode type. These labels are not
"external", and we know they will be resolved by assembly time. Having a
custom SDNode type would allow us to do better X86 address mode
matching, so it's probably worth doing eventually.
llvm-svn: 236123
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Finish off PR23080 by renaming the debug info IR constructs from `MD*`
to `DI*`. The last of the `DIDescriptor` classes were deleted in
r235356, and the last of the related typedefs removed in r235413, so
this has all baked for about a week.
Note: If you have out-of-tree code (like a frontend), I recommend that
you get everything compiling and tests passing with the *previous*
commit before updating to this one. It'll be easier to keep track of
what code is using the `DIDescriptor` hierarchy and what you've already
updated, and I think you're extremely unlikely to insert bugs. YMMV of
course.
Back to *this* commit: I did this using the rename-md-di-nodes.sh
upgrade script I've attached to PR23080 (both code and testcases) and
filtered through clang-format-diff.py. I edited the tests for
test/Assembler/invalid-generic-debug-node-*.ll by hand since the columns
were off-by-three. It should work on your out-of-tree testcases (and
code, if you've followed the advice in the previous paragraph).
Some of the tests are in badly named files now (e.g.,
test/Assembler/invalid-mdcompositetype-missing-tag.ll should be
'dicompositetype'); I'll come back and move the files in a follow-up
commit.
llvm-svn: 236120
|
|
|
|
|
|
|
|
|
|
| |
targets are lying
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: ab
Differential Revision: http://reviews.llvm.org/D9265
llvm-svn: 236119
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D8764
llvm-svn: 236118
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D8704
llvm-svn: 236111
|
|
|
|
|
|
|
|
|
|
|
| |
Reg+%g0 is preferred to Reg+imm0 by the manual, and is what GCC produces.
Futhermore, reg+imm is invalid for the (not yet supported) "alternate
address space" instructions.
Differential Revision: http://reviews.llvm.org/D8753
llvm-svn: 236107
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Allow Mips fast-isel to handle functions which return i8/i16 signed/unsigned.
Test Plan:
Make check tests are forthcoming.
Already passes test-suite at O0/O2 for Mips 32 r1/r2
Reviewers: dsanders, rkotler
Subscribers: llvm-commits, rfuhler
Differential Revision: http://reviews.llvm.org/D6765
llvm-svn: 236103
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The existing code was correct for 32-bit GPR's but not 64-bit GPR's. It now
accounts for both cases.
Reviewers: vkalintiris
Reviewed By: vkalintiris
Subscribers: llvm-commits, mohit.bhakkad, sagar
Differential Revision: http://reviews.llvm.org/D9337
llvm-svn: 236099
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Do the assemble-time shifts from createLShiftOri at the source, which groups all the shifting together, closer to the main logic path, and
store the results in concisely-named variables to improve code clarity.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8973
llvm-svn: 236096
|
|
|
|
| |
llvm-svn: 236093
|
|
|
|
| |
llvm-svn: 236092
|
|
|
|
| |
llvm-svn: 236089
|
|
|
|
| |
llvm-svn: 236088
|
|
|
|
|
|
| |
cast which asserts internally. NFC
llvm-svn: 236087
|
|
|
|
| |
llvm-svn: 236086
|
|
|
|
| |
llvm-svn: 236083
|
|
|
|
| |
llvm-svn: 236080
|
|
|
|
|
|
|
|
| |
Same as r236073 but for PointerType.
Bug found with AFL fuzz.
llvm-svn: 236079
|