* don't internalerror when typecasting voidpointer^ or formaldef

git-svn-id: branches/hlcgllvm@28208 -
This commit is contained in:
Jonas Maebe 2014-07-12 22:42:15 +00:00
parent 27e350fa9a
commit 9fada1a238

View File

@ -60,7 +60,7 @@ uses
globtype,verbose, globtype,verbose,
aasmdata, aasmdata,
llvmbase,aasmllvm, llvmbase,aasmllvm,
symdef,defutil, symconst,symdef,defutil,
cgbase,cgutils,hlcgobj; cgbase,cgutils,hlcgobj;
{ tllvmtypeconvnode } { tllvmtypeconvnode }
@ -129,7 +129,10 @@ procedure tllvmtypeconvnode.second_nothing;
begin begin
if left.resultdef<>resultdef then if left.resultdef<>resultdef then
begin begin
if left.resultdef.size<>resultdef.size then { handle sometype(voidptr^) }
if not is_void(left.resultdef) and
(left.resultdef.typ<>formaldef) and
(left.resultdef.size<>resultdef.size) then
internalerror(2014012216); internalerror(2014012216);
hlcg.location_force_mem(current_asmdata.CurrAsmList,left.location,left.resultdef); hlcg.location_force_mem(current_asmdata.CurrAsmList,left.location,left.resultdef);
hreg:=hlcg.getaddressregister(current_asmdata.CurrAsmList,getpointerdef(resultdef)); hreg:=hlcg.getaddressregister(current_asmdata.CurrAsmList,getpointerdef(resultdef));