llvm-project/llvm/lib/Target/WebAssembly
JF Bastien 3428ed4f53 WebAssembly: don't omit dead vregs from locals
Summary:
This is a temporary hack until we get around to remapping the vreg
numbers to local numbers. Dead vregs cause bad numbering and make
consumers sad.

We could also just look at debug info an use named locals instead, but
vregs have to work properly anyways so there!

Reviewers: binji, sunfish

Subscribers: jfb, llvm-commits, dschuff

Differential Revision: http://reviews.llvm.org/D13839

llvm-svn: 250594
2015-10-17 00:25:38 +00:00
..
InstPrinter WebAssembly: Implement call 2015-08-24 22:16:48 +00:00
MCTargetDesc [WebAssembly] Switch to a more traditional assembly syntax 2015-10-06 00:27:55 +00:00
TargetInfo
CMakeLists.txt [WebAssembly] Check in an initial CFG Stackifier pass 2015-09-16 16:51:30 +00:00
LLVMBuild.txt
Makefile [WebAssembly] Skeleton FastISel support 2015-08-24 18:44:37 +00:00
README.txt WebAssembly: add some TODO 2015-07-06 21:41:59 +00:00
Relooper.cpp WebAssembly: relooper analysis pass 2015-10-16 16:35:49 +00:00
Relooper.h WebAssembly: relooper analysis pass 2015-10-16 16:35:49 +00:00
WebAssembly.h WebAssembly: relooper analysis pass 2015-10-16 16:35:49 +00:00
WebAssembly.td WebAssembly: add a generic CPU 2015-07-27 23:25:54 +00:00
WebAssemblyAsmPrinter.cpp WebAssembly: don't omit dead vregs from locals 2015-10-17 00:25:38 +00:00
WebAssemblyCFGStackify.cpp [WebAssembly] Fix CFG stackification of nested loops. 2015-10-02 21:11:36 +00:00
WebAssemblyFastISel.cpp [WebAssembly] Skeleton FastISel support 2015-08-24 18:44:37 +00:00
WebAssemblyFrameLowering.cpp [WebAssembly] Use the checked form of MachineFunction::getSubtarget. NFC. 2015-08-24 16:46:31 +00:00
WebAssemblyFrameLowering.h WebAssembly: basic bitcode → assembly CodeGen test 2015-07-22 21:28:15 +00:00
WebAssemblyISD.def [WebAssembly] Check in an initial CFG Stackifier pass 2015-09-16 16:51:30 +00:00
WebAssemblyISelDAGToDAG.cpp WebAssembly: basic bitcode → assembly CodeGen test 2015-07-22 21:28:15 +00:00
WebAssemblyISelLowering.cpp [WebAssembly] Switch to a more traditional assembly syntax 2015-10-06 00:27:55 +00:00
WebAssemblyISelLowering.h [WebAssembly] Check in an initial CFG Stackifier pass 2015-09-16 16:51:30 +00:00
WebAssemblyInstrAtomics.td WebAssembly: basic instructions todo, and basic register info. 2015-07-10 18:23:10 +00:00
WebAssemblyInstrCall.td [WebAssembly] Support for direct call and call_indirect. 2015-09-28 16:22:39 +00:00
WebAssemblyInstrControl.td [WebAssembly] Rename several functions and types according to the new spec. 2015-09-26 01:09:44 +00:00
WebAssemblyInstrConv.td [WebAssembly] Implement the remaining conversion operations. 2015-10-03 02:10:28 +00:00
WebAssemblyInstrFloat.td [WebAssembly] Rename floating-point operators to match their spec names. 2015-10-09 17:50:00 +00:00
WebAssemblyInstrFormats.td [WebAssembly] Rename several functions and types according to the new spec. 2015-09-26 01:09:44 +00:00
WebAssemblyInstrInfo.cpp [WebAssembly] Check in an initial CFG Stackifier pass 2015-09-16 16:51:30 +00:00
WebAssemblyInstrInfo.h [WebAssembly] Check in an initial CFG Stackifier pass 2015-09-16 16:51:30 +00:00
WebAssemblyInstrInfo.td [WebAssembly] Rename several functions and types according to the new spec. 2015-09-26 01:09:44 +00:00
WebAssemblyInstrInteger.td WebAssembly: fix the syntax for comparisons 2015-10-17 00:12:29 +00:00
WebAssemblyInstrMemory.td WebAssembly: fix load/store syntax 2015-10-16 18:24:42 +00:00
WebAssemblyInstrSIMD.td WebAssembly: basic instructions todo, and basic register info. 2015-07-10 18:23:10 +00:00
WebAssemblyMachineFunctionInfo.cpp
WebAssemblyMachineFunctionInfo.h [WebAssembly] Switch to a more traditional assembly syntax 2015-10-06 00:27:55 +00:00
WebAssemblyRegisterInfo.cpp Targets: commonize some stack realignment code 2015-07-20 22:51:32 +00:00
WebAssemblyRegisterInfo.h Targets: commonize some stack realignment code 2015-07-20 22:51:32 +00:00
WebAssemblyRegisterInfo.td [WebAssembly] Rename several functions and types according to the new spec. 2015-09-26 01:09:44 +00:00
WebAssemblySelectionDAGInfo.cpp Unbreak WebAssembly build 2015-07-09 21:00:09 +00:00
WebAssemblySelectionDAGInfo.h Unbreak WebAssembly build 2015-07-09 21:00:09 +00:00
WebAssemblySubtarget.cpp Unbreak WebAssembly build 2015-07-09 21:00:09 +00:00
WebAssemblySubtarget.h WebAssembly: basic bitcode → assembly CodeGen test 2015-07-22 21:28:15 +00:00
WebAssemblyTargetMachine.cpp Try to fix WebAssembly build after r247864 2015-09-16 23:59:57 +00:00
WebAssemblyTargetMachine.h
WebAssemblyTargetObjectFile.h Remove DataLayout from TargetLoweringObjectFile, redirect to Module 2015-07-16 06:04:17 +00:00
WebAssemblyTargetTransformInfo.cpp [WebAssembly] Tell TargetTransformInfo about popcnt and sqrt. 2015-08-24 16:51:46 +00:00
WebAssemblyTargetTransformInfo.h Try to fix WebAssembly build after r247864 2015-09-16 23:59:57 +00:00

README.txt

//===-- README.txt - Notes for WebAssembly code gen -----------------------===//

This WebAssembly backend is presently in a very early stage of development.
The code should build and not break anything else, but don't expect a lot more
at this point.

For more information on WebAssembly itself, see the design documents:
  * https://github.com/WebAssembly/design/blob/master/README.md

The following documents contain some information on the planned semantics and
binary encoding of WebAssembly itself:
  * https://github.com/WebAssembly/design/blob/master/AstSemantics.md
  * https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md

Interesting work that remains to be done:
* Write a pass to restructurize irreducible control flow. This needs to be done
  before register allocation to be efficient, because it may duplicate basic
  blocks and WebAssembly performs register allocation at a whole-function
  level. Note that LLVM's GPU code has such a pass, but it linearizes control
  flow (e.g. both sides of branches execute and are masked) which is undesirable
  for WebAssembly.
* Basic relooper to expose control flow as an AST.
* Figure out how to properly use MC for virtual ISAs. This may require some
  refactoring of MC.

//===---------------------------------------------------------------------===//