#
d6f48786 |
| 30-Jan-2019 |
Heejin Ahn <aheejin@gmail.com> |
[WebAssembly] Exception handling: Switch to the new proposal
Summary: This switches the EH implementation to the new proposal: https://github.com/WebAssembly/exception-handling/blob/master/proposals
[WebAssembly] Exception handling: Switch to the new proposal
Summary: This switches the EH implementation to the new proposal: https://github.com/WebAssembly/exception-handling/blob/master/proposals/Exceptions.md (The previous proposal was https://github.com/WebAssembly/exception-handling/blob/master/proposals/old/Exceptions.md)
- Instruction changes - Now we have one single `catch` instruction that returns a except_ref value - `throw` now can take variable number of operations - `rethrow` does not have 'depth' argument anymore - `br_on_exn` queries an except_ref to see if it matches the tag and branches to the given label if true. - `extract_exception` is a pseudo instruction that simulates popping values from wasm stack. This is to make `br_on_exn`, a very special instruction, work: `br_on_exn` puts values onto the stack only if it is taken, and the # of values can vay depending on the tag.
- Now there's only one `catch` per `try`, this patch removes all special handling for terminate pad with a call to `__clang_call_terminate`. Before it was the only case there are two catch clauses (a normal `catch` and `catch_all` per `try`).
- Make `rethrow` act as a terminator like `throw`. This splits BB after `rethrow` in WasmEHPrepare, and deletes an unnecessary `unreachable` after `rethrow` in LateEHPrepare.
- Now we stop at all catchpads (because we add wasm `catch` instruction that catches all exceptions), this creates new `findWasmUnwindDestinations` function in SelectionDAGBuilder.
- Now we use `br_on_exn` instrution to figure out if an except_ref matches the current tag or not, LateEHPrepare generates this sequence for catch pads: ``` catch block i32 br_on_exn $__cpp_exception end_block extract_exception ```
- Branch analysis for `br_on_exn` in WebAssemblyInstrInfo
- Other various misc. changes to switch to the new proposal.
Reviewers: dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D57134
llvm-svn: 352598
show more ...
|
#
1527c0e7 |
| 29-Jan-2019 |
Nirav Dave <niravd@google.com> |
[SelectionDAGBuilder] Remove redundant variable. NFCI.
llvm-svn: 352506
|
#
a1f6973a |
| 29-Jan-2019 |
Ayonam Ray <ayonam@rrlogic.co.in> |
Reversing the checkin for version 352484 as tests are failing.
llvm-svn: 352504
|
#
4272af9b |
| 29-Jan-2019 |
Ayonam Ray <ayonam@rrlogic.co.in> |
[CodeGen] Omit range checks from jump tables when lowering switches with unreachable default
During the lowering of a switch that would result in the generation of a jump table, a range check is pe
[CodeGen] Omit range checks from jump tables when lowering switches with unreachable default
During the lowering of a switch that would result in the generation of a jump table, a range check is performed before indexing into the jump table, for the switch value being outside the jump table range and a conditional branch is inserted to jump to the default block. In case the default block is unreachable, this conditional jump can be omitted. This patch implements omitting this conditional branch for unreachable defaults.
Review ID: D52002 Reviewers: Hans Wennborg, Eli Freidman, Roman Lebedev
llvm-svn: 352484
show more ...
|
#
66ac86b5 |
| 29-Jan-2019 |
Jeremy Morse <jeremy.morse.llvm@gmail.com> |
[DebugInfo][DAG] Process FrameIndex dbg.values unconditionally
A FrameIndex should be valid throughout a block regardless of what instructions get selected in that block -- therefore we shouldn't ha
[DebugInfo][DAG] Process FrameIndex dbg.values unconditionally
A FrameIndex should be valid throughout a block regardless of what instructions get selected in that block -- therefore we shouldn't harness dbg.values that refer to FrameIndexes to an SDNode. There are numerous codegen reasons why an SDNode never appears or doesn't become a location that a DBG_VALUE can refer to. None of them actually affect the variable location.
Therefore, before any other tests to encode dbg_values in a SelectionDAG, identify FrameIndex operands and encode them unattached to any SDNode.
Differential Revision: https://reviews.llvm.org/D57328
llvm-svn: 352467
show more ...
|
#
2c36240a |
| 24-Jan-2019 |
James Y Knight <jyknight@google.com> |
Fix emission of _fltused for MSVC.
It should be emitted when any floating-point operations (including calls) are present in the object, not just when calls to printf/scanf with floating point args a
Fix emission of _fltused for MSVC.
It should be emitted when any floating-point operations (including calls) are present in the object, not just when calls to printf/scanf with floating point args are made.
The difference caused by this is very subtle: in static (/MT) builds, on x86-32, in a program that uses floating point but doesn't print it, the default x87 rounding mode may not be set properly upon initialization.
This commit also removes the walk of the types pointed to by pointer arguments in calls. (To assist in opaque pointer types migration -- eventually the pointee type won't be available.)
That latter implies that it will no longer consider a call like `scanf("%f", &floatvar)` as sufficient to emit _fltused on its own. And without _fltused, `scanf("%f")` will abort with error R6002. This new behavior is unlikely to bite anyone in practice (you'd have to read a float, and do nothing with it!), and also, is consistent with MSVC.
Differential Revision: https://reviews.llvm.org/D56548
llvm-svn: 352076
show more ...
|
#
58e9833e |
| 24-Jan-2019 |
Nirav Dave <niravd@google.com> |
[SelectionDAGBuilder] Simplify HasSideEffect calculation. NFC.
llvm-svn: 352067
|
#
b41a1984 |
| 24-Jan-2019 |
Nirav Dave <niravd@google.com> |
[InlineAsm] Don't calculate registers for inline asm memory operands. NFCI.
llvm-svn: 352066
|
#
bd069f42 |
| 24-Jan-2019 |
Nirav Dave <niravd@google.com> |
[SelectionDAGBuilder] Fuse inline asm input operand loops passes. NFCI.
llvm-svn: 352053
|
#
d0418341 |
| 22-Jan-2019 |
Nirav Dave <niravd@google.com> |
[SelectionDAGBuilder] Defer C_Register Assignments to be in line with those of C_RegisterClass. NFCI.
llvm-svn: 351854
|
#
a5840c3c |
| 22-Jan-2019 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
Codegen support for atomicrmw fadd/fsub
llvm-svn: 351851
|
#
2946cd70 |
| 19-Jan-2019 |
Chandler Carruth <chandlerc@gmail.com> |
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the ne
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach.
Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository.
llvm-svn: 351636
show more ...
|
#
0a45bf0e |
| 18-Jan-2019 |
Nirav Dave <niravd@google.com> |
[SelectionDAGBuilder] Cleanup InlineAsm Output generation. NFCI.
Defer inline asm's output fixup work until after we've generated the inline asm node itself. Remove StoresToEmit, IndirectStoresToEmi
[SelectionDAGBuilder] Cleanup InlineAsm Output generation. NFCI.
Defer inline asm's output fixup work until after we've generated the inline asm node itself. Remove StoresToEmit, IndirectStoresToEmit, and RetValRegs in favor of using ConstraintOperands.
llvm-svn: 351558
show more ...
|
#
d2c733b4 |
| 18-Jan-2019 |
Florian Hahn <flo@fhahn.com> |
[SelectionDAG] Add getTokenFactor, which splits nodes with > 64k operands.
This functionality is required at multiple places which potentially create large operand lists, like SelectionDAGBuilder or
[SelectionDAG] Add getTokenFactor, which splits nodes with > 64k operands.
This functionality is required at multiple places which potentially create large operand lists, like SelectionDAGBuilder or DAGCombiner.
Differential Revision: https://reviews.llvm.org/D56739
llvm-svn: 351552
show more ...
|
#
1b817723 |
| 18-Jan-2019 |
Florian Hahn <flo@fhahn.com> |
[SelectionDAG] Add static getMaxNumOperands function to SDNode.
Summary: Use this helper to make sure we use the same value at various places. This will likely be needed at more places were we curre
[SelectionDAG] Add static getMaxNumOperands function to SDNode.
Summary: Use this helper to make sure we use the same value at various places. This will likely be needed at more places were we currently crash because we use more operands than possible.
Also makes it easier to change in the future.
Reviewers: RKSimon, craig.topper, efriedma, aemerson
Reviewed By: RKSimon
Subscribers: hiraditya, arsenm, llvm-commits
Differential Revision: https://reviews.llvm.org/D56859
llvm-svn: 351537
show more ...
|
#
33c49c0c |
| 16-Jan-2019 |
Mandeep Singh Grang <mgrang@codeaurora.org> |
[COFF, ARM64] Implement support for SEH extensions __try/__except/__finally
Summary: This patch supports MS SEH extensions __try/__except/__finally. The intrinsics localescape and localrecover are r
[COFF, ARM64] Implement support for SEH extensions __try/__except/__finally
Summary: This patch supports MS SEH extensions __try/__except/__finally. The intrinsics localescape and localrecover are responsible for communicating escaped static allocas from the try block to the handler.
We need to preserve frame pointers for SEH. So we create a new function/property HasLocalEscape.
Reviewers: rnk, compnerd, mstorsjo, TomTan, efriedma, ssijaric
Reviewed By: rnk, efriedma
Subscribers: smeenai, jrmuizel, alex, majnemer, ssijaric, ehsan, dmajor, kristina, javed.absar, kristof.beyls, chrib, llvm-commits
Differential Revision: https://reviews.llvm.org/D53540
llvm-svn: 351370
show more ...
|
#
7dcea5ae |
| 16-Jan-2019 |
Jeremy Morse <jeremy.morse.llvm@gmail.com> |
[DebugInfo] Allow creation of DBG_VALUEs in blocks where the operand is not used
dbg.value intrinsics can appear in blocks where their operand is not used, meaning the operand never receives an SDNo
[DebugInfo] Allow creation of DBG_VALUEs in blocks where the operand is not used
dbg.value intrinsics can appear in blocks where their operand is not used, meaning the operand never receives an SDNode, and thus no DBG_VALUE will be created. Get around this by looking to see whether the operand has already been allocated a virtual register. This allows dbg.values of Phi node and Values that are used across basic blocks to successfully be translated into DBG_VALUEs.
Differential Revision: https://reviews.llvm.org/D56678
llvm-svn: 351358
show more ...
|
#
fcb4a492 |
| 15-Jan-2019 |
Nirav Dave <niravd@google.com> |
[SelectionDAG] Check membership of register in class for single register constraints. NFCI.
Now that X86's ST(7) constraints are fixed this check can be reinstated.
llvm-svn: 351207
|
#
3badfe74 |
| 14-Jan-2019 |
Nirav Dave <niravd@google.com> |
Reland "Refactor GetRegistersForValue. NFCI."
Remove over-strictification class membership check.
llvm-svn: 351074
|
#
114ad37c |
| 11-Jan-2019 |
Martin Storsjo <martin@martin.st> |
Revert "[SelectionDAGBuilder] Refactor GetRegistersForValue. NFCI."
This reverts commit r350841, as it actually had functional changes and broke compilation. See PR40290.
llvm-svn: 350921
|
#
cd18977a |
| 10-Jan-2019 |
Nirav Dave <niravd@google.com> |
[SelectionDAGBuilder] Refactor GetRegistersForValue. NFCI.
llvm-svn: 350841
|
#
4817c0e4 |
| 10-Jan-2019 |
Nirav Dave <niravd@google.com> |
[SelectionDAGBuilder] Fix formatting. NFC.
llvm-svn: 350839
|
#
57f2c148 |
| 10-Jan-2019 |
Nirav Dave <niravd@google.com> |
[SelectionDAGBuilder] Refactor visitInlineAsm. NFC.
llvm-svn: 350837
|
#
62df5eed |
| 10-Jan-2019 |
James Y Knight <jyknight@google.com> |
[opaque pointer types] Remove some calls to generic Type subtype accessors.
That is, remove many of the calls to Type::getNumContainedTypes(), Type::subtypes(), and Type::getContainedType(N).
I'm n
[opaque pointer types] Remove some calls to generic Type subtype accessors.
That is, remove many of the calls to Type::getNumContainedTypes(), Type::subtypes(), and Type::getContainedType(N).
I'm not intending to remove these accessors -- they are useful/necessary in some cases. However, removing the pointee type from pointers would potentially break some uses, and reducing the number of calls makes it easier to audit.
llvm-svn: 350835
show more ...
|
#
e00606a1 |
| 01-Jan-2019 |
Ayonam Ray <ayonam@rrlogic.co.in> |
Reversing the commit in revision 350186. Revision causes regression in 4 tests.
llvm-svn: 350187
|