From: Dibyendu Majumdar <mobile@majumdar.org.uk>
To: jit@gcc.gnu.org
Subject: Re: A possible code generation issue
Date: Thu, 01 Jan 2015 00:00:00 -0000 [thread overview]
Message-ID: <CACXZuxfKRkEzSjzPCvpSvL0EcryEofyL-xjgJLxByNQDNpBjTg@mail.gmail.com> (raw)
In-Reply-To: <CACXZuxc3z92zKFWhNBU4a0LDxhyNRiZcbMf83HVYkOn-7CScDQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 809 bytes --]
Also attached are the initial gimples .
Looks like in the failure case the code is being incorrectly
optimized. I wonder if this is a manifestation of the get_address bug,
perhaps the real fix will be better than the patch I am using. I will
use the latest gcc 5 branch and see if that helps.
Regards
> I am getting a failure in one of the Lua tests. Attached are two dumps:
>
> 1. bug_fdump.txt and bug_rdump.txt - these are the versions that fail.
>
>
> 2. The bug_fdump_ok.txt and bug_rdump_ok.txt - this runs ok. The only
> difference between this version and the above is a debug printf call
> in this; so the printf call somehow seems to alter the code being
> generated.
>
> I have also attached the corresponding asm files.
>
>
> I am still using my patched version - not the latest from 5 branch.
[-- Attachment #2: bug_asm.txt --]
[-- Type: text/plain, Size: 7987 bytes --]
ravif2 (struct ravi_lua_State * L)
{
struct ravi_CallInfo * D.1181;
struct ravi_TValue * D.1182;
sizetype D.1183;
struct ravi_TValue * D.1184;
struct ravi_Proto * D.1185;
struct ravi_TValue * D.1186;
sizetype D.1187;
struct ravi_TValue * D.1188;
signed long D.1189;
signed int D.1190;
signed int D.1191;
signed int D.1192;
<unnamed type> iftmp.3;
<unnamed type> iftmp.4;
<unnamed type> iftmp.5;
<unnamed type> iftmp.6;
<unnamed type> D.1213;
signed int D.1214;
<unnamed type> iftmp.7;
<unnamed type> iftmp.8;
sizetype D.1225;
struct ravi_TValue * D.1226;
signed int D.1227;
struct ravi_TValue * D.1228;
signed int D.1229;
<unnamed type> comparison_0_26;
<unnamed type> comparison_0_22;
<unnamed type> comparison_0_19;
<unnamed type> comparison_0_18;
<unnamed type> comparison_0_17;
<unnamed type> isfalse_0_16;
<unnamed type> comparison_0_13;
<unnamed type> comparison_0_12;
<unnamed type> comparison_0_11;
<unnamed type> isfalse_0_10;
<unnamed type> comparison_0_7;
<unnamed type> comparison_0_6;
<unnamed type> comparison_0_5;
<unnamed type> isfalse_0_4;
struct ravi_LClosure * cl;
struct ravi_TValue * base;
entry:
D.1181 = L->ci;
D.1182 = D.1181->func;
cl = D.1182->value_.gc;
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1181 = L->ci;
raviV_op_loadnil (D.1181, 0, 0);
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1185 = cl->p;
D.1186 = D.1185->k;
D.1187 = 0;
D.1188 = D.1186 + D.1187;
D.1189 = D.1188->value_.i;
D.1184->value_.i = D.1189;
D.1183 = 16;
D.1184 = base + D.1183;
D.1185 = cl->p;
D.1186 = D.1185->k;
D.1187 = 0;
D.1188 = D.1186 + D.1187;
D.1190 = D.1188->tt_;
D.1184->tt_ = D.1190;
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_5 = D.1191 == 0;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_6 = D.1191 == 1;
D.1183 = 16;
D.1184 = base + D.1183;
D.1192 = D.1184->value_.b;
comparison_0_7 = D.1192 == 0;
if (comparison_0_5 != 0) goto <D.1194>; else goto <D.1197>;
<D.1197>:
if (comparison_0_6 != 0) goto <D.1201>; else goto <D.1199>;
<D.1201>:
if (comparison_0_7 != 0) goto <D.1202>; else goto <D.1199>;
<D.1202>:
iftmp.4 = 1;
goto <D.1200>;
<D.1199>:
iftmp.4 = 0;
<D.1200>:
if (iftmp.4 != 0) goto <D.1194>; else goto <D.1195>;
<D.1194>:
iftmp.3 = 1;
goto <D.1196>;
<D.1195>:
iftmp.3 = 0;
<D.1196>:
isfalse_0_4 = iftmp.3;
if (isfalse_0_4 == 0) goto OP_TEST_do_jmp_2_8; else goto OP_TEST_do_skip_2_9;
jmp_5_1:
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1184->value_.b = 0;
D.1183 = 16;
D.1184 = base + D.1183;
D.1184->tt_ = 1;
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_11 = D.1191 == 0;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_12 = D.1191 == 1;
D.1183 = 16;
D.1184 = base + D.1183;
D.1192 = D.1184->value_.b;
comparison_0_13 = D.1192 == 0;
if (comparison_0_11 != 0) goto <D.1204>; else goto <D.1207>;
<D.1207>:
if (comparison_0_12 != 0) goto <D.1211>; else goto <D.1209>;
<D.1211>:
if (comparison_0_13 != 0) goto <D.1212>; else goto <D.1209>;
<D.1212>:
iftmp.6 = 1;
goto <D.1210>;
<D.1209>:
iftmp.6 = 0;
<D.1210>:
if (iftmp.6 != 0) goto <D.1204>; else goto <D.1205>;
<D.1204>:
iftmp.5 = 1;
goto <D.1206>;
<D.1205>:
iftmp.5 = 0;
<D.1206>:
isfalse_0_10 = iftmp.5;
D.1213 = ~isfalse_0_10;
D.1214 = (signed int) D.1213;
if (D.1214 == 0) goto OP_TEST_do_jmp_5_14; else goto OP_TEST_do_skip_5_15;
jmp_9_2:
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1185 = cl->p;
D.1186 = D.1185->k;
D.1187 = 0;
D.1188 = D.1186 + D.1187;
D.1189 = D.1188->value_.i;
D.1184->value_.i = D.1189;
D.1183 = 16;
D.1184 = base + D.1183;
D.1185 = cl->p;
D.1186 = D.1185->k;
D.1187 = 0;
D.1188 = D.1186 + D.1187;
D.1190 = D.1188->tt_;
D.1184->tt_ = D.1190;
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_17 = D.1191 == 0;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_18 = D.1191 == 1;
D.1183 = 16;
D.1184 = base + D.1183;
D.1192 = D.1184->value_.b;
comparison_0_19 = D.1192 == 0;
if (comparison_0_17 != 0) goto <D.1216>; else goto <D.1219>;
<D.1219>:
if (comparison_0_18 != 0) goto <D.1223>; else goto <D.1221>;
<D.1223>:
if (comparison_0_19 != 0) goto <D.1224>; else goto <D.1221>;
<D.1224>:
iftmp.8 = 1;
goto <D.1222>;
<D.1221>:
iftmp.8 = 0;
<D.1222>:
if (iftmp.8 != 0) goto <D.1216>; else goto <D.1217>;
<D.1216>:
iftmp.7 = 1;
goto <D.1218>;
<D.1217>:
iftmp.7 = 0;
<D.1218>:
isfalse_0_16 = iftmp.7;
if (isfalse_0_16 == 0) goto OP_TEST_do_jmp_9_20; else goto OP_TEST_do_skip_9_21;
jmp_12_3:
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1184->value_.b = 0;
D.1183 = 16;
D.1184 = base + D.1183;
D.1184->tt_ = 1;
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1225 = 32;
D.1226 = base + D.1225;
L->top = D.1226;
D.1185 = cl->p;
D.1227 = D.1185->sizep;
comparison_0_22 = D.1227 > 0;
if (comparison_0_22 != 0) goto OP_RETURN_if_sizep_gt_0_12_23; else goto OP_RETURN_else_sizep_gt_0_12_24;
OP_TEST_do_jmp_2_8:
goto jmp_5_1;
OP_TEST_do_skip_2_9:
goto jmp_5_1;
OP_TEST_do_jmp_5_14:
goto jmp_9_2;
OP_TEST_do_skip_5_15:
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1187 = 0;
D.1228 = base + D.1187;
D.1228->value_.b = 1;
D.1187 = 0;
D.1228 = base + D.1187;
D.1228->tt_ = 1;
goto jmp_9_2;
OP_TEST_do_jmp_9_20:
goto jmp_12_3;
OP_TEST_do_skip_9_21:
goto jmp_12_3;
OP_RETURN_if_sizep_gt_0_12_23:
luaF_close (L, base);
goto OP_RETURN_else_sizep_gt_0_12_24;
OP_RETURN_else_sizep_gt_0_12_24:
D.1183 = 16;
D.1184 = base + D.1183;
luaD_poscall (L, D.1184);
D.1229 = 1;
return D.1229;
OP_RETURN_13_25:
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1187 = 0;
D.1228 = base + D.1187;
L->top = D.1228;
D.1185 = cl->p;
D.1227 = D.1185->sizep;
comparison_0_26 = D.1227 > 0;
if (comparison_0_26 != 0) goto OP_RETURN_if_sizep_gt_0_13_27; else goto OP_RETURN_else_sizep_gt_0_13_28;
OP_RETURN_if_sizep_gt_0_13_27:
luaF_close (L, base);
goto OP_RETURN_else_sizep_gt_0_13_28;
OP_RETURN_else_sizep_gt_0_13_28:
D.1187 = 0;
D.1228 = base + D.1187;
luaD_poscall (L, D.1228);
D.1229 = 1;
return D.1229;
}
.file "fake.c"
.section .text.unlikely,"ax",@progbits
.LCOLDB1:
.text
.LHOTB1:
.p2align 4,,15
.globl ravif2
.type ravif2, @function
ravif2:
.LFB1:
.cfi_startproc
.L35:
pushq %r12
.cfi_def_cfa_offset 16
.cfi_offset 12, -16
xorl %edx, %edx
xorl %esi, %esi
pushq %rbp
.cfi_def_cfa_offset 24
.cfi_offset 6, -24
movq %rdi, %rbp
pushq %rbx
.cfi_def_cfa_offset 32
.cfi_offset 3, -32
movq 32(%rdi), %rdi
movq (%rdi), %rax
movq (%rax), %r12
call raviV_op_loadnil@PLT
movq 32(%rbp), %rax
movq 32(%rax), %rbx
movq 24(%r12), %rax
movq 48(%rax), %rdx
movl 32(%rax), %eax
movq (%rdx), %rcx
movl $1, 24(%rbx)
movq %rcx, 16(%rbx)
movq (%rdx), %rdx
movq %rdx, 16(%rbx)
leaq 32(%rbx), %rdx
movq %rdx, 16(%rbp)
testl %eax, %eax
jle .L36
.L37:
movq %rbx, %rsi
movq %rbp, %rdi
call luaF_close@PLT
.L36:
leaq 16(%rbx), %rsi
movq %rbp, %rdi
call luaD_poscall@PLT
popq %rbx
.cfi_def_cfa_offset 24
movl $1, %eax
popq %rbp
.cfi_def_cfa_offset 16
popq %r12
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE1:
.size ravif2, .-ravif2
.section .text.unlikely
.LCOLDE1:
.text
.LHOTE1:
.ident "GCC: (GNU) 5.1.0"
.section .note.GNU-stack,"",@progbits
../build/lua: assertion failed!
stack traceback:
[C]: in function 'assert'
bug.lua: in main chunk
[C]: in ?
[-- Attachment #3: bug_asm_ok.txt --]
[-- Type: text/plain, Size: 9277 bytes --]
ravif2 (struct ravi_lua_State * L)
{
struct ravi_CallInfo * D.1181;
struct ravi_TValue * D.1182;
sizetype D.1183;
struct ravi_TValue * D.1184;
struct ravi_Proto * D.1185;
struct ravi_TValue * D.1186;
sizetype D.1187;
struct ravi_TValue * D.1188;
signed long D.1189;
signed int D.1190;
signed int D.1191;
signed int D.1192;
<unnamed type> iftmp.3;
<unnamed type> iftmp.4;
<unnamed type> iftmp.5;
<unnamed type> iftmp.6;
<unnamed type> D.1213;
signed int D.1214;
<unnamed type> iftmp.7;
<unnamed type> iftmp.8;
sizetype D.1225;
struct ravi_TValue * D.1226;
signed int D.1227;
struct ravi_TValue * D.1228;
signed int D.1229;
<unnamed type> comparison_0_26;
<unnamed type> comparison_0_22;
<unnamed type> comparison_0_19;
<unnamed type> comparison_0_18;
<unnamed type> comparison_0_17;
<unnamed type> isfalse_0_16;
<unnamed type> comparison_0_13;
<unnamed type> comparison_0_12;
<unnamed type> comparison_0_11;
<unnamed type> isfalse_0_10;
<unnamed type> comparison_0_7;
<unnamed type> comparison_0_6;
<unnamed type> comparison_0_5;
<unnamed type> isfalse_0_4;
struct ravi_LClosure * cl;
struct ravi_TValue * base;
entry:
D.1181 = L->ci;
D.1182 = D.1181->func;
cl = D.1182->value_.gc;
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1181 = L->ci;
raviV_op_loadnil (D.1181, 0, 0);
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1185 = cl->p;
D.1186 = D.1185->k;
D.1187 = 0;
D.1188 = D.1186 + D.1187;
D.1189 = D.1188->value_.i;
D.1184->value_.i = D.1189;
D.1183 = 16;
D.1184 = base + D.1183;
D.1185 = cl->p;
D.1186 = D.1185->k;
D.1187 = 0;
D.1188 = D.1186 + D.1187;
D.1190 = D.1188->tt_;
D.1184->tt_ = D.1190;
printf ("OP_TEST(%d C=1)) if (!reg(A=%d)) then skip next else jmp to %d\n", 3, 1, 5);
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_5 = D.1191 == 0;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_6 = D.1191 == 1;
D.1183 = 16;
D.1184 = base + D.1183;
D.1192 = D.1184->value_.b;
comparison_0_7 = D.1192 == 0;
if (comparison_0_5 != 0) goto <D.1194>; else goto <D.1197>;
<D.1197>:
if (comparison_0_6 != 0) goto <D.1201>; else goto <D.1199>;
<D.1201>:
if (comparison_0_7 != 0) goto <D.1202>; else goto <D.1199>;
<D.1202>:
iftmp.4 = 1;
goto <D.1200>;
<D.1199>:
iftmp.4 = 0;
<D.1200>:
if (iftmp.4 != 0) goto <D.1194>; else goto <D.1195>;
<D.1194>:
iftmp.3 = 1;
goto <D.1196>;
<D.1195>:
iftmp.3 = 0;
<D.1196>:
isfalse_0_4 = iftmp.3;
if (isfalse_0_4 == 0) goto OP_TEST_do_jmp_2_8; else goto OP_TEST_do_skip_2_9;
jmp_5_1:
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1184->value_.b = 0;
D.1183 = 16;
D.1184 = base + D.1183;
D.1184->tt_ = 1;
printf ("OP_TEST(%d C=0) if (reg(A=%d)) then skip next else jmp to %d\n", 6, 1, 9);
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_11 = D.1191 == 0;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_12 = D.1191 == 1;
D.1183 = 16;
D.1184 = base + D.1183;
D.1192 = D.1184->value_.b;
comparison_0_13 = D.1192 == 0;
if (comparison_0_11 != 0) goto <D.1204>; else goto <D.1207>;
<D.1207>:
if (comparison_0_12 != 0) goto <D.1211>; else goto <D.1209>;
<D.1211>:
if (comparison_0_13 != 0) goto <D.1212>; else goto <D.1209>;
<D.1212>:
iftmp.6 = 1;
goto <D.1210>;
<D.1209>:
iftmp.6 = 0;
<D.1210>:
if (iftmp.6 != 0) goto <D.1204>; else goto <D.1205>;
<D.1204>:
iftmp.5 = 1;
goto <D.1206>;
<D.1205>:
iftmp.5 = 0;
<D.1206>:
isfalse_0_10 = iftmp.5;
D.1213 = ~isfalse_0_10;
D.1214 = (signed int) D.1213;
if (D.1214 == 0) goto OP_TEST_do_jmp_5_14; else goto OP_TEST_do_skip_5_15;
jmp_9_2:
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1185 = cl->p;
D.1186 = D.1185->k;
D.1187 = 0;
D.1188 = D.1186 + D.1187;
D.1189 = D.1188->value_.i;
D.1184->value_.i = D.1189;
D.1183 = 16;
D.1184 = base + D.1183;
D.1185 = cl->p;
D.1186 = D.1185->k;
D.1187 = 0;
D.1188 = D.1186 + D.1187;
D.1190 = D.1188->tt_;
D.1184->tt_ = D.1190;
printf ("OP_TEST(%d C=1)) if (!reg(A=%d)) then skip next else jmp to %d\n", 10, 1, 12);
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_17 = D.1191 == 0;
D.1183 = 16;
D.1184 = base + D.1183;
D.1191 = D.1184->tt_;
comparison_0_18 = D.1191 == 1;
D.1183 = 16;
D.1184 = base + D.1183;
D.1192 = D.1184->value_.b;
comparison_0_19 = D.1192 == 0;
if (comparison_0_17 != 0) goto <D.1216>; else goto <D.1219>;
<D.1219>:
if (comparison_0_18 != 0) goto <D.1223>; else goto <D.1221>;
<D.1223>:
if (comparison_0_19 != 0) goto <D.1224>; else goto <D.1221>;
<D.1224>:
iftmp.8 = 1;
goto <D.1222>;
<D.1221>:
iftmp.8 = 0;
<D.1222>:
if (iftmp.8 != 0) goto <D.1216>; else goto <D.1217>;
<D.1216>:
iftmp.7 = 1;
goto <D.1218>;
<D.1217>:
iftmp.7 = 0;
<D.1218>:
isfalse_0_16 = iftmp.7;
if (isfalse_0_16 == 0) goto OP_TEST_do_jmp_9_20; else goto OP_TEST_do_skip_9_21;
jmp_12_3:
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1183 = 16;
D.1184 = base + D.1183;
D.1184->value_.b = 0;
D.1183 = 16;
D.1184 = base + D.1183;
D.1184->tt_ = 1;
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1225 = 32;
D.1226 = base + D.1225;
L->top = D.1226;
D.1185 = cl->p;
D.1227 = D.1185->sizep;
comparison_0_22 = D.1227 > 0;
if (comparison_0_22 != 0) goto OP_RETURN_if_sizep_gt_0_12_23; else goto OP_RETURN_else_sizep_gt_0_12_24;
OP_TEST_do_jmp_2_8:
goto jmp_5_1;
OP_TEST_do_skip_2_9:
goto jmp_5_1;
OP_TEST_do_jmp_5_14:
goto jmp_9_2;
OP_TEST_do_skip_5_15:
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1187 = 0;
D.1228 = base + D.1187;
D.1228->value_.b = 1;
D.1187 = 0;
D.1228 = base + D.1187;
D.1228->tt_ = 1;
goto jmp_9_2;
OP_TEST_do_jmp_9_20:
goto jmp_12_3;
OP_TEST_do_skip_9_21:
goto jmp_12_3;
OP_RETURN_if_sizep_gt_0_12_23:
luaF_close (L, base);
goto OP_RETURN_else_sizep_gt_0_12_24;
OP_RETURN_else_sizep_gt_0_12_24:
D.1183 = 16;
D.1184 = base + D.1183;
luaD_poscall (L, D.1184);
D.1229 = 1;
return D.1229;
OP_RETURN_13_25:
D.1181 = L->ci;
base = D.1181->u.l.base;
D.1187 = 0;
D.1228 = base + D.1187;
L->top = D.1228;
D.1185 = cl->p;
D.1227 = D.1185->sizep;
comparison_0_26 = D.1227 > 0;
if (comparison_0_26 != 0) goto OP_RETURN_if_sizep_gt_0_13_27; else goto OP_RETURN_else_sizep_gt_0_13_28;
OP_RETURN_if_sizep_gt_0_13_27:
luaF_close (L, base);
goto OP_RETURN_else_sizep_gt_0_13_28;
OP_RETURN_else_sizep_gt_0_13_28:
D.1187 = 0;
D.1228 = base + D.1187;
luaD_poscall (L, D.1228);
D.1229 = 1;
return D.1229;
}
.file "fake.c"
.section .rodata
.align 8
.LC1:
.ascii "OP_TEST(%d C=1)) if (!reg(A=%d)) then skip next else jmp to "
.ascii "%d\n"
.zero 138
.align 8
.LC2:
.ascii "OP_TEST(%d C=0) if (reg(A=%d)) then skip next else jmp to %d"
.ascii "\n"
.zero 140
.section .text.unlikely,"ax",@progbits
.LCOLDB3:
.text
.LHOTB3:
.p2align 4,,15
.globl ravif2
.type ravif2, @function
ravif2:
.LFB1:
.cfi_startproc
.L35:
pushq %r12
.cfi_def_cfa_offset 16
.cfi_offset 12, -16
xorl %edx, %edx
xorl %esi, %esi
pushq %rbp
.cfi_def_cfa_offset 24
.cfi_offset 6, -24
pushq %rbx
.cfi_def_cfa_offset 32
.cfi_offset 3, -32
movq %rdi, %rbx
movq 32(%rdi), %rdi
movq (%rdi), %rax
movq (%rax), %r12
call raviV_op_loadnil@PLT
movq 32(%rbx), %rax
movl $3, %esi
leaq .LC1(%rip), %rdi
movq 24(%r12), %rdx
movq 32(%rax), %rax
movq 48(%rdx), %rdx
movq (%rdx), %rcx
movl 8(%rdx), %edx
movq %rcx, 16(%rax)
movl $5, %ecx
movl %edx, 24(%rax)
movl $1, %edx
xorl %eax, %eax
call printf@PLT
movq 32(%rbx), %rax
movl $1, %edx
movl $9, %ecx
leaq .LC2(%rip), %rdi
movl $6, %esi
movq 32(%rax), %rax
movl $0, 16(%rax)
movl $1, 24(%rax)
xorl %eax, %eax
call printf@PLT
movq 32(%rbx), %rax
movq 32(%rax), %rax
movl 24(%rax), %edx
testl %edx, %edx
je .L38
movl 16(%rax), %ecx
testl %ecx, %ecx
je .L51
.L37:
movl $1, (%rax)
movl $1, 8(%rax)
.L36:
.L38:
movq 24(%r12), %rdx
movl $10, %esi
leaq .LC1(%rip), %rdi
movq 48(%rdx), %rdx
movq (%rdx), %rcx
movl 8(%rdx), %edx
movq %rcx, 16(%rax)
movl $12, %ecx
movl %edx, 24(%rax)
movl $1, %edx
xorl %eax, %eax
call printf@PLT
movq 32(%rbx), %rax
movq 32(%rax), %rbp
leaq 32(%rbp), %rax
movl $0, 16(%rbp)
movl $1, 24(%rbp)
movq %rax, 16(%rbx)
movq 24(%r12), %rax
movl 32(%rax), %eax
testl %eax, %eax
jle .L40
.L39:
movq %rbp, %rsi
movq %rbx, %rdi
call luaF_close@PLT
.L40:
leaq 16(%rbp), %rsi
movq %rbx, %rdi
call luaD_poscall@PLT
popq %rbx
.cfi_remember_state
.cfi_def_cfa_offset 24
movl $1, %eax
popq %rbp
.cfi_def_cfa_offset 16
popq %r12
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L51:
.cfi_restore_state
cmpl $1, %edx
jne .L37
jmp .L38
.cfi_endproc
.LFE1:
.size ravif2, .-ravif2
.section .text.unlikely
.LCOLDE3:
.text
.LHOTE3:
.ident "GCC: (GNU) 5.1.0"
.section .note.GNU-stack,"",@progbits
next prev parent reply other threads:[~2015-07-04 12:11 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-01 0:00 Dibyendu Majumdar
2015-01-01 0:00 ` Dibyendu Majumdar [this message]
2015-01-01 0:00 ` Dibyendu Majumdar
2015-01-01 0:00 ` Dibyendu Majumdar
2015-01-01 0:00 ` Filed PR jit/66812 for the " David Malcolm
2015-01-01 0:00 ` David Malcolm
2015-01-01 0:00 ` David Malcolm
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
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 ` David Malcolm
2015-01-01 0:00 ` [PATCH] PR jit/66812: Candidate fix for for the code generation issue, v1 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 ` 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 ` Filed PR jit/66812 for the code generation issue Dibyendu Majumdar
2015-01-01 0:00 ` Dibyendu Majumdar
2015-01-01 0:00 ` Dibyendu Majumdar
2015-01-01 0:00 ` Dibyendu Majumdar
2015-01-01 0:00 ` Dibyendu Majumdar
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 ` Dibyendu Majumdar
2015-01-01 0:00 ` Dibyendu Majumdar
2015-01-01 0:00 ` A possible " David Malcolm
2015-01-01 0:00 ` Dibyendu Majumdar
2015-01-01 0:00 ` Dibyendu Majumdar
2015-01-01 0:00 ` Filed PR jit/66811: jit jumps aren't compilable as C (Re: A possible code generation issue) David Malcolm
2015-01-01 0:00 ` Filed PR jit/66811: jit dumps " David Malcolm
2015-01-01 0:00 ` A possible code generation issue Dibyendu Majumdar
2015-01-01 0:00 ` PR jit/66783 (Re: A possible code generation issue) David Malcolm
2015-01-01 0:00 ` [PATCH, committed] PR jit/66783: prevent use of opaque structs David Malcolm
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=CACXZuxfKRkEzSjzPCvpSvL0EcryEofyL-xjgJLxByNQDNpBjTg@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).