transform: do not track const globals
Этот коммит содержится в:
родитель
c0b8716d7f
коммит
67229af879
3 изменённых файлов: 13 добавлений и 5 удалений
|
@ -271,7 +271,7 @@ func AddGlobalsBitmap(mod llvm.Module) bool {
|
||||||
var trackedGlobals []llvm.Value
|
var trackedGlobals []llvm.Value
|
||||||
var trackedGlobalTypes []llvm.Type
|
var trackedGlobalTypes []llvm.Type
|
||||||
for global := mod.FirstGlobal(); !global.IsNil(); global = llvm.NextGlobal(global) {
|
for global := mod.FirstGlobal(); !global.IsNil(); global = llvm.NextGlobal(global) {
|
||||||
if global.IsDeclaration() {
|
if global.IsDeclaration() || global.IsGlobalConstant() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
typ := global.Type().ElementType()
|
typ := global.Type().ElementType()
|
||||||
|
|
10
transform/testdata/gc-globals.ll
предоставленный
10
transform/testdata/gc-globals.ll
предоставленный
|
@ -4,9 +4,11 @@ target triple = "wasm32-unknown-unknown-wasm"
|
||||||
%runtime._string = type { i8*, i32 }
|
%runtime._string = type { i8*, i32 }
|
||||||
%runtime._interface = type { i32, i8* }
|
%runtime._interface = type { i32, i8* }
|
||||||
|
|
||||||
@globalInt = constant i32 5
|
@globalInt = global i32 5
|
||||||
@globalString = constant %runtime._string zeroinitializer
|
@globalString = global %runtime._string zeroinitializer
|
||||||
@globalInterface = constant %runtime._interface zeroinitializer
|
@globalInterface = global %runtime._interface zeroinitializer
|
||||||
|
@constString = constant %runtime._string zeroinitializer
|
||||||
|
@constInterface = constant %runtime._interface zeroinitializer
|
||||||
@runtime.trackedGlobalsLength = external global i32
|
@runtime.trackedGlobalsLength = external global i32
|
||||||
@runtime.trackedGlobalsBitmap = external global [0 x i8]
|
@runtime.trackedGlobalsBitmap = external global [0 x i8]
|
||||||
@runtime.trackedGlobalsStart = external global i32
|
@runtime.trackedGlobalsStart = external global i32
|
||||||
|
@ -15,6 +17,8 @@ define void @main() {
|
||||||
%1 = load i32, i32* @globalInt
|
%1 = load i32, i32* @globalInt
|
||||||
%2 = load %runtime._string, %runtime._string* @globalString
|
%2 = load %runtime._string, %runtime._string* @globalString
|
||||||
%3 = load %runtime._interface, %runtime._interface* @globalInterface
|
%3 = load %runtime._interface, %runtime._interface* @globalInterface
|
||||||
|
%4 = load %runtime._string, %runtime._string* @constString
|
||||||
|
%5 = load %runtime._interface, %runtime._interface* @constInterface
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
6
transform/testdata/gc-globals.out.ll
предоставленный
6
transform/testdata/gc-globals.out.ll
предоставленный
|
@ -4,7 +4,9 @@ target triple = "wasm32-unknown-unknown-wasm"
|
||||||
%runtime._string = type { i8*, i32 }
|
%runtime._string = type { i8*, i32 }
|
||||||
%runtime._interface = type { i32, i8* }
|
%runtime._interface = type { i32, i8* }
|
||||||
|
|
||||||
@globalInt = constant i32 5
|
@globalInt = global i32 5
|
||||||
|
@constString = constant %runtime._string zeroinitializer
|
||||||
|
@constInterface = constant %runtime._interface zeroinitializer
|
||||||
@runtime.trackedGlobalsLength = global i32 4
|
@runtime.trackedGlobalsLength = global i32 4
|
||||||
@runtime.trackedGlobalsBitmap = external global [0 x i8]
|
@runtime.trackedGlobalsBitmap = external global [0 x i8]
|
||||||
@runtime.trackedGlobalsStart = global i32 ptrtoint ({ %runtime._string, %runtime._interface }* @tinygo.trackedGlobals to i32)
|
@runtime.trackedGlobalsStart = global i32 ptrtoint ({ %runtime._string, %runtime._interface }* @tinygo.trackedGlobals to i32)
|
||||||
|
@ -15,6 +17,8 @@ define void @main() {
|
||||||
%1 = load i32, i32* @globalInt
|
%1 = load i32, i32* @globalInt
|
||||||
%2 = load %runtime._string, %runtime._string* getelementptr inbounds ({ %runtime._string, %runtime._interface }, { %runtime._string, %runtime._interface }* @tinygo.trackedGlobals, i32 0, i32 0)
|
%2 = load %runtime._string, %runtime._string* getelementptr inbounds ({ %runtime._string, %runtime._interface }, { %runtime._string, %runtime._interface }* @tinygo.trackedGlobals, i32 0, i32 0)
|
||||||
%3 = load %runtime._interface, %runtime._interface* getelementptr inbounds ({ %runtime._string, %runtime._interface }, { %runtime._string, %runtime._interface }* @tinygo.trackedGlobals, i32 0, i32 1)
|
%3 = load %runtime._interface, %runtime._interface* getelementptr inbounds ({ %runtime._string, %runtime._interface }, { %runtime._string, %runtime._interface }* @tinygo.trackedGlobals, i32 0, i32 1)
|
||||||
|
%4 = load %runtime._string, %runtime._string* @constString
|
||||||
|
%5 = load %runtime._interface, %runtime._interface* @constInterface
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче