You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
(4) |
2
(2) |
|
3
(1) |
4
(1) |
5
|
6
|
7
|
8
(1) |
9
(1) |
|
10
(4) |
11
(1) |
12
(2) |
13
(2) |
14
(3) |
15
(2) |
16
(2) |
|
17
|
18
(1) |
19
(5) |
20
|
21
|
22
(8) |
23
(4) |
|
24
(1) |
25
|
26
(3) |
27
(8) |
28
(4) |
29
(4) |
30
(1) |
|
From: Ivo R. <ir...@so...> - 2017-09-29 20:58:35
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=3c769fb56e06095b906ad8be8b4521bb9366d25f commit 3c769fb56e06095b906ad8be8b4521bb9366d25f Author: Ivo Raisr <iv...@iv...> Date: Fri Sep 29 22:57:15 2017 +0200 Implement If-Then-Else leg lifting if the condition is a constant. Diff: --- VEX/priv/ir_opt.c | 78 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 26 deletions(-) diff --git a/VEX/priv/ir_opt.c b/VEX/priv/ir_opt.c index 6939776..fe1a345 100644 --- a/VEX/priv/ir_opt.c +++ b/VEX/priv/ir_opt.c @@ -2677,13 +2677,16 @@ static void subst_and_fold_PhiNodes(SubstEnv* env, IRStmtVec* stmts, } } -static IRStmtVec* subst_and_fold_Stmts(SubstEnv* env, IRStmtVec* in); +static IRStmtVec* subst_and_fold_StmtVec(SubstEnv* env, IRStmtVec* in); +static void subst_and_fold_Stmts(SubstEnv* env, IRStmtVec* in, + UInt fixups[], UInt *n_fixups); /* Apply the subst to stmt, then fold the result as much as possible. Much simplified due to stmt being previously flattened. As a result of this, the stmt may wind up being turned into a no-op. */ -static IRStmt* subst_and_fold_Stmt(SubstEnv* env, IRStmt* st) +static IRStmt* subst_and_fold_Stmt(SubstEnv* env, IRStmt* st, IRStmtVec* parent, + UInt fixups[], UInt *n_fixups) { # if 0 vex_printf("\nsubst and fold stmt\n"); @@ -2892,37 +2895,52 @@ static IRStmt* subst_and_fold_Stmt(SubstEnv* env, IRStmt* st) vassert(isIRAtom(ite->cond)); IRExpr *fcond = fold_Expr(env, subst_Expr(env, ite->cond)); if (fcond->tag == Iex_Const) { + IRStmtVec* remaining_leg; /* Interesting. The condition on this "if-then-else" has folded down to a constant. */ vassert(fcond->Iex.Const.con->tag == Ico_U1); if (fcond->Iex.Const.con->Ico.U1 == True) { - /* TODO-JIT: "else" leg is never going to happen, so dump it. */ if (vex_control.iropt_verbosity > 0) vex_printf("vex iropt: IRStmt_IfThenElse became " "unconditional\n"); + /* "else" leg is never going to happen, so dump it. */ + remaining_leg = ite->then_leg; } else { vassert(fcond->Iex.Const.con->Ico.U1 == False); - /* TODO-JIT: "then" leg is never going to happen, so dump it. */ if (vex_control.iropt_verbosity > 0) vex_printf("vex iropt: IRStmt_IfThenElse became " "unconditional\n"); + /* "then" leg is never going to happen, so dump it. */ + remaining_leg = ite->else_leg; } - /* TODO-JIT: Pull the only remaining leg into the current IRStmtVec. - Here is what needs to be done: - 1. Rewrite ID of all IRTemp's (in tyenv->ids) defined in the - pulled leg. These are tracked in leg's defset. - 2. Insert all statements from the leg in the env->stmts_out - at the current position. */ - vpanic("IfThenElse leg lifting unimplemented"); + + /* Now pull the only remaining leg into the current IRStmtVec. */ + /* 1. Pull all IRTemp's defined in the remaining leg into parent's + defset. */ + const IRTempDefSet* defset = remaining_leg->defset; + for (UInt slot = 0; slot < defset->slots_used; slot++) { + UInt slot_value = defset->set[slot]; + for (UInt bit = 0; bit < BITS_PER_SLOT; bit++) { + if (slot_value & (1 << bit)) { + IRTemp tmp = slot * BITS_PER_SLOT + bit; + setIRTempDefined(parent->defset, tmp); + } + } + } + + /* 2. Process now all statements from the remaining leg as if they + were at the current position in the input IRStmtVec. */ + subst_and_fold_Stmts(env, remaining_leg, fixups, n_fixups); + return IRStmt_NoOp(); // return no-op; it will be removed anyway } SubstEnv* then_env = newSubstEnv(env->tyenv, ite->then_leg, env); - IRStmtVec* then_stmts = subst_and_fold_Stmts(then_env, ite->then_leg); + IRStmtVec* then_stmts = subst_and_fold_StmtVec(then_env, ite->then_leg); subst_and_fold_PhiNodes(then_env, then_stmts, True /* srcThen */, ite->phi_nodes); SubstEnv* else_env = newSubstEnv(env->tyenv, ite->else_leg, env); - IRStmtVec* else_stmts = subst_and_fold_Stmts(else_env, ite->else_leg); + IRStmtVec* else_stmts = subst_and_fold_StmtVec(else_env, ite->else_leg); subst_and_fold_PhiNodes(else_env, else_stmts, False /* srcThen */, ite->phi_nodes); @@ -2936,15 +2954,10 @@ static IRStmt* subst_and_fold_Stmt(SubstEnv* env, IRStmt* st) } } -/* Is to be called with already created SubstEnv as per newSubstEnv(). */ -static IRStmtVec* subst_and_fold_Stmts(SubstEnv* env, IRStmtVec* in) +#define N_FIXUPS 16 +static void subst_and_fold_Stmts(SubstEnv* env, IRStmtVec* in, + UInt fixups[], UInt *n_fixups) { - /* Keep track of IRStmt_LoadGs that we need to revisit after - processing all the other statements. */ - const Int N_FIXUPS = 16; - Int fixups[N_FIXUPS]; /* indices in the stmt array of 'out' */ - Int n_fixups = 0; - IRStmtVec* out = env->stmts; /* For each original SSA-form stmt ... */ @@ -2960,7 +2973,7 @@ static IRStmtVec* subst_and_fold_Stmts(SubstEnv* env, IRStmtVec* in) /* perhaps st2 is already a no-op? */ if (st2->tag == Ist_NoOp) continue; - st2 = subst_and_fold_Stmt(env, st2); + st2 = subst_and_fold_Stmt(env, st2, in, fixups, n_fixups); /* Deal with some post-folding special cases. */ switch (st2->tag) { @@ -3009,9 +3022,9 @@ static IRStmtVec* subst_and_fold_Stmts(SubstEnv* env, IRStmtVec* in) into a load-convert pair. The fixups[] entry refers to the inserted NoOp, and we expect to find the relevant LoadG immediately after it. */ - vassert(n_fixups >= 0 && n_fixups <= N_FIXUPS); - if (n_fixups < N_FIXUPS) { - fixups[n_fixups++] = out->stmts_used; + vassert(*n_fixups >= 0 && *n_fixups <= N_FIXUPS); + if (*n_fixups < N_FIXUPS) { + fixups[*n_fixups++] = out->stmts_used; addStmtToIRStmtVec(out, IRStmt_NoOp()); } } @@ -3026,6 +3039,18 @@ static IRStmtVec* subst_and_fold_Stmts(SubstEnv* env, IRStmtVec* in) /* Not interesting, copy st2 into the output vector. */ addStmtToIRStmtVec(out, st2); } +} + +/* Is to be called with already created SubstEnv as per newSubstEnv(). */ +static IRStmtVec* subst_and_fold_StmtVec(SubstEnv* env, IRStmtVec* in) +{ + /* Keep track of IRStmt_LoadGs that we need to revisit after + processing all the other statements. */ + UInt fixups[N_FIXUPS]; /* indices in the stmt array of 'out' */ + UInt n_fixups = 0; + + IRStmtVec* out = env->stmts; + subst_and_fold_Stmts(env, in, fixups, &n_fixups); /* Process any leftover unconditional LoadGs that we noticed in the main pass. */ @@ -3074,13 +3099,14 @@ static IRStmtVec* subst_and_fold_Stmts(SubstEnv* env, IRStmtVec* in) return out; } +#undef N_FIXUPS IRSB* cprop_BB ( IRSB* in ) { SubstEnv* env = newSubstEnv(in->tyenv, in->stmts, NULL); IRSB* out = emptyIRSB(); out->tyenv = deepCopyIRTypeEnv(in->tyenv); - out->stmts = subst_and_fold_Stmts(env, in->stmts); + out->stmts = subst_and_fold_StmtVec(env, in->stmts); out->id_seq = in->id_seq; out->next = subst_Expr( env, in->next ); out->jumpkind = in->jumpkind; |
|
From: Petar J. <pe...@so...> - 2017-09-29 17:17:19
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=711d3a53c3d9774dfefcf43b4394e3a23289ee02 commit 711d3a53c3d9774dfefcf43b4394e3a23289ee02 Author: Petar Jovanovic <mip...@gm...> Date: Fri Sep 29 19:14:42 2017 +0200 mips64: set mips64r2 as default for 64-builds Set mips64r2 as default. Major 64-bit platforms are Rev2. This also fixes small issue when -march=octeon is in conflict with -mips64. Diff: --- configure.ac | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 2b4f958..fde97ae 100644 --- a/configure.ac +++ b/configure.ac @@ -1732,16 +1732,16 @@ CFLAGS=$safe_CFLAGS AC_SUBST(FLAG_MIPS32) -# does this compiler support -march=mips64 (mips64 default) ? -AC_MSG_CHECKING([if gcc accepts -march=mips64]) +# does this compiler support -march=mips64r2 (mips64r2 default) ? +AC_MSG_CHECKING([if gcc accepts -march=mips64r2]) safe_CFLAGS=$CFLAGS -CFLAGS="$CFLAGS -march=mips64 -Werror" +CFLAGS="$CFLAGS -march=mips64r2 -Werror" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])], [ -FLAG_MIPS64="-march=mips64" +FLAG_MIPS64="-march=mips64r2" AC_MSG_RESULT([yes]) ], [ FLAG_MIPS64="" |
|
From: Julian S. <se...@so...> - 2017-09-29 10:11:19
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=c841302b2bf4242508074e2f973b543245e4f5fb commit c841302b2bf4242508074e2f973b543245e4f5fb Author: Julian Seward <js...@ac...> Date: Fri Sep 29 12:09:56 2017 +0200 emit_X86Instr, case Xin_Jmp: fix incorrect offset field calculations. Diff: --- VEX/priv/host_x86_defs.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/VEX/priv/host_x86_defs.c b/VEX/priv/host_x86_defs.c index 272828a..c2cade3 100644 --- a/VEX/priv/host_x86_defs.c +++ b/VEX/priv/host_x86_defs.c @@ -2507,7 +2507,7 @@ UInt emit_X86Instr ( /*MB_MOD*/Bool* is_profInc, case Xin_Jmp: { Long deltaLL - = ((Long)(i->Xin.Jmp.hereOffs)) - ((Long)(i->Xin.Jmp.dstOffs)); + = ((Long)(i->Xin.Jmp.dstOffs)) - ((Long)(i->Xin.Jmp.hereOffs)); /* Stay sane .. */ vassert(-1000000LL <= deltaLL && deltaLL <= 1000000LL); Int delta = (Int)deltaLL; @@ -2515,13 +2515,13 @@ UInt emit_X86Instr ( /*MB_MOD*/Bool* is_profInc, the next instruction. Also, there are short and long encodings of this instruction. Try to use the short one if possible. */ if (delta >= -0x78 && delta <= 0x78) { - delta += 2; + delta -= 2; *p++ = toUChar(0xEB); *p++ = toUChar(delta & 0xFF); delta >>= 8; vassert(delta == 0 || delta == -1); } else { - delta += 5; + delta -= 5; *p++ = toUChar(0xE9); p = emit32(p, (UInt)delta); } |
|
From: Ivo R. <ir...@so...> - 2017-09-29 05:07:08
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=669027de9c44ef79ad0086c2da726ae8dd95b632 commit 669027de9c44ef79ad0086c2da726ae8dd95b632 Author: Ivo Raisr <iv...@iv...> Date: Fri Sep 29 07:06:03 2017 +0200 Fix initialization of inherited ATmpInfo in initAEnv(). Diff: --- VEX/priv/ir_opt.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/VEX/priv/ir_opt.c b/VEX/priv/ir_opt.c index 12cf16b..6939776 100644 --- a/VEX/priv/ir_opt.c +++ b/VEX/priv/ir_opt.c @@ -5289,8 +5289,15 @@ static void ppAEnv ( ATmpInfo* env ) static void initAEnv(ATmpInfo env[], ATmpInfo parent[]) { for (UInt i = 0; i < A_NENV; i++) { - env[i].bindee = (parent != NULL) ? parent[i].bindee : NULL; - env[i].binder = (parent != NULL) ? parent[i].binder : IRTemp_INVALID; + if (LIKELY(parent == NULL)) { + env[i].binder = IRTemp_INVALID; + env[i].bindee = NULL; + } else { + env[i].binder = parent[i].binder; + env[i].bindee = parent[i].bindee; + env[i].doesLoad = parent[i].doesLoad; + env[i].getInterval = parent[i].getInterval; + } } } |