//===-- WebAssemblyMCAsmInfo.cpp - WebAssembly asm properties -------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// /// /// \file /// \brief This file contains the declarations of the WebAssemblyMCAsmInfo /// properties. /// //===----------------------------------------------------------------------===// #include "WebAssemblyMCAsmInfo.h" #include "llvm/ADT/Triple.h" using namespace llvm; #define DEBUG_TYPE "wasm-mc-asm-info" WebAssemblyMCAsmInfo::~WebAssemblyMCAsmInfo() {} WebAssemblyMCAsmInfo::WebAssemblyMCAsmInfo(const Triple &T) { PointerSize = CalleeSaveStackSlotSize = T.isArch64Bit() ? 8 : 4; // TODO: What should MaxInstLength be? UseDataRegionDirectives = true; // Use .skip instead of .zero because .zero is confusing when used with two // arguments (it doesn't actually zero things out). ZeroDirective = "\t.skip\t"; Data8bitsDirective = "\t.int8\t"; Data16bitsDirective = "\t.int16\t"; Data32bitsDirective = "\t.int32\t"; Data64bitsDirective = "\t.int64\t"; AlignmentIsInBytes = false; COMMDirectiveAlignmentIsInBytes = false; LCOMMDirectiveAlignmentType = LCOMM::Log2Alignment; SupportsDebugInformation = true; // For now, WebAssembly does not support exceptions. ExceptionsType = ExceptionHandling::None; // TODO: UseIntegratedAssembler? // WebAssembly's stack is never executable. UsesNonexecutableStackSection = false; }