public inbox for jit@gcc.gnu.org
 help / color / mirror / Atom feed
From: Dibyendu Majumdar <mobile@majumdar.org.uk>
To: jit@gcc.gnu.org
Subject: Hit a showstopper issue
Date: Thu, 01 Jan 2015 00:00:00 -0000	[thread overview]
Message-ID: <CACXZuxcc8TQb0FmQyUgeokL_42rMQ4k-PozTS9ooDhh6eESceA@mail.gmail.com> (raw)

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>

             reply	other threads:[~2015-06-14 20:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-01  0:00 Dibyendu Majumdar [this message]
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         ` David Malcolm
2015-01-01  0:00         ` Dibyendu Majumdar
2015-01-01  0:00           ` David Malcolm
2015-01-01  0:00             ` Dibyendu Majumdar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CACXZuxcc8TQb0FmQyUgeokL_42rMQ4k-PozTS9ooDhh6eESceA@mail.gmail.com \
    --to=mobile@majumdar.org.uk \
    --cc=jit@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).