Index: llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp =================================================================== --- llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp +++ llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp @@ -822,6 +822,7 @@ // Build consecutive monotonic integer ranges for each call target set DenseMap GlobalLayout; + for (Function *F : Functions) { // Skip functions that are not address taken, to avoid bloating the table if (!F->hasAddressTaken()) @@ -1049,7 +1050,7 @@ LTT->Int64Ty = Type::getInt64Ty(M.getContext()); LTT->IntPtrTy = DL.getIntPtrType(M.getContext(), 0); LTT->TypeTestCallSites.clear(); - LTT->IndirectIndex = 0; + LTT->IndirectIndex = 1; } bool LowerTypeTests::runOnModule(Module &M) { Index: llvm/trunk/test/CodeGen/WebAssembly/cfi.ll =================================================================== --- llvm/trunk/test/CodeGen/WebAssembly/cfi.ll +++ llvm/trunk/test/CodeGen/WebAssembly/cfi.ll @@ -14,13 +14,13 @@ } ; CHECK-LABEL: f: -; CHECK: .indidx 0 +; CHECK: .indidx 1 define void @f() !type !0 { ret void } ; CHECK-LABEL: g: -; CHECK: .indidx 1 +; CHECK: .indidx 2 define void @g() !type !1 { ret void } Index: llvm/trunk/test/Transforms/LowerTypeTests/function-disjoint.ll =================================================================== --- llvm/trunk/test/Transforms/LowerTypeTests/function-disjoint.ll +++ llvm/trunk/test/Transforms/LowerTypeTests/function-disjoint.ll @@ -32,14 +32,14 @@ define i1 @foo(i8* %p) { ; X64: icmp eq i64 {{.*}}, ptrtoint ([1 x <{ i8, i32, i8, i8, i8 }>]* @[[JT0]] to i64) - ; WASM32: icmp eq i64 {{.*}}, 0 + ; WASM32: icmp eq i64 {{.*}}, 1 %x = call i1 @llvm.type.test(i8* %p, metadata !"typeid1") ; X64: icmp eq i64 {{.*}}, ptrtoint ([1 x <{ i8, i32, i8, i8, i8 }>]* @[[JT1]] to i64) - ; WASM32: icmp eq i64 {{.*}}, 1 + ; WASM32: icmp eq i64 {{.*}}, 2 %y = call i1 @llvm.type.test(i8* %p, metadata !"typeid2") %z = add i1 %x, %y ret i1 %z } -; WASM32: ![[I0]] = !{i64 0} -; WASM32: ![[I1]] = !{i64 1} +; WASM32: ![[I0]] = !{i64 1} +; WASM32: ![[I1]] = !{i64 2} Index: llvm/trunk/test/Transforms/LowerTypeTests/function-ext.ll =================================================================== --- llvm/trunk/test/Transforms/LowerTypeTests/function-ext.ll +++ llvm/trunk/test/Transforms/LowerTypeTests/function-ext.ll @@ -22,3 +22,4 @@ !0 = !{i64 0, !"void"} ; WASM-NOT: !{i64 0} +; WASM-NOT: !{i64 1} Index: llvm/trunk/test/Transforms/LowerTypeTests/function.ll =================================================================== --- llvm/trunk/test/Transforms/LowerTypeTests/function.ll +++ llvm/trunk/test/Transforms/LowerTypeTests/function.ll @@ -30,11 +30,11 @@ define i1 @foo(i8* %p) { ; X64: sub i64 {{.*}}, ptrtoint ([2 x <{ i8, i32, i8, i8, i8 }>]* @[[JT]] to i64) - ; WASM32: sub i64 {{.*}}, 0 + ; WASM32: sub i64 {{.*}}, 1 ; WASM32: icmp ult i64 {{.*}}, 2 %x = call i1 @llvm.type.test(i8* %p, metadata !"typeid1") ret i1 %x } -; WASM32: ![[I0]] = !{i64 0} -; WASM32: ![[I1]] = !{i64 1} +; WASM32: ![[I0]] = !{i64 1} +; WASM32: ![[I1]] = !{i64 2}