forked from OSchip/llvm-project
[WebAssembly] Ignore explicit section names for functions
WebAssembly doesn't support more than one function per section and we rely on function sections being unique. This change ignores the section provided by the function to avoid two functions being in the same section. Without this change the object writer produces the following error for this test: LLVM ERROR: section already has a defining function: baz Differential Revision: https://reviews.llvm.org/D48178 llvm-svn: 334752
This commit is contained in:
parent
b521dc3acf
commit
277f898a4d
|
@ -1408,6 +1408,12 @@ static SectionKind getWasmKindForNamedSection(StringRef Name, SectionKind K) {
|
|||
|
||||
MCSection *TargetLoweringObjectFileWasm::getExplicitSectionGlobal(
|
||||
const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const {
|
||||
// We don't support explict section names for functions in the wasm object
|
||||
// format. Each function has to be in its own unique section.
|
||||
if (isa<Function>(GO)) {
|
||||
return SelectSectionForGlobal(GO, Kind, TM);
|
||||
}
|
||||
|
||||
StringRef Name = GO->getSection();
|
||||
|
||||
Kind = getWasmKindForNamedSection(Name, Kind);
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
; RUN: llc -filetype=obj %s -o - | obj2yaml | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown"
|
||||
|
||||
define hidden i32 @foo() section "baz" {
|
||||
entry:
|
||||
ret i32 2
|
||||
}
|
||||
|
||||
define hidden i32 @bar() section "baz" {
|
||||
entry:
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; CHECK: - Type: CUSTOM
|
||||
; CHECK-NEXT: Name: linking
|
||||
; CHECK-NEXT: Version: 1
|
||||
; CHECK-NEXT: SymbolTable:
|
||||
; CHECK-NEXT: - Index: 0
|
||||
; CHECK-NEXT: Kind: FUNCTION
|
||||
; CHECK-NEXT: Name: foo
|
||||
; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
|
||||
; CHECK-NEXT: Function: 0
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: Kind: FUNCTION
|
||||
; CHECK-NEXT: Name: bar
|
||||
; CHECK-NEXT: Flags: [ VISIBILITY_HIDDEN ]
|
||||
; CHECK-NEXT: Function: 1
|
Loading…
Reference in New Issue