compiler: fix use of global context: llvm.Int32Type()
This patch fixes a use of the global context. I've seen a few instances of crashes in the llvm.ConstInt function when called from makeStructTypeFields, which I believe are caused by this bug.
Этот коммит содержится в:
родитель
f800f7507c
коммит
6d3c11627c
1 изменённых файлов: 4 добавлений и 4 удалений
|
@ -103,8 +103,8 @@ func (c *compilerContext) makeStructTypeFields(typ *types.Struct) llvm.Value {
|
||||||
fieldName.SetLinkage(llvm.PrivateLinkage)
|
fieldName.SetLinkage(llvm.PrivateLinkage)
|
||||||
fieldName.SetUnnamedAddr(true)
|
fieldName.SetUnnamedAddr(true)
|
||||||
fieldName = llvm.ConstGEP(fieldName, []llvm.Value{
|
fieldName = llvm.ConstGEP(fieldName, []llvm.Value{
|
||||||
llvm.ConstInt(llvm.Int32Type(), 0, false),
|
llvm.ConstInt(c.ctx.Int32Type(), 0, false),
|
||||||
llvm.ConstInt(llvm.Int32Type(), 0, false),
|
llvm.ConstInt(c.ctx.Int32Type(), 0, false),
|
||||||
})
|
})
|
||||||
fieldGlobalValue = llvm.ConstInsertValue(fieldGlobalValue, fieldName, []uint32{1})
|
fieldGlobalValue = llvm.ConstInsertValue(fieldGlobalValue, fieldName, []uint32{1})
|
||||||
if typ.Tag(i) != "" {
|
if typ.Tag(i) != "" {
|
||||||
|
@ -112,8 +112,8 @@ func (c *compilerContext) makeStructTypeFields(typ *types.Struct) llvm.Value {
|
||||||
fieldTag.SetLinkage(llvm.PrivateLinkage)
|
fieldTag.SetLinkage(llvm.PrivateLinkage)
|
||||||
fieldTag.SetUnnamedAddr(true)
|
fieldTag.SetUnnamedAddr(true)
|
||||||
fieldTag = llvm.ConstGEP(fieldTag, []llvm.Value{
|
fieldTag = llvm.ConstGEP(fieldTag, []llvm.Value{
|
||||||
llvm.ConstInt(llvm.Int32Type(), 0, false),
|
llvm.ConstInt(c.ctx.Int32Type(), 0, false),
|
||||||
llvm.ConstInt(llvm.Int32Type(), 0, false),
|
llvm.ConstInt(c.ctx.Int32Type(), 0, false),
|
||||||
})
|
})
|
||||||
fieldGlobalValue = llvm.ConstInsertValue(fieldGlobalValue, fieldTag, []uint32{2})
|
fieldGlobalValue = llvm.ConstInsertValue(fieldGlobalValue, fieldTag, []uint32{2})
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче