I'm not sure if this is a bug in IMCC
or not, but I don't see the use of it,
and it's causing my program to segfault.

If I have more than one

  .pcc_begin_return
   .return x
   .return y
   etc
  .pcc_end_return

block in a single compilation unit,
every block wants to return the
return values of all the pcc_return
blocks in the compilation unit.
Example:

  unless x goto blah
  .pcc_begin_return
   .return P16
  .pcc_end_return
 blah:
  .pcc_begin_return
   .return P17
  .pcc_end_return

The return statements both end up like this:

  set P5, P16
  set P6, P17
  set I0, 0
  set I1, 0
  set I2, 0
  set I3, 2
  set I4, 0
  invoke P1

Instead of like this, as I would expect:

  set P5, P16
  set I0, 0
  set I1, 0
  set I2, 0
  set I3, 1
  set I4, 0
  invoke P1

and

  set P5, P17
  set I0, 0
  set I1, 0
  set I2, 0
  set I3, 1
  set I4, 0
  invoke P1

Is there some reason I'm not supposed to
have more than one pcc_return in a compilation
unit (in which case how am I *supposed* to implement
something like

  if foo { return "bar" } else { return "quux" }

)? Or was this just an oversight by the IMCC
implementors?

- TOGoS

__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com

Reply via email to