forked from OSchip/llvm-project
[WebAssembly] support Memory64 in target_features section
Differential Revision: https://reviews.llvm.org/D112266
This commit is contained in:
parent
97ddf49e43
commit
5694dbccc3
|
@ -503,6 +503,15 @@ void WebAssemblyAsmPrinter::EmitTargetFeatures(Module &M) {
|
|||
// This pseudo-feature tells the linker whether shared memory would be safe
|
||||
EmitFeature("shared-mem");
|
||||
|
||||
// This is an "architecture", not a "feature", but we emit it as such for
|
||||
// the benefit of tools like Binaryen and consistency with other producers.
|
||||
// FIXME: Subtarget is null here, so can't Subtarget->hasAddr64() ?
|
||||
if (M.getDataLayout().getMaxPointerSize() == 8) {
|
||||
// Can't use EmitFeature since "wasm-feature-memory64" is not a module
|
||||
// flag.
|
||||
EmittedFeatures.push_back({wasm::WASM_FEATURE_PREFIX_USED, "memory64"});
|
||||
}
|
||||
|
||||
if (EmittedFeatures.size() == 0)
|
||||
return;
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
; RUN: llc < %s | FileCheck %s
|
||||
|
||||
; Test that wasm64 is properly emitted into the target features section
|
||||
|
||||
target triple = "wasm64-unknown-unknown"
|
||||
|
||||
define void @foo() {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK-LABEL: .custom_section.target_features
|
||||
; CHECK-NEXT: .int8 1
|
||||
; CHECK-NEXT: .int8 43
|
||||
; CHECK-NEXT: .int8 8
|
||||
; CHECK-NEXT: .ascii "memory64"
|
|
@ -129,6 +129,12 @@
|
|||
; CHECK-NEXT: Offset: 1073
|
||||
; CHECK-NEXT: Name: producers
|
||||
; CHECK-NEXT: }
|
||||
; CHECK-NEXT: Section {
|
||||
; CHECK-NEXT: Type: CUSTOM (0x0)
|
||||
; CHECK-NEXT: Size: 11
|
||||
; CHECK-NEXT: Offset: 1166
|
||||
; CHECK-NEXT: Name: target_features
|
||||
; CHECK-NEXT: }
|
||||
; CHECK-NEXT: ]
|
||||
; CHECK-NEXT: Relocations [
|
||||
; CHECK-NEXT: Section (7) DATA {
|
||||
|
|
Loading…
Reference in New Issue