diff --git a/lld/test/wasm/import-table.test b/lld/test/wasm/import-table.test --- a/lld/test/wasm/import-table.test +++ b/lld/test/wasm/import-table.test @@ -1,7 +1,15 @@ # RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %p/Inputs/start.s -o %t.start.o -# RUN: wasm-ld --import-table -o %t.wasm %t.start.o +# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %s -o %t.o +# RUN: wasm-ld --export-all --import-table -o %t.wasm %t.start.o %t.o # RUN: obj2yaml %t.wasm | FileCheck %s +.globl require_function_table +require_function_table: +.functype require_function_table () -> () + i32.const 1 + call_indirect () -> () + end_function + # Verify the --import-table flag creates a table import # CHECK: - Type: IMPORT diff --git a/lld/wasm/Driver.cpp b/lld/wasm/Driver.cpp --- a/lld/wasm/Driver.cpp +++ b/lld/wasm/Driver.cpp @@ -830,10 +830,7 @@ } if (config->importTable) { - if (existing) - return cast(existing); - else - return createUndefinedIndirectFunctionTable(functionTableName); + return cast_or_null(existing); } else if ((existing && existing->isLive()) || config->exportTable) { // A defined table is required. Either because the user request an exported // table or because the table symbol is already live. The existing table is