Skip to content

SSA bugs :( #155

Description

@b-paul
prog entry @main;

proc @main() -> () [
  block %loop [
    // pretend this does stuff
    goto(%loop, %ret);
  ];
  block %ret [
    return();
  ];
];

crashes from a hashtbl find. Is it just the case that there should never be a block edge to the entry block?

and

proc @main(l:bv64) -> () [
  block %entry [
    goto(%loop, %ret);
  ];
  block %loop [
    (var l:bv64) := call @next(l:bv64);
    goto(%loop, %ret);
  ];
  block %ret [
    return();
  ];
];

proc @next(p:bv64) -> (next:bv64) [
  block %body [
    return(p);
  ];
];

mistranslates to

proc @main()  -> () {  }
[
   block %entry [ goto (%ret,%loop); ];
   block %loop [
     (var l_1:bv64=next) := call @next(p=l:bv64);
     goto (%ret,%loop);
   ];
   block %ret [ return; ]
];
proc @next(p:bv64)  -> (next:bv64) {  }
[ block %body [ var next:bv64 := p:bv64; return; ] ];
prog entry @main;

notice that l does not get a phi node coming from l_1...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions