LLVM: «Invalid bitcast» при преобразовании структуры в идентичную структуру - PullRequest
0 голосов
/ 31 января 2019

Я работаю над исправлением некоторых ошибок в компиляторе TinyGo.На данный момент у меня странные проблемы с bitcasting.Код IR будет выглядеть следующим образом:

%structcast.go.A = type { i32, i32, i32, i32 }
%structcast.go.B = type { i32, i32, i32, i32 }
...
  %0 = load %structcast.go.B, %structcast.go.B* %b, !dbg !1851
  %changetype = bitcast %structcast.go.B %0 to %structcast.go.A, !dbg !1852
  call void @structcast.go.foo(%structcast.go.A %changetype, i8* undef, i8* undef), !dbg !1853

Но во время проверки ИК я получаю:

Invalid bitcast
  %changetype = bitcast %structcast.go.B %0 to %structcast.go.A, !dbg !1852

Мне интересно, что именно является незаконным в этом биткасте?

1 Ответ

0 голосов
/ 31 января 2019

Хорошо, я сам понял: приведение должно быть для неагрегированного типа, а структура является агрегатной: (* ​​1001 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...