0
我正在開發一個llvm前端。我的問題是,當我使用'store'指令將值存儲在複雜類型的成員中時,我會遇到分段錯誤。例如,假設我已經在一個模塊中定義了類似%mytype = type {i32,...}的類型,然後我使用以下命令將3存儲在此類型對象的第一個字段中。此代碼導致seg故障有什麼問題?llvm分段錯誤
define void f() {
...
%alloc = alloca %mytype*
%myinstance = load %mytype** %alloc
%firstfield = getelementptr %mytype* %myinstance, i32 0, i32 0
store i32 3, i32* %firstfield
...
)
感謝您的建議,但問題是,我應該分配一個指針,即我不能代替「ALLOCA%MYTYPE *」與「ALLOCA% mytype' – user1723583
@ user1723583在這種情況下,您需要兩個disti nct'alloca'指令 - 一個用於分配對象的內存,另一個用於爲指針分配內存。我相應地更新了我的答案。 – Oak