Я нахожусь в процессе написания игрушечного компилятора и использую llvm 10 в качестве бэкэнда для него. Одной из функций, которые я хочу иметь, является тип связанного списка, как и функциональное программирование. IR, который я поставляю ниже, генерируется моим компилятором,
Я не могу дать вам код, потому что он состоит из нескольких тысяч строк и написан в ржавчине. Я скомпилировал llvm с утверждением, поэтому не думаю, что проблема в этом. Я почти уверен, что сгенерирую какое-то странное возвращаемое значение, поскольку программа вызывает ошибки только тогда, когда я возвращаю list_type.
Этот код выделяет alloc, и он не освобождает никакие данные. Это потому, что позже я поменяю его на сборщик мусора, это тоже не проблема.
Вопрос заключается в том, можете ли вы найти причину, по которой он segfaults во время выполнения? Я также могу предоставить исполняемый файл windows, если кто-то захочет.
def main():
list[int] j
int i
def list[int] test():
list[int] j
j := 5 # j
j := 10 # j
return j
end
j := test()
i := head(j)
puti(head(j))
end
сгенерированный код LLVM-IR здесь