public inbox for jit@gcc.gnu.org
 help / color / mirror / Atom feed
* Hit a showstopper issue
@ 2015-01-01  0:00 Dibyendu Majumdar
  2015-01-01  0:00 ` Dibyendu Majumdar
  2015-01-01  0:00 ` David Malcolm
  0 siblings, 2 replies; 10+ messages in thread
From: Dibyendu Majumdar @ 2015-01-01  0:00 UTC (permalink / raw)
  To: jit

I have hit an issue that is a show stopper for me.

In Lua, redundant bytecodes are emitted that end up being unreachable
blocks in the generated code. In LLVM these unreachable blocks are
simply eliminated during optimization. But libgccjit is failing with
an error.

Here is a minimal Lua function.

x=function() return; end

The generated Lua bytecode is this:

function <test.lua:1,1> (2 instructions at 0xad4840)
0 params, 2 slots, 0 upvalues, 0 locals, 0 constants, 0 functions
1 [1] RETURN   0 1
2 [1] RETURN   0 1
constants (0) for 0xad4840:
locals (0) for 0xad4840:
upvalues (0) for 0xad4840:

As you can see there is a redundant RETURN bytecode.

The code I generate is this:

static int
ravif1 (struct ravi_lua_State * L)
{
  struct ravi_TValue * base;

entry:
  base = L->ci->u.l.base;
  base = L->ci->u.l.base;
  L->top = &base[(int)0];
  if ((struct ravi_LClosure *)L->ci->func->p->sizep > (int)0) goto
<UNNAMED BLOCK 0x2360800>; else goto <UNNAMED BLOCK 0x2360850>;

<UNNAMED BLOCK 0x2360800>:
  (void)luaF_close (L, base);
  goto <UNNAMED BLOCK 0x2360850>;

<UNNAMED BLOCK 0x2360850>:
  (void)luaD_poscall (L, &base[(int)0]);
  return (int)1;

<UNNAMED BLOCK 0x2360c00>:
  base = L->ci->u.l.base;
  L->top = &base[(int)0];
  if ((struct ravi_LClosure *)L->ci->func->p->sizep > (int)0) goto
<UNNAMED BLOCK 0x2360a60>; else goto <UNNAMED BLOCK 0x2361290>;

<UNNAMED BLOCK 0x2360a60>:
  (void)luaF_close (L, base);
  goto <UNNAMED BLOCK 0x2361290>;

<UNNAMED BLOCK 0x2361290>:
  (void)luaD_poscall (L, &base[(int)0]);
  return (int)1;
}

When this is compiled the following errors occur:

libgccjit.so: error: unreachable block: <UNNAMED BLOCK 0xad5c40>
libgccjit.so: error: unreachable block: <UNNAMED BLOCK 0xad5aa0>
libgccjit.so: error: unreachable block: <UNNAMED BLOCK 0xad62d0>

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-06-16 20:16 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-01  0:00 Hit a showstopper issue Dibyendu Majumdar
2015-01-01  0:00 ` Dibyendu Majumdar
2015-01-01  0:00 ` David Malcolm
2015-01-01  0:00   ` Dibyendu Majumdar
2015-01-01  0:00     ` Dibyendu Majumdar
2015-01-01  0:00       ` David Malcolm
2015-01-01  0:00         ` Dibyendu Majumdar
2015-01-01  0:00           ` David Malcolm
2015-01-01  0:00             ` Dibyendu Majumdar
2015-01-01  0:00         ` David Malcolm

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).