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
(24) |
|
2
(50) |
3
(26) |
4
(17) |
5
(18) |
6
(20) |
7
(20) |
8
(16) |
|
9
(19) |
10
(11) |
11
(17) |
12
(17) |
13
(20) |
14
(18) |
15
(18) |
|
16
(15) |
17
(27) |
18
(22) |
19
(31) |
20
(19) |
21
(21) |
22
(14) |
|
23
(14) |
24
(18) |
25
(15) |
26
|
27
(1) |
28
|
29
(2) |
|
30
(16) |
|
|
|
|
|
|
|
From: <sv...@va...> - 2012-09-10 23:44:49
|
florian 2012-09-11 00:44:37 +0100 (Tue, 11 Sep 2012)
New Revision: 2523
Log:
s390: Remove insns for 128-bit BFP and merge with 32/64-bit. This
eliminates code duplication.
Modified files:
trunk/priv/host_s390_defs.c
trunk/priv/host_s390_defs.h
trunk/priv/host_s390_isel.c
Modified: trunk/priv/host_s390_defs.h (+50 -48)
===================================================================
--- trunk/priv/host_s390_defs.h 2012-09-10 04:09:04 +01:00 (rev 2522)
+++ trunk/priv/host_s390_defs.h 2012-09-11 00:44:37 -23:00 (rev 2523)
@@ -133,15 +133,11 @@
S390_INSN_HELPER_CALL,
S390_INSN_CAS, /* compare and swap */
S390_INSN_CDAS, /* compare double and swap */
- S390_INSN_BFP_BINOP, /* Binary floating point 32-bit / 64-bit */
+ S390_INSN_BFP_BINOP, /* Binary floating point */
S390_INSN_BFP_UNOP,
S390_INSN_BFP_TRIOP,
S390_INSN_BFP_COMPARE,
S390_INSN_BFP_CONVERT,
- S390_INSN_BFP128_BINOP, /* Binary floating point 128-bit */
- S390_INSN_BFP128_UNOP,
- S390_INSN_BFP128_COMPARE,
- S390_INSN_BFP128_CONVERT,
S390_INSN_MFENCE,
S390_INSN_GZERO, /* Assign zero to a guest register */
S390_INSN_GADD, /* Add a value to a guest register */
@@ -282,7 +278,11 @@
typedef struct {
s390_insn_tag tag;
- UChar size; /* size of the result in bytes */
+ /* Usually, this is the size of the result of an operation.
+ Exceptions are:
+ - for comparisons it is the size of the operand
+ */
+ UChar size;
union {
struct {
HReg dst;
@@ -380,52 +380,52 @@
HReg dst; /* if not INVALID_HREG, put return value here */
HChar *name; /* callee's name (for debugging) */
} helper_call;
+
+ /* Floating point instructions (including conversion to/from floating
+ point
+
+ 128-bit floating point requires register pairs. As the registers
+ in a register pair cannot be chosen independently it would suffice
+ to store only one register of the pair in order to represent it.
+ We chose not to do that as being explicit about all registers
+ helps with debugging and does not require special handling in
+ e.g. s390_insn_get_reg_usage, It'd be all to easy to forget about
+ the "other" register in a pair if it is implicit.
+
+ The convention for all fp s390_insn is that the _hi register will
+ be used to store the result / operand of a 32/64-bit operation.
+ The _hi register holds the 8 bytes of HIgher significance of a
+ 128-bit value (hence the suffix). However, it is the lower numbered
+ register of a register pair. POP says that the lower numbered
+ register is used to identify the pair in an insn encoding. So,
+ when an insn is emitted, only the _hi registers need to be looked
+ at. Nothing special is needed for 128-bit BFP which is nice.
+ */
+
+ /* There are currently no ternary 128-bit BFP operations. */
struct {
s390_bfp_triop_t tag;
s390_round_t rounding_mode;
- HReg dst; /* first operand */
- HReg op2; /* second operand */
- HReg op3; /* third operand */
+ HReg dst;
+ HReg op2;
+ HReg op3;
} bfp_triop;
struct {
s390_bfp_binop_t tag;
s390_round_t rounding_mode;
- HReg dst; /* left operand */
- HReg op2; /* right operand */
+ HReg dst_hi; /* 128-bit result high part; 32/64-bit result */
+ HReg dst_lo; /* 128-bit result low part */
+ HReg op2_hi; /* 128-bit operand high part; 32/64-bit opnd */
+ HReg op2_lo; /* 128-bit operand low part */
} bfp_binop;
struct {
- s390_bfp_unop_t tag;
- s390_round_t rounding_mode;
- HReg dst; /* result */
- HReg op; /* operand */
- } bfp_unop;
- struct {
- s390_conv_t tag;
- s390_round_t rounding_mode;
- HReg dst; /* result */
- HReg op; /* operand */
- } bfp_convert;
- struct {
- HReg dst; /* condition code in s390 encoding */
- HReg op1;
- HReg op2;
- } bfp_compare;
- struct {
- s390_bfp_binop_t tag;
- s390_round_t rounding_mode;
- HReg dst_hi; /* left operand; high part */
- HReg dst_lo; /* left operand; low part */
- HReg op2_hi; /* right operand; high part */
- HReg op2_lo; /* right operand; low part */
- } bfp128_binop;
- struct {
s390_bfp_unop_t tag;
s390_round_t rounding_mode;
- HReg dst_hi; /* result; high part */
- HReg dst_lo; /* result; low part */
- HReg op_hi; /* operand; high part */
- HReg op_lo; /* operand; low part */
- } bfp128_unop;
+ HReg dst_hi; /* 128-bit result high part; 32/64-bit result */
+ HReg dst_lo; /* 128-bit result low part */
+ HReg op_hi; /* 128-bit operand high part; 32/64-bit opnd */
+ HReg op_lo; /* 128-bit operand low part */
+ } bfp_unop;
struct {
s390_conv_t tag;
s390_round_t rounding_mode;
@@ -433,14 +433,16 @@
HReg dst_lo; /* 128-bit result low part */
HReg op_hi; /* 128-bit operand high part; 32/64-bit opnd */
HReg op_lo; /* 128-bit operand low part */
- } bfp128_convert;
+ } bfp_convert;
struct {
- HReg dst; /* condition code in s390 encoding */
- HReg op1_hi; /* left operand; high part */
- HReg op1_lo; /* left operand; low part */
- HReg op2_hi; /* right operand; high part */
- HReg op2_lo; /* right operand; low part */
- } bfp128_compare;
+ HReg dst; /* condition code in s390 encoding */
+ HReg op1_hi; /* 128-bit operand high part; 32/64-bit opnd */
+ HReg op1_lo; /* 128-bit operand low part */
+ HReg op2_hi; /* 128-bit operand high part; 32/64-bit opnd */
+ HReg op2_lo; /* 128-bit operand low part */
+ } bfp_compare;
+
+ /* Miscellaneous */
struct {
UInt offset;
} gzero;
Modified: trunk/priv/host_s390_defs.c (+210 -432)
===================================================================
--- trunk/priv/host_s390_defs.c 2012-09-10 04:09:04 +01:00 (rev 2522)
+++ trunk/priv/host_s390_defs.c 2012-09-11 00:44:37 -23:00 (rev 2523)
@@ -664,60 +664,44 @@
break;
case S390_INSN_BFP_BINOP:
- addHRegUse(u, HRmWrite, insn->variant.bfp_binop.dst);
- addHRegUse(u, HRmRead, insn->variant.bfp_binop.dst); /* left */
- addHRegUse(u, HRmRead, insn->variant.bfp_binop.op2); /* right */
+ addHRegUse(u, HRmWrite, insn->variant.bfp_binop.dst_hi);
+ addHRegUse(u, HRmRead, insn->variant.bfp_binop.dst_hi); /* left */
+ addHRegUse(u, HRmRead, insn->variant.bfp_binop.op2_hi); /* right */
+ if (insn->size == 16) {
+ addHRegUse(u, HRmWrite, insn->variant.bfp_binop.dst_lo);
+ addHRegUse(u, HRmRead, insn->variant.bfp_binop.dst_lo); /* left */
+ addHRegUse(u, HRmRead, insn->variant.bfp_binop.op2_lo); /* right */
+ }
break;
case S390_INSN_BFP_UNOP:
- addHRegUse(u, HRmWrite, insn->variant.bfp_unop.dst);
- addHRegUse(u, HRmRead, insn->variant.bfp_unop.op); /* operand */
+ addHRegUse(u, HRmWrite, insn->variant.bfp_unop.dst_hi);
+ addHRegUse(u, HRmRead, insn->variant.bfp_unop.op_hi); /* operand */
+ if (insn->size == 16) {
+ addHRegUse(u, HRmWrite, insn->variant.bfp_unop.dst_lo);
+ addHRegUse(u, HRmRead, insn->variant.bfp_unop.op_lo); /* operand */
+ }
break;
case S390_INSN_BFP_COMPARE:
addHRegUse(u, HRmWrite, insn->variant.bfp_compare.dst);
- addHRegUse(u, HRmRead, insn->variant.bfp_compare.op1); /* left */
- addHRegUse(u, HRmRead, insn->variant.bfp_compare.op2); /* right */
+ addHRegUse(u, HRmRead, insn->variant.bfp_compare.op1_hi); /* left */
+ addHRegUse(u, HRmRead, insn->variant.bfp_compare.op2_hi); /* right */
+ if (insn->size == 16) {
+ addHRegUse(u, HRmRead, insn->variant.bfp_compare.op1_lo); /* left */
+ addHRegUse(u, HRmRead, insn->variant.bfp_compare.op2_lo); /* right */
+ }
break;
case S390_INSN_BFP_CONVERT:
- addHRegUse(u, HRmWrite, insn->variant.bfp_convert.dst);
- addHRegUse(u, HRmRead, insn->variant.bfp_convert.op); /* operand */
+ addHRegUse(u, HRmWrite, insn->variant.bfp_convert.dst_hi);
+ if (insn->variant.bfp_convert.dst_lo != INVALID_HREG)
+ addHRegUse(u, HRmWrite, insn->variant.bfp_convert.dst_lo);
+ addHRegUse(u, HRmRead, insn->variant.bfp_convert.op_hi);
+ if (insn->variant.bfp_convert.op_lo != INVALID_HREG)
+ addHRegUse(u, HRmRead, insn->variant.bfp_convert.op_lo);
break;
- case S390_INSN_BFP128_BINOP:
- addHRegUse(u, HRmWrite, insn->variant.bfp128_binop.dst_hi);
- addHRegUse(u, HRmWrite, insn->variant.bfp128_binop.dst_lo);
- addHRegUse(u, HRmRead, insn->variant.bfp128_binop.dst_hi); /* left */
- addHRegUse(u, HRmRead, insn->variant.bfp128_binop.dst_lo); /* left */
- addHRegUse(u, HRmRead, insn->variant.bfp128_binop.op2_hi); /* right */
- addHRegUse(u, HRmRead, insn->variant.bfp128_binop.op2_lo); /* right */
- break;
-
- case S390_INSN_BFP128_COMPARE:
- addHRegUse(u, HRmWrite, insn->variant.bfp128_compare.dst);
- addHRegUse(u, HRmRead, insn->variant.bfp128_compare.op1_hi); /* left */
- addHRegUse(u, HRmRead, insn->variant.bfp128_compare.op1_lo); /* left */
- addHRegUse(u, HRmRead, insn->variant.bfp128_compare.op2_hi); /* right */
- addHRegUse(u, HRmRead, insn->variant.bfp128_compare.op2_lo); /* right */
- break;
-
- case S390_INSN_BFP128_UNOP:
- addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_hi);
- addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_lo);
- addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_hi);
- addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_lo);
- break;
-
- case S390_INSN_BFP128_CONVERT:
- addHRegUse(u, HRmWrite, insn->variant.bfp128_convert.dst_hi);
- if (insn->variant.bfp128_convert.dst_lo != INVALID_HREG)
- addHRegUse(u, HRmWrite, insn->variant.bfp128_convert.dst_lo);
- addHRegUse(u, HRmRead, insn->variant.bfp128_convert.op_hi);
- if (insn->variant.bfp128_convert.op_lo != INVALID_HREG)
- addHRegUse(u, HRmRead, insn->variant.bfp128_convert.op_lo);
- break;
-
case S390_INSN_MFENCE:
case S390_INSN_GZERO:
case S390_INSN_GADD:
@@ -880,82 +864,68 @@
break;
case S390_INSN_BFP_TRIOP:
- insn->variant.bfp_triop.dst = lookupHRegRemap(m, insn->variant.bfp_triop.dst);
- insn->variant.bfp_triop.op2 = lookupHRegRemap(m, insn->variant.bfp_triop.op2);
- insn->variant.bfp_triop.op3 = lookupHRegRemap(m, insn->variant.bfp_triop.op3);
+ insn->variant.bfp_triop.dst =
+ lookupHRegRemap(m, insn->variant.bfp_triop.dst);
+ insn->variant.bfp_triop.op2 =
+ lookupHRegRemap(m, insn->variant.bfp_triop.op2);
+ insn->variant.bfp_triop.op3 =
+ lookupHRegRemap(m, insn->variant.bfp_triop.op3);
break;
case S390_INSN_BFP_BINOP:
- insn->variant.bfp_binop.dst = lookupHRegRemap(m, insn->variant.bfp_binop.dst);
- insn->variant.bfp_binop.op2 = lookupHRegRemap(m, insn->variant.bfp_binop.op2);
+ insn->variant.bfp_binop.dst_hi =
+ lookupHRegRemap(m, insn->variant.bfp_binop.dst_hi);
+ insn->variant.bfp_binop.op2_hi =
+ lookupHRegRemap(m, insn->variant.bfp_binop.op2_hi);
+ if (insn->size == 16) {
+ insn->variant.bfp_unop.dst_lo =
+ lookupHRegRemap(m, insn->variant.bfp_binop.dst_lo);
+ insn->variant.bfp_unop.op_lo =
+ lookupHRegRemap(m, insn->variant.bfp_binop.op2_lo);
+ }
break;
case S390_INSN_BFP_UNOP:
- insn->variant.bfp_unop.dst = lookupHRegRemap(m, insn->variant.bfp_unop.dst);
- insn->variant.bfp_unop.op = lookupHRegRemap(m, insn->variant.bfp_unop.op);
+ insn->variant.bfp_unop.dst_hi =
+ lookupHRegRemap(m, insn->variant.bfp_unop.dst_hi);
+ insn->variant.bfp_unop.op_hi =
+ lookupHRegRemap(m, insn->variant.bfp_unop.op_hi);
+ if (insn->size == 16) {
+ insn->variant.bfp_unop.dst_lo =
+ lookupHRegRemap(m, insn->variant.bfp_unop.dst_lo);
+ insn->variant.bfp_unop.op_lo =
+ lookupHRegRemap(m, insn->variant.bfp_unop.op_lo);
+ }
break;
case S390_INSN_BFP_COMPARE:
- insn->variant.bfp_compare.dst = lookupHRegRemap(m, insn->variant.bfp_compare.dst);
- insn->variant.bfp_compare.op1 = lookupHRegRemap(m, insn->variant.bfp_compare.op1);
- insn->variant.bfp_compare.op2 = lookupHRegRemap(m, insn->variant.bfp_compare.op2);
+ insn->variant.bfp_compare.dst =
+ lookupHRegRemap(m, insn->variant.bfp_compare.dst);
+ insn->variant.bfp_compare.op1_hi =
+ lookupHRegRemap(m, insn->variant.bfp_compare.op1_hi);
+ insn->variant.bfp_compare.op2_hi =
+ lookupHRegRemap(m, insn->variant.bfp_compare.op2_hi);
+ if (insn->size == 16) {
+ insn->variant.bfp_compare.op1_lo =
+ lookupHRegRemap(m, insn->variant.bfp_compare.op1_lo);
+ insn->variant.bfp_compare.op2_lo =
+ lookupHRegRemap(m, insn->variant.bfp_compare.op2_lo);
+ }
break;
case S390_INSN_BFP_CONVERT:
- insn->variant.bfp_convert.dst =
- lookupHRegRemap(m, insn->variant.bfp_convert.dst);
- insn->variant.bfp_convert.op =
- lookupHRegRemap(m, insn->variant.bfp_convert.op);
+ insn->variant.bfp_convert.dst_hi =
+ lookupHRegRemap(m, insn->variant.bfp_convert.dst_hi);
+ if (insn->variant.bfp_convert.dst_lo != INVALID_HREG)
+ insn->variant.bfp_convert.dst_lo =
+ lookupHRegRemap(m, insn->variant.bfp_convert.dst_lo);
+ insn->variant.bfp_convert.op_hi =
+ lookupHRegRemap(m, insn->variant.bfp_convert.op_hi);
+ if (insn->variant.bfp_convert.op_lo != INVALID_HREG)
+ insn->variant.bfp_convert.op_lo =
+ lookupHRegRemap(m, insn->variant.bfp_convert.op_lo);
break;
- case S390_INSN_BFP128_BINOP:
- insn->variant.bfp128_binop.dst_hi =
- lookupHRegRemap(m, insn->variant.bfp128_binop.dst_hi);
- insn->variant.bfp128_binop.dst_lo =
- lookupHRegRemap(m, insn->variant.bfp128_binop.dst_lo);
- insn->variant.bfp128_binop.op2_hi =
- lookupHRegRemap(m, insn->variant.bfp128_binop.op2_hi);
- insn->variant.bfp128_binop.op2_lo =
- lookupHRegRemap(m, insn->variant.bfp128_binop.op2_lo);
- break;
-
- case S390_INSN_BFP128_COMPARE:
- insn->variant.bfp128_compare.dst =
- lookupHRegRemap(m, insn->variant.bfp128_compare.dst);
- insn->variant.bfp128_compare.op1_hi =
- lookupHRegRemap(m, insn->variant.bfp128_compare.op1_hi);
- insn->variant.bfp128_compare.op1_lo =
- lookupHRegRemap(m, insn->variant.bfp128_compare.op1_lo);
- insn->variant.bfp128_compare.op2_hi =
- lookupHRegRemap(m, insn->variant.bfp128_compare.op2_hi);
- insn->variant.bfp128_compare.op2_lo =
- lookupHRegRemap(m, insn->variant.bfp128_compare.op2_lo);
- break;
-
- case S390_INSN_BFP128_UNOP:
- insn->variant.bfp128_unop.dst_hi =
- lookupHRegRemap(m, insn->variant.bfp128_unop.dst_hi);
- insn->variant.bfp128_unop.dst_lo =
- lookupHRegRemap(m, insn->variant.bfp128_unop.dst_lo);
- insn->variant.bfp128_unop.op_hi =
- lookupHRegRemap(m, insn->variant.bfp128_unop.op_hi);
- insn->variant.bfp128_unop.op_lo =
- lookupHRegRemap(m, insn->variant.bfp128_unop.op_lo);
- break;
-
- case S390_INSN_BFP128_CONVERT:
- insn->variant.bfp128_convert.dst_hi =
- lookupHRegRemap(m, insn->variant.bfp128_convert.dst_hi);
- if (insn->variant.bfp128_convert.dst_lo != INVALID_HREG)
- insn->variant.bfp128_convert.dst_lo =
- lookupHRegRemap(m, insn->variant.bfp128_convert.dst_lo);
- insn->variant.bfp128_convert.op_hi =
- lookupHRegRemap(m, insn->variant.bfp128_convert.op_hi);
- if (insn->variant.bfp128_convert.op_lo != INVALID_HREG)
- insn->variant.bfp128_convert.op_lo =
- lookupHRegRemap(m, insn->variant.bfp128_convert.op_lo);
- break;
-
case S390_INSN_MFENCE:
case S390_INSN_GZERO:
case S390_INSN_GADD:
@@ -4686,6 +4656,8 @@
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+ vassert(size == 4 || size == 8);
+
insn->tag = S390_INSN_BFP_TRIOP;
insn->size = size;
insn->variant.bfp_triop.tag = tag;
@@ -4704,11 +4676,15 @@
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+ vassert(size == 4 || size == 8);
+
insn->tag = S390_INSN_BFP_BINOP;
insn->size = size;
insn->variant.bfp_binop.tag = tag;
- insn->variant.bfp_binop.dst = dst;
- insn->variant.bfp_binop.op2 = op2;
+ insn->variant.bfp_binop.dst_hi = dst;
+ insn->variant.bfp_binop.op2_hi = op2;
+ insn->variant.bfp_binop.dst_lo = INVALID_HREG;
+ insn->variant.bfp_binop.op2_lo = INVALID_HREG;
insn->variant.bfp_binop.rounding_mode = rounding_mode;
return insn;
@@ -4721,11 +4697,15 @@
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+ vassert(size == 4 || size == 8);
+
insn->tag = S390_INSN_BFP_UNOP;
insn->size = size;
insn->variant.bfp_unop.tag = tag;
- insn->variant.bfp_unop.dst = dst;
- insn->variant.bfp_unop.op = op;
+ insn->variant.bfp_unop.dst_hi = dst;
+ insn->variant.bfp_unop.op_hi = op;
+ insn->variant.bfp_unop.dst_lo = INVALID_HREG;
+ insn->variant.bfp_unop.op_lo = INVALID_HREG;
insn->variant.bfp_unop.rounding_mode = rounding_mode;
return insn;
@@ -4742,8 +4722,10 @@
insn->tag = S390_INSN_BFP_COMPARE;
insn->size = size;
insn->variant.bfp_compare.dst = dst;
- insn->variant.bfp_compare.op1 = op1;
- insn->variant.bfp_compare.op2 = op2;
+ insn->variant.bfp_compare.op1_hi = op1;
+ insn->variant.bfp_compare.op2_hi = op2;
+ insn->variant.bfp_compare.op1_lo = INVALID_HREG;
+ insn->variant.bfp_compare.op2_lo = INVALID_HREG;
return insn;
}
@@ -4755,17 +4737,36 @@
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+ vassert(size == 4 || size == 8);
+
insn->tag = S390_INSN_BFP_CONVERT;
insn->size = size;
insn->variant.bfp_convert.tag = tag;
- insn->variant.bfp_convert.dst = dst;
- insn->variant.bfp_convert.op = op;
+ insn->variant.bfp_convert.dst_hi = dst;
+ insn->variant.bfp_convert.op_hi = op;
+ insn->variant.bfp_convert.dst_lo = INVALID_HREG;
+ insn->variant.bfp_convert.op_lo = INVALID_HREG;
insn->variant.bfp_convert.rounding_mode = rounding_mode;
return insn;
}
+/* Check validity of a register pair for 128-bit BFP. Valid register
+ pairs are (0,2), (1,3), (4, 6), (5, 7), (8, 10), (9, 11), (12, 14),
+ and (13, 15). */
+static Bool
+is_valid_bfp128_regpair(HReg hi, HReg lo)
+{
+ UInt hi_regno = hregNumber(hi);
+ UInt lo_regno = hregNumber(lo);
+
+ if (lo_regno != hi_regno + 2) return False;
+ if ((hi_regno & 0x2) != 0) return False;
+
+ return True;
+}
+
s390_insn *
s390_insn_bfp128_binop(UChar size, s390_bfp_binop_t tag, HReg dst_hi,
HReg dst_lo, HReg op2_hi, HReg op2_lo,
@@ -4773,14 +4774,18 @@
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
- insn->tag = S390_INSN_BFP128_BINOP;
+ vassert(size == 16);
+ vassert(is_valid_bfp128_regpair(dst_hi, dst_lo));
+ vassert(is_valid_bfp128_regpair(op2_hi, op2_lo));
+
+ insn->tag = S390_INSN_BFP_BINOP;
insn->size = size;
- insn->variant.bfp128_binop.tag = tag;
- insn->variant.bfp128_binop.dst_hi = dst_hi;
- insn->variant.bfp128_binop.dst_lo = dst_lo;
- insn->variant.bfp128_binop.op2_hi = op2_hi;
- insn->variant.bfp128_binop.op2_lo = op2_lo;
- insn->variant.bfp128_binop.rounding_mode = rounding_mode;
+ insn->variant.bfp_binop.tag = tag;
+ insn->variant.bfp_binop.dst_hi = dst_hi;
+ insn->variant.bfp_binop.dst_lo = dst_lo;
+ insn->variant.bfp_binop.op2_hi = op2_hi;
+ insn->variant.bfp_binop.op2_lo = op2_lo;
+ insn->variant.bfp_binop.rounding_mode = rounding_mode;
return insn;
}
@@ -4793,14 +4798,18 @@
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
- insn->tag = S390_INSN_BFP128_UNOP;
+ vassert(size == 16);
+ vassert(is_valid_bfp128_regpair(dst_hi, dst_lo));
+ vassert(is_valid_bfp128_regpair(op_hi, op_lo));
+
+ insn->tag = S390_INSN_BFP_UNOP;
insn->size = size;
- insn->variant.bfp128_unop.tag = tag;
- insn->variant.bfp128_unop.dst_hi = dst_hi;
- insn->variant.bfp128_unop.dst_lo = dst_lo;
- insn->variant.bfp128_unop.op_hi = op_hi;
- insn->variant.bfp128_unop.op_lo = op_lo;
- insn->variant.bfp128_unop.rounding_mode = rounding_mode;
+ insn->variant.bfp_unop.tag = tag;
+ insn->variant.bfp_unop.dst_hi = dst_hi;
+ insn->variant.bfp_unop.dst_lo = dst_lo;
+ insn->variant.bfp_unop.op_hi = op_hi;
+ insn->variant.bfp_unop.op_lo = op_lo;
+ insn->variant.bfp_unop.rounding_mode = rounding_mode;
return insn;
}
@@ -4812,13 +4821,17 @@
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
- insn->tag = S390_INSN_BFP128_COMPARE;
+ vassert(size == 16);
+ vassert(is_valid_bfp128_regpair(op1_hi, op1_lo));
+ vassert(is_valid_bfp128_regpair(op2_hi, op2_lo));
+
+ insn->tag = S390_INSN_BFP_COMPARE;
insn->size = size;
- insn->variant.bfp128_compare.dst = dst;
- insn->variant.bfp128_compare.op1_hi = op1_hi;
- insn->variant.bfp128_compare.op1_lo = op1_lo;
- insn->variant.bfp128_compare.op2_hi = op2_hi;
- insn->variant.bfp128_compare.op2_lo = op2_lo;
+ insn->variant.bfp_compare.dst = dst;
+ insn->variant.bfp_compare.op1_hi = op1_hi;
+ insn->variant.bfp_compare.op1_lo = op1_lo;
+ insn->variant.bfp_compare.op2_hi = op2_hi;
+ insn->variant.bfp_compare.op2_lo = op2_lo;
return insn;
}
@@ -4831,14 +4844,24 @@
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
- insn->tag = S390_INSN_BFP128_CONVERT;
+ if (size == 16) {
+ /* From smaller size to 16 bytes */
+ vassert(is_valid_bfp128_regpair(dst_hi, dst_lo));
+ vassert(op_lo == INVALID_HREG);
+ } else {
+ /* From 16 bytes to smaller size */
+ vassert(is_valid_bfp128_regpair(op_hi, op_lo));
+ vassert(dst_lo == INVALID_HREG);
+ }
+
+ insn->tag = S390_INSN_BFP_CONVERT;
insn->size = size;
- insn->variant.bfp128_convert.tag = tag;
- insn->variant.bfp128_convert.dst_hi = dst_hi;
- insn->variant.bfp128_convert.dst_lo = dst_lo;
- insn->variant.bfp128_convert.op_hi = op_hi;
- insn->variant.bfp128_convert.op_lo = op_lo;
- insn->variant.bfp128_convert.rounding_mode = rounding_mode;
+ insn->variant.bfp_convert.tag = tag;
+ insn->variant.bfp_convert.dst_hi = dst_hi;
+ insn->variant.bfp_convert.dst_lo = dst_lo;
+ insn->variant.bfp_convert.op_hi = op_hi;
+ insn->variant.bfp_convert.op_lo = op_lo;
+ insn->variant.bfp_convert.rounding_mode = rounding_mode;
return insn;
}
@@ -5337,13 +5360,14 @@
default: goto fail;
}
s390_sprintf(buf, "%M %R,%R", op,
- insn->variant.bfp_binop.dst /* op1 same as dst */,
- insn->variant.bfp_binop.op2);
+ insn->variant.bfp_binop.dst_hi /* op1 same as dst */,
+ insn->variant.bfp_binop.op2_hi);
break;
case S390_INSN_BFP_COMPARE:
s390_sprintf(buf, "%M %R,%R,%R", "v-fcmp", insn->variant.bfp_compare.dst,
- insn->variant.bfp_compare.op1, insn->variant.bfp_compare.op2);
+ insn->variant.bfp_compare.op1_hi,
+ insn->variant.bfp_compare.op2_hi);
break;
case S390_INSN_BFP_UNOP:
@@ -5354,8 +5378,8 @@
case S390_BFP_SQRT: op = "v-fsqrt"; break;
default: goto fail;
}
- s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp_unop.dst,
- insn->variant.bfp_unop.op);
+ s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp_unop.dst_hi,
+ insn->variant.bfp_unop.op_hi);
break;
case S390_INSN_BFP_CONVERT:
@@ -5392,65 +5416,10 @@
case S390_BFP_F128_TO_F64: op = "v-f2f"; break;
default: goto fail;
}
- s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp_convert.dst,
- insn->variant.bfp_convert.op);
+ s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp_convert.dst_hi,
+ insn->variant.bfp_convert.op_hi);
break;
- case S390_INSN_BFP128_BINOP:
- switch (insn->variant.bfp128_binop.tag) {
- case S390_BFP_ADD: op = "v-fadd"; break;
- case S390_BFP_SUB: op = "v-fsub"; break;
- case S390_BFP_MUL: op = "v-fmul"; break;
- case S390_BFP_DIV: op = "v-fdiv"; break;
- default: goto fail;
- }
- /* Only write the register that identifies the register pair */
- s390_sprintf(buf, "%M %R,%R", op,
- insn->variant.bfp128_binop.dst_hi /* op1 same as dst */,
- insn->variant.bfp128_binop.op2_hi);
- break;
-
- case S390_INSN_BFP128_COMPARE:
- /* Only write the register that identifies the register pair */
- s390_sprintf(buf, "%M %R,%R,%R", "v-fcmp", insn->variant.bfp128_compare.dst,
- insn->variant.bfp128_compare.op1_hi,
- insn->variant.bfp128_compare.op2_hi);
- break;
-
- case S390_INSN_BFP128_UNOP:
- switch (insn->variant.bfp128_unop.tag) {
- case S390_BFP_ABS: op = "v-fabs"; break;
- case S390_BFP_NABS: op = "v-fnabs"; break;
- case S390_BFP_NEG: op = "v-fneg"; break;
- case S390_BFP_SQRT: op = "v-fsqrt"; break;
- default: goto fail;
- }
- /* Only write the register that identifies the register pair */
- s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp128_unop.dst_hi,
- insn->variant.bfp128_unop.op_hi);
- break;
-
- case S390_INSN_BFP128_CONVERT:
- switch (insn->variant.bfp128_convert.tag) {
- case S390_BFP_I32_TO_F128:
- case S390_BFP_I64_TO_F128: op = "v-i2f"; break;
- case S390_BFP_U32_TO_F128:
- case S390_BFP_U64_TO_F128: op = "v-u2f"; break;
- case S390_BFP_F128_TO_I32:
- case S390_BFP_F128_TO_I64: op = "v-f2i"; break;
- case S390_BFP_F128_TO_U32:
- case S390_BFP_F128_TO_U64: op = "v-f2u"; break;
- case S390_BFP_F32_TO_F128:
- case S390_BFP_F64_TO_F128:
- case S390_BFP_F128_TO_F32:
- case S390_BFP_F128_TO_F64: op = "v-f2f"; break;
- default: goto fail;
- }
- /* Only write the register that identifies the register pair */
- s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp128_convert.dst_hi,
- insn->variant.bfp128_convert.op_hi);
- break;
-
case S390_INSN_MFENCE:
s390_sprintf(buf, "%M", "v-mfence");
return buf; /* avoid printing "size = ..." which is meaningless */
@@ -5534,8 +5503,8 @@
goto common;
}
- case S390_INSN_BFP_UNOP:
- switch (insn->variant.bfp_unop.tag) {
+ case S390_INSN_BFP_CONVERT:
+ switch (insn->variant.bfp_convert.tag) {
case S390_BFP_I32_TO_F32:
case S390_BFP_I32_TO_F64:
case S390_BFP_I32_TO_F128:
@@ -5570,27 +5539,6 @@
goto common;
}
- case S390_INSN_BFP128_UNOP:
- goto common;
-
- case S390_INSN_BFP128_CONVERT:
- switch (insn->variant.bfp128_convert.tag) {
- case S390_BFP_I32_TO_F128:
- case S390_BFP_U32_TO_F128:
- case S390_BFP_F32_TO_F128: p += vex_sprintf(p, "4 -> "); goto common;
- case S390_BFP_I64_TO_F128:
- case S390_BFP_U64_TO_F128:
- case S390_BFP_F64_TO_F128: p += vex_sprintf(p, "8 -> "); goto common;
- case S390_BFP_F128_TO_I32:
- case S390_BFP_F128_TO_I64:
- case S390_BFP_F128_TO_U32:
- case S390_BFP_F128_TO_U64:
- case S390_BFP_F128_TO_F32:
- case S390_BFP_F128_TO_F64: p += vex_sprintf(p, "16 -> "); goto common;
- default:
- goto common;
- }
-
default:
goto common;
}
@@ -7389,8 +7337,8 @@
static UChar *
s390_insn_bfp_binop_emit(UChar *buf, const s390_insn *insn)
{
- UInt r1 = hregNumber(insn->variant.bfp_binop.dst);
- UInt r2 = hregNumber(insn->variant.bfp_binop.op2);
+ UInt r1 = hregNumber(insn->variant.bfp_binop.dst_hi);
+ UInt r2 = hregNumber(insn->variant.bfp_binop.op2_hi);
s390_round_t rounding_mode = insn->variant.bfp_binop.rounding_mode;
if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
@@ -7418,6 +7366,16 @@
}
break;
+ case 16:
+ switch (insn->variant.bfp_binop.tag) {
+ case S390_BFP_ADD: buf = s390_emit_AXBR(buf, r1, r2); break;
+ case S390_BFP_SUB: buf = s390_emit_SXBR(buf, r1, r2); break;
+ case S390_BFP_MUL: buf = s390_emit_MXBR(buf, r1, r2); break;
+ case S390_BFP_DIV: buf = s390_emit_DXBR(buf, r1, r2); break;
+ default: goto fail;
+ }
+ break;
+
default: goto fail;
}
@@ -7436,8 +7394,8 @@
static UChar *
s390_insn_bfp_unop_emit(UChar *buf, const s390_insn *insn)
{
- UInt r1 = hregNumber(insn->variant.bfp_unop.dst);
- UInt r2 = hregNumber(insn->variant.bfp_unop.op);
+ UInt r1 = hregNumber(insn->variant.bfp_unop.dst_hi);
+ UInt r2 = hregNumber(insn->variant.bfp_unop.op_hi);
s390_round_t rounding_mode = insn->variant.bfp_unop.rounding_mode;
/* For all other insns if a special rounding mode is requested,
@@ -7501,26 +7459,36 @@
static UChar *
s390_insn_bfp_convert_emit(UChar *buf, const s390_insn *insn)
{
- UInt r1 = hregNumber(insn->variant.bfp_convert.dst);
- UInt r2 = hregNumber(insn->variant.bfp_convert.op);
+ UInt r1 = hregNumber(insn->variant.bfp_convert.dst_hi);
+ UInt r2 = hregNumber(insn->variant.bfp_convert.op_hi);
s390_round_t rounding_mode = insn->variant.bfp_convert.rounding_mode;
s390_round_t m3 = rounding_mode;
- /* The "convert to fixed" instructions have a field for the rounding
- mode and no FPC modification is necessary. So we handle them
- upfront. */
switch (insn->variant.bfp_convert.tag) {
+ /* Convert to fixed */
case S390_BFP_F32_TO_I32: return s390_emit_CFEBR(buf, m3, r1, r2);
case S390_BFP_F64_TO_I32: return s390_emit_CFDBR(buf, m3, r1, r2);
+ case S390_BFP_F128_TO_I32: return s390_emit_CFXBR(buf, m3, r1, r2);
case S390_BFP_F32_TO_I64: return s390_emit_CGEBR(buf, m3, r1, r2);
case S390_BFP_F64_TO_I64: return s390_emit_CGDBR(buf, m3, r1, r2);
+ case S390_BFP_F128_TO_I64: return s390_emit_CGXBR(buf, m3, r1, r2);
- /* We leave m4 as 0 - as gcc */
+ /* Convert to logical */
+ /* We leave m4 as 0 - as gcc */
case S390_BFP_F32_TO_U32: return s390_emit_CLFEBR(buf, m3, 0, r1, r2);
case S390_BFP_F64_TO_U32: return s390_emit_CLFDBR(buf, m3, 0, r1, r2);
+ case S390_BFP_F128_TO_U32: return s390_emit_CLFXBR(buf, m3, 0, r1, r2);
case S390_BFP_F32_TO_U64: return s390_emit_CLGEBR(buf, m3, 0, r1, r2);
case S390_BFP_F64_TO_U64: return s390_emit_CLGDBR(buf, m3, 0, r1, r2);
+ case S390_BFP_F128_TO_U64: return s390_emit_CLGXBR(buf, m3, 0, r1, r2);
+ /* Conversion to 128-bit never requires a rounding mode */
+ case S390_BFP_I32_TO_F128: return s390_emit_CXFBRA(buf, 0, 0, r1, r2);
+ case S390_BFP_I64_TO_F128: return s390_emit_CXGBRA(buf, 0, 0, r1, r2);
+ case S390_BFP_U32_TO_F128: return s390_emit_CXLFBR(buf, 0, 0, r1, r2);
+ case S390_BFP_U64_TO_F128: return s390_emit_CXLGBR(buf, 0, 0, r1, r2);
+ case S390_BFP_F32_TO_F128: return s390_emit_LXEBR(buf, r1, r2);
+ case S390_BFP_F64_TO_F128: return s390_emit_LXDBR(buf, r1, r2);
default: break;
}
@@ -7551,6 +7519,9 @@
case S390_BFP_F64_TO_F32: buf = s390_emit_LEDBRA(buf, 0, 0, r1, r2); break;
case S390_BFP_F64_TO_F128: buf = s390_emit_LXDBR(buf, r1, r2); break;
+ case S390_BFP_F128_TO_F32: buf = s390_emit_LEXBRA(buf, 0, 0, r1, r2); break;
+ case S390_BFP_F128_TO_F64: buf = s390_emit_LDXBRA(buf, 0, 0, r1, r2); break;
+
default: goto fail;
}
@@ -7570,18 +7541,13 @@
s390_insn_bfp_compare_emit(UChar *buf, const s390_insn *insn)
{
UInt dst = hregNumber(insn->variant.bfp_compare.dst);
- UInt r1 = hregNumber(insn->variant.bfp_compare.op1);
- UInt r2 = hregNumber(insn->variant.bfp_compare.op2);
+ UInt r1 = hregNumber(insn->variant.bfp_compare.op1_hi);
+ UInt r2 = hregNumber(insn->variant.bfp_compare.op2_hi);
switch (insn->size) {
- case 4:
- buf = s390_emit_CEBR(buf, r1, r2);
- break;
-
- case 8:
- buf = s390_emit_CDBR(buf, r1, r2);
- break;
-
+ case 4: buf = s390_emit_CEBR(buf, r1, r2); break;
+ case 8: buf = s390_emit_CDBR(buf, r1, r2); break;
+ case 16: buf = s390_emit_CXBR(buf, r1, r2); break;
default: goto fail;
}
@@ -7593,178 +7559,6 @@
static UChar *
-s390_insn_bfp128_binop_emit(UChar *buf, const s390_insn *insn)
-{
- UInt r1_hi = hregNumber(insn->variant.bfp128_binop.dst_hi);
- UInt r1_lo = hregNumber(insn->variant.bfp128_binop.dst_lo);
- UInt r2_hi = hregNumber(insn->variant.bfp128_binop.op2_hi);
- UInt r2_lo = hregNumber(insn->variant.bfp128_binop.op2_lo);
- s390_round_t rounding_mode = insn->variant.bfp_binop.rounding_mode;
-
- /* Paranoia */
- vassert(insn->size == 16);
- vassert(r1_lo == r1_hi + 2);
- vassert(r2_lo == r2_hi + 2);
- vassert((r1_hi & 0x2) == 0);
- vassert((r2_hi & 0x2) == 0);
-
- if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
- buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
- }
-
- switch (insn->variant.bfp128_binop.tag) {
- case S390_BFP_ADD: buf = s390_emit_AXBR(buf, r1_hi, r2_hi); break;
- case S390_BFP_SUB: buf = s390_emit_SXBR(buf, r1_hi, r2_hi); break;
- case S390_BFP_MUL: buf = s390_emit_MXBR(buf, r1_hi, r2_hi); break;
- case S390_BFP_DIV: buf = s390_emit_DXBR(buf, r1_hi, r2_hi); break;
- default: goto fail;
- }
-
- if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
- /* Restore FPC register from guest state */
- buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
- S390X_GUEST_OFFSET(guest_fpc)); // fpc = guest_fpc
- }
- return buf;
-
- fail:
- vpanic("s390_insn_bfp128_binop_emit");
-}
-
-
-static UChar *
-s390_insn_bfp128_compare_emit(UChar *buf, const s390_insn *insn)
-{
- UInt dst = hregNumber(insn->variant.bfp128_compare.dst);
- UInt r1_hi = hregNumber(insn->variant.bfp128_compare.op1_hi);
- UInt r1_lo = hregNumber(insn->variant.bfp128_compare.op1_lo);
- UInt r2_hi = hregNumber(insn->variant.bfp128_compare.op2_hi);
- UInt r2_lo = hregNumber(insn->variant.bfp128_compare.op2_lo);
-
- /* Paranoia */
- vassert(insn->size == 16);
- vassert(r1_lo == r1_hi + 2);
- vassert(r2_lo == r2_hi + 2);
- vassert((r1_hi & 0x2) == 0);
- vassert((r2_hi & 0x2) == 0);
-
- buf = s390_emit_CXBR(buf, r1_hi, r2_hi);
-
- /* Load condition code into DST */
- return s390_emit_load_cc(buf, dst);
-}
-
-
-static UChar *
-s390_insn_bfp128_unop_emit(UChar *buf, const s390_insn *insn)
-{
- UInt r1_hi = hregNumber(insn->variant.bfp128_unop.dst_hi);
- UInt r1_lo = hregNumber(insn->variant.bfp128_unop.dst_lo);
- UInt r2_hi = hregNumber(insn->variant.bfp128_unop.op_hi);
- UInt r2_lo = hregNumber(insn->variant.bfp128_unop.op_lo);
- s390_round_t rounding_mode = insn->variant.bfp_binop.rounding_mode;
-
- /* Paranoia */
- vassert(insn->size == 16);
- vassert(r1_lo == r1_hi + 2);
- vassert(r2_lo == r2_hi + 2);
- vassert((r1_hi & 0x2) == 0);
- vassert((r2_hi & 0x2) == 0);
-
- if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
- buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
- }
-
- switch (insn->variant.bfp128_unop.tag) {
- case S390_BFP_ABS: buf = s390_emit_LPXBR(buf, r1_hi, r2_hi); break;
- case S390_BFP_NABS: buf = s390_emit_LNXBR(buf, r1_hi, r2_hi); break;
- case S390_BFP_NEG: buf = s390_emit_LCXBR(buf, r1_hi, r2_hi); break;
- case S390_BFP_SQRT: buf = s390_emit_SQXBR(buf, r1_hi, r2_hi); break;
- default: goto fail;
- }
-
- if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
- /* Restore FPC register from guest state */
- buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
- S390X_GUEST_OFFSET(guest_fpc)); // fpc = guest_fpc
- }
- return buf;
-
- fail:
- vpanic("s390_insn_bfp128_unop_emit");
-}
-
-
-static UChar *
-s390_insn_bfp128_convert_emit(UChar *buf, const s390_insn *insn)
-{
- UInt r1_hi = hregNumber(insn->variant.bfp128_convert.dst_hi);
- UInt r1_lo = hregNumber(insn->variant.bfp128_convert.dst_lo);
- UInt r2_hi = hregNumber(insn->variant.bfp128_convert.op_hi);
- UInt r2_lo = hregNumber(insn->variant.bfp128_convert.op_lo);
- s390_round_t rounding_mode = insn->variant.bfp128_convert.rounding_mode;
-
- /* Paranoia */
- vassert(r1_lo == hregNumber(INVALID_HREG) || r1_lo == r1_hi + 2);
- vassert(r2_lo == hregNumber(INVALID_HREG) || r2_lo == r2_hi + 2);
- vassert(r1_lo == hregNumber(INVALID_HREG) || (r1_hi & 0x2) == 0);
- vassert(r2_lo == hregNumber(INVALID_HREG) || (r2_hi & 0x2) == 0);
-
- switch (insn->variant.bfp128_convert.tag) {
- /* Conversion to 128-bit never requires a rounding mode */
- case S390_BFP_I32_TO_F128: return s390_emit_CXFBRA(buf, 0, 0, r1_hi, r2_hi);
- case S390_BFP_I64_TO_F128: return s390_emit_CXGBRA(buf, 0, 0, r1_hi, r2_hi);
- case S390_BFP_U32_TO_F128: return s390_emit_CXLFBR(buf, 0, 0, r1_hi, r2_hi);
- case S390_BFP_U64_TO_F128: return s390_emit_CXLGBR(buf, 0, 0, r1_hi, r2_hi);
- case S390_BFP_F32_TO_F128: return s390_emit_LXEBR(buf, r1_hi, r2_hi);
- case S390_BFP_F64_TO_F128: return s390_emit_LXDBR(buf, r1_hi, r2_hi);
-
- /* Conversion from 128-bit requires a rounding mode */
- case S390_BFP_F128_TO_I32:
- return s390_emit_CFXBR(buf, rounding_mode, r1_hi, r2_hi);
-
- case S390_BFP_F128_TO_I64:
- return s390_emit_CGXBR(buf, rounding_mode, r1_hi, r2_hi);
-
- case S390_BFP_F128_TO_U32:
- return s390_emit_CLFXBR(buf, rounding_mode, 0, r1_hi, r2_hi);
-
- case S390_BFP_F128_TO_U64:
- return s390_emit_CLGXBR(buf, rounding_mode, 0, r1_hi, r2_hi);
-
- case S390_BFP_F128_TO_F32:
- if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
- buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
- }
- buf = s390_emit_LEXBRA(buf, 0, 0, r1_hi, r2_hi);
- if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
- /* Restore FPC register from guest state */
- buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
- S390X_GUEST_OFFSET(guest_fpc)); // fpc = guest_fpc
- }
- return buf;
-
- case S390_BFP_F128_TO_F64:
- if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
- buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
- }
- buf = s390_emit_LDXBRA(buf, 0, 0, r1_hi, r2_hi);
- if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
- /* Restore FPC register from guest state */
- buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
- S390X_GUEST_OFFSET(guest_fpc)); // fpc = guest_fpc
- }
- return buf;
-
- default: goto fail;
- }
-
- fail:
- vpanic("s390_insn_bfp128_convert_emit");
-}
-
-
-static UChar *
s390_insn_mfence_emit(UChar *buf, const s390_insn *insn)
{
return s390_emit_BCR(buf, 0xF, 0x0);
@@ -8317,22 +8111,6 @@
end = s390_insn_bfp_convert_emit(buf, insn);
break;
- case S390_INSN_BFP128_BINOP:
- end = s390_insn_bfp128_binop_emit(buf, insn);
- break;
-
- case S390_INSN_BFP128_COMPARE:
- end = s390_insn_bfp128_compare_emit(buf, insn);
- break;
-
- case S390_INSN_BFP128_UNOP:
- end = s390_insn_bfp128_unop_emit(buf, insn);
- break;
-
- case S390_INSN_BFP128_CONVERT:
- end = s390_insn_bfp128_convert_emit(buf, insn);
- break;
-
case S390_INSN_MFENCE:
end = s390_insn_mfence_emit(buf, insn);
break;
Modified: trunk/priv/host_s390_isel.c (+1 -1)
===================================================================
--- trunk/priv/host_s390_isel.c 2012-09-10 04:09:04 +01:00 (rev 2522)
+++ trunk/priv/host_s390_isel.c 2012-09-11 00:44:37 -23:00 (rev 2523)
@@ -1935,7 +1935,7 @@
addInstr(env, s390_insn_move(8, f15, op_lo));
dst = newVRegF(env);
- addInstr(env, s390_insn_bfp128_convert_from(16, conv, dst, f13, f15,
+ addInstr(env, s390_insn_bfp128_convert_from(size, conv, dst, f13, f15,
rounding_mode));
return dst;
}
|
|
From: Tom H. <to...@co...> - 2012-09-10 07:30:51
|
valgrind revision: 12962 VEX revision: 2519 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) Assembler: GNU assembler version 2.18.50.0.6-2 20080403 C library: GNU C Library stable release version 2.8 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2012-09-09 03:42:06 BST Ended at 2012-09-09 04:08:00 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 606 tests, 0 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == none/tests/amd64/sse4-64 (stdout) |
|
From: Rich C. <rc...@wi...> - 2012-09-10 05:17:41
|
valgrind revision: 12963
VEX revision: 2522
C compiler: i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
Assembler:
C library: unknown
uname -mrs: Darwin 10.8.0 i386
Vendor version: unknown
Nightly build on macx86 ( Darwin 10.8.0 i386 )
Started at 2012-09-09 23:35:00 CDT
Ended at 2012-09-10 00:17:26 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 499 tests, 145 stderr failures, 4 stdout failures, 3 stderrB failures, 3 stdoutB failures, 1 post failure ==
gdbserver_tests/mchelp (stdoutB)
gdbserver_tests/mchelp (stderrB)
gdbserver_tests/mcinvokeRU (stdoutB)
gdbserver_tests/mcinvokeRU (stderrB)
gdbserver_tests/mcinvokeWS (stdoutB)
gdbserver_tests/mcinvokeWS (stderrB)
memcheck/tests/accounting (stderr)
memcheck/tests/badpoll (stderr)
memcheck/tests/big_blocks_freed_list (stderr)
memcheck/tests/bug287260 (stderr)
memcheck/tests/darwin/aio (stderr)
memcheck/tests/darwin/pth-supp (stderr)
memcheck/tests/darwin/scalar (stderr)
memcheck/tests/deep-backtrace (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/leak-delta (stderr)
memcheck/tests/memcmptest (stderr)
memcheck/tests/mismatches (stderr)
memcheck/tests/null_socket (stdout)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/overlap (stdout)
memcheck/tests/overlap (stderr)
memcheck/tests/strchr (stderr)
memcheck/tests/test-plo-no (stderr)
memcheck/tests/varinfo3 (stderr)
memcheck/tests/varinfo5 (stderr)
memcheck/tests/vbit-test/vbit-test (stderr)
memcheck/tests/vcpu_fnfns (stdout)
memcheck/tests/writev1 (stderr)
massif/tests/big-alloc (post)
massif/tests/pages_as_heap (stderr)
none/tests/allexec32 (stderr)
none/tests/allexec64 (stderr)
none/tests/async-sigs (stderr)
none/tests/cmdline5 (stderr)
none/tests/execve (stderr)
none/tests/faultstatus (stderr)
none/tests/mmap_fcntl_bug (stderr)
none/tests/nodir (stderr)
none/tests/pth_blockedsig (stderr)
none/tests/require-text-symbol-2 (stderr)
none/tests/rlimit64_nofile (stderr)
none/tests/shell_nosuchfile (stderr)
none/tests/x86/cse_fail (stdout)
helgrind/tests/annotate_hbefore (stderr)
helgrind/tests/annotate_rwlock (stderr)
helgrind/tests/annotate_smart_pointer (stderr)
helgrind/tests/cond_timedwait_invalid (stderr)
helgrind/tests/free_is_write (stderr)
helgrind/tests/hg01_all_ok (stderr)
helgrind/tests/hg02_deadlock (stderr)
helgrind/tests/hg03_inherit (stderr)
helgrind/tests/hg04_race (stderr)
helgrind/tests/hg05_race2 (stderr)
helgrind/tests/hg06_readshared (stderr)
helgrind/tests/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_destroy_cond (stderr)
helgrind/tests/rwlock_race (stderr)
helgrind/tests/rwlock_test (stderr)
helgrind/tests/t2t_laog (stderr)
helgrind/tests/tc01_simple_race (stderr)
helgrind/tests/tc02_simple_tls (stderr)
helgrind/tests/tc03_re_excl (stderr)
helgrind/tests/tc04_free_lock (stderr)
helgrind/tests/tc05_simple_race (stderr)
helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
helgrind/tests/tc07_hbl1 (stderr)
helgrind/tests/tc08_hbl2 (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc10_rec_lock (stderr)
helgrind/tests/tc11_XCHG (stderr)
helgrind/tests/tc12_rwl_trivial (stderr)
helgrind/tests/tc13_laog1 (stderr)
helgrind/tests/tc14_laog_dinphils (stderr)
helgrind/tests/tc15_laog_lockdel (stderr)
helgrind/tests/tc16_byterace (stderr)
helgrind/tests/tc17_sembar (stderr)
helgrind/tests/tc18_semabuse (stderr)
helgrind/tests/tc19_shadowmem (stderr)
helgrind/tests/tc21_pthonce (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
helgrind/tests/tc24_nonzero_sem (stderr)
drd/tests/annotate_barrier (stderr)
drd/tests/annotate_barrier_xml (stderr)
drd/tests/annotate_hb_race (stderr)
drd/tests/annotate_hbefore (stderr)
drd/tests/annotate_ignore_read (stderr)
drd/tests/annotate_ignore_rw (stderr)
drd/tests/annotate_ignore_rw2 (stderr)
drd/tests/annotate_ignore_write (stderr)
drd/tests/annotate_ignore_write2 (stderr)
drd/tests/annotate_order_1 (stderr)
drd/tests/annotate_order_2 (stderr)
drd/tests/annotate_order_3 (stderr)
drd/tests/annotate_rwlock (stderr)
drd/tests/annotate_smart_pointer (stderr)
drd/tests/annotate_smart_pointer2 (stderr)
drd/tests/annotate_spinlock (stderr)
drd/tests/annotate_static (stderr)
drd/tests/atomic_var (stderr)
drd/tests/bug-235681 (stderr)
drd/tests/circular_buffer (stderr)
drd/tests/fp_race (stderr)
drd/tests/fp_race2 (stderr)
drd/tests/fp_race_xml (stderr)
drd/tests/free_is_write (stderr)
drd/tests/free_is_write2 (stderr)
drd/tests/hg01_all_ok (stderr)
drd/tests/hg02_deadlock (stderr)
drd/tests/hg03_inherit (stderr)
drd/tests/hg04_race (stderr)
drd/tests/hg05_race2 (stderr)
drd/tests/hg06_readshared (stderr)
drd/tests/linuxthreads_det (stderr)
drd/tests/monitor_example (stderr)
drd/tests/pth_broadcast (stderr)
drd/tests/pth_cleanup_handler (stderr)
drd/tests/pth_cond_race (stderr)
drd/tests/pth_cond_race2 (stderr)
drd/tests/pth_cond_race3 (stderr)
drd/tests/pth_create_chain (stderr)
drd/tests/pth_detached3 (stderr)
drd/tests/pth_inconsistent_cond_wait (stderr)
drd/tests/pth_once (stderr)
drd/tests/read_and_free_race (stderr)
drd/tests/rwlock_race (stderr)
drd/tests/rwlock_test (stderr)
drd/tests/sem_open (stderr)
drd/tests/sem_open2 (stderr)
drd/tests/sem_open3 (stderr)
drd/tests/sem_open_traced (stderr)
drd/tests/sem_wait (stderr)
drd/tests/sigalrm (stderr)
drd/tests/tc01_simple_race (stderr)
drd/tests/tc02_simple_tls (stderr)
drd/tests/tc03_re_excl (stderr)
drd/tests/tc05_simple_race (stderr)
drd/tests/tc06_two_races (stderr)
drd/tests/tc07_hbl1 (stderr)
drd/tests/tc08_hbl2 (stderr)
drd/tests/tc09_bad_unlock (stderr)
drd/tests/tc11_XCHG (stderr)
drd/tests/tc16_byterace (stderr)
drd/tests/tc17_sembar (stderr)
drd/tests/tc19_shadowmem (stderr)
drd/tests/tc21_pthonce (stderr)
drd/tests/tc23_bogus_condwait (stderr)
drd/tests/thread_name (stderr)
drd/tests/thread_name_xml (stderr)
drd/tests/threaded-fork (stderr)
drd/tests/unit_bitmap (stderr)
drd/tests/unit_vc (stderr)
=================================================
./valgrind-new/drd/tests/annotate_barrier.stderr.diff
=================================================
--- annotate_barrier.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_barrier.stderr.out 2012-09-10 00:14:14.000000000 -0500
@@ -37,6 +37,117 @@
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
Thread 1:
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Address 0x........ is at offset 8 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Address 0x........ is at offset 8 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
<truncated beyond 100 lines>
=================================================
./valgrind-new/drd/tests/annotate_barrier_xml.stderr.diff
=================================================
--- annotate_barrier_xml.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_barrier_xml.stderr.out 2012-09-10 00:14:15.000000000 -0500
@@ -188,7 +188,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>start_thread</fn>
+ <fn>_pthread_start</fn>
</frame>
</stack>
<auxwhat>Address 0x........ is at offset 0 from 0x.........</auxwhat>
@@ -258,6 +258,549 @@
<error>
<unique>0x........</unique>
<tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$UNIX2003</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$*</fn>
+ <dir>...</dir>
+ <file>drd_pthread_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <auxwhat>Allocation context: Data section of /usr/lib/libSystem.B.dylib</auxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>new_sem_from_pool</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$UNIX2003</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$*</fn>
+ <dir>...</dir>
+ <file>drd_pthread_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <auxwhat>Allocation context: Data section of /usr/lib/libSystem.B.dylib</auxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>new_sem_from_pool</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$UNIX2003</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$*</fn>
+ <dir>...</dir>
+ <file>drd_pthread_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <auxwhat>Allocation context: Data section of /usr/lib/libSystem.B.dylib</auxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
<truncated beyond 100 lines>
=================================================
./valgrind-new/drd/tests/annotate_hb_race.stderr.diff
=================================================
--- annotate_hb_race.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_hb_race.stderr.out 2012-09-10 00:14:17.000000000 -0500
@@ -3,6 +3,60 @@
at 0x........: main (annotate_hb_race.c:?)
Allocation context: BSS section of annotate_hb_race
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Done.
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_hbefore.stderr.diff
=================================================
--- annotate_hbefore.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_hbefore.stderr.out 2012-09-10 00:14:19.000000000 -0500
@@ -1,3 +1,44 @@
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+
+ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_read.stderr.diff
=================================================
--- annotate_ignore_read.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_ignore_read.stderr.out 2012-09-10 00:14:21.000000000 -0500
@@ -1,6 +1,159 @@
FLAGS [phb=1, fm=0]
test69: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Address 0x........ is at offset 12 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
<truncated beyond 100 lines>
=================================================
./valgrind-new/drd/tests/annotate_ignore_rw.stderr.diff
=================================================
--- annotate_ignore_rw.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_ignore_rw.stderr.out 2012-09-10 00:14:23.000000000 -0500
@@ -4,6 +4,60 @@
Location 0x........ is 0 bytes inside local var "s_c"
declared at annotate_ignore_rw.c:12, in frame #? of thread 1
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_rw2.stderr.diff
=================================================
--- annotate_ignore_rw2.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_ignore_rw2.stderr.out 2012-09-10 00:14:25.000000000 -0500
@@ -14,6 +14,60 @@
Location 0x........ is 0 bytes inside local var "s_c"
declared at annotate_ignore_rw.c:12, in frame #? of thread 1
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_write.stderr.diff
=================================================
--- annotate_ignore_write.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_ignore_write.stderr.out 2012-09-10 00:14:26.000000000 -0500
@@ -14,6 +14,60 @@
Location 0x........ is 0 bytes inside local var "s_a"
declared at annotate_ignore_write.c:10, in frame #? of thread 1
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_write2.stderr.diff
=================================================
--- annotate_ignore_write2.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_ignore_write2.stderr.out 2012-09-10 00:14:27.000000000 -0500
@@ -19,6 +19,60 @@
Location 0x........ is 0 bytes inside local var "s_a"
declared at annotate_ignore_write.c:10, in frame #? of thread 1
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_order_1.stderr.diff
=================================================
--- annotate_order_1.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_order_1.stderr.out 2012-09-10 00:14:28.000000000 -0500
@@ -1,6 +1,18 @@
FLAGS [phb=1, fm=0]
test03: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: ThreadPool::~ThreadPool() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: test03::Waiter() (tsan_unittest.cpp:?)
+ by 0x........: test03::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
GLOB=2
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_order_2.stderr.diff
=================================================
--- annotate_order_2.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_order_2.stderr.out 2012-09-10 00:14:30.000000000 -0500
@@ -1,6 +1,71 @@
FLAGS [phb=1, fm=0]
test30: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
GLOB=47
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_order_3.stderr.diff
=================================================
--- annotate_order_3.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_order_3.stderr.out 2012-09-10 00:14:32.000000000 -0500
@@ -1,6 +1,71 @@
FLAGS [phb=1, fm=0]
test31: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
GLOB=48
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_rwlock.stderr.diff
=================================================
--- annotate_rwlock.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_rwlock.stderr.out 2012-09-10 00:14:37.000000000 -0500
@@ -1,4 +1,58 @@
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Address 0x........ is at offset 36 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_smart_pointer.stderr.diff
=================================================
--- annotate_smart_pointer.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_smart_pointer.stderr.out 2012-09-10 00:14:48.000000000 -0500
@@ -1,4 +1,64 @@
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Address 0x........ is at offset 196 from 0x......... Allocation context:
+ at 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Done.
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_smart_pointer2.stderr.diff
=================================================
--- annotate_smart_pointer2.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_smart_pointer2.stderr.out 2012-09-10 00:14:49.000000000 -0500
@@ -5,9 +5,71 @@
by 0x........: smart_ptr<counter>::operator=(counter*) (annotate_smart_pointer.cpp:?)
by 0x........: main (annotate_smart_pointer.cpp:?)
Address 0x........ is at offset ... from 0x......... Allocation context:
- at 0x........: ...operator new... (vg_replace_malloc.c:...)
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: operator new(unsigned long) (in /usr/lib/libstdc++.6.0.9.dylib)
by 0x........: main (annotate_smart_pointer.cpp:?)
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Address 0x........ is at offset ... from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Done.
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_spinlock.stderr.diff
=================================================
--- annotate_spinlock.stderr.exp 2012-09-09 23:56:37.000000000 -0500
+++ annotate_spinlock.stderr.out 2012-09-10 00:14:50.000000000 -0500
@@ -1,6 +1,88 @@
FLAGS [phb=1, fm=0]
test27: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test27::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test27::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_threa...
[truncated message content] |
|
From: Philippe W. <phi...@sk...> - 2012-09-10 03:52:40
|
valgrind revision: 12963 VEX revision: 2521 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.3.1-3.fc16.ppc64 ppc64 Vendor version: Fedora release 16 (Verne) Nightly build on gcc110 ( Fedora release 16 (Verne), ppc64 ) Started at 2012-09-09 20:00:11 PDT Ended at 2012-09-09 20:51:16 PDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 532 tests, 6 stderr failures, 2 stdout failures, 1 stderrB failure, 1 stdoutB failure, 2 post failures == gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: <sv...@va...> - 2012-09-10 03:09:15
|
florian 2012-09-10 04:09:04 +0100 (Mon, 10 Sep 2012)
New Revision: 2522
Log:
s390: More prep work bfp reorg. In the future unary/binary/ternary
operations on bfp data will no longer require a rounding mode in the
s390_insn. Only type conversion operations need a rounding mode.
So in this patch S390_BFP_CONVERT is introduced and
S390_BFP128_CONVERT_TO/FROM are consolidated to S390_BFP128_CONVERT.
This also makes the representation of bfp and bfp128 symmetric.
s390_insn gets a new variant: s390_convert.
The type conversion ops get their own data type now: s390_conv_t
Modified files:
trunk/priv/host_s390_defs.c
trunk/priv/host_s390_defs.h
trunk/priv/host_s390_isel.c
Modified: trunk/priv/host_s390_defs.h (+31 -14)
===================================================================
--- trunk/priv/host_s390_defs.h 2012-09-09 19:18:25 +01:00 (rev 2521)
+++ trunk/priv/host_s390_defs.h 2012-09-10 04:09:04 +01:00 (rev 2522)
@@ -137,11 +137,11 @@
S390_INSN_BFP_UNOP,
S390_INSN_BFP_TRIOP,
S390_INSN_BFP_COMPARE,
+ S390_INSN_BFP_CONVERT,
S390_INSN_BFP128_BINOP, /* Binary floating point 128-bit */
S390_INSN_BFP128_UNOP,
S390_INSN_BFP128_COMPARE,
- S390_INSN_BFP128_CONVERT_TO,
- S390_INSN_BFP128_CONVERT_FROM,
+ S390_INSN_BFP128_CONVERT,
S390_INSN_MFENCE,
S390_INSN_GZERO, /* Assign zero to a guest register */
S390_INSN_GADD, /* Add a value to a guest register */
@@ -193,13 +193,16 @@
S390_BFP_DIV
} s390_bfp_binop_t;
-
/* The kind of unary BFP operations */
typedef enum {
S390_BFP_ABS,
S390_BFP_NABS,
S390_BFP_NEG,
- S390_BFP_SQRT,
+ S390_BFP_SQRT
+} s390_bfp_unop_t;
+
+/* Type conversion operations: to and/or from floating point */
+typedef enum {
S390_BFP_I32_TO_F32,
S390_BFP_I32_TO_F64,
S390_BFP_I32_TO_F128,
@@ -230,7 +233,7 @@
S390_BFP_F128_TO_U64,
S390_BFP_F128_TO_F32,
S390_BFP_F128_TO_F64
-} s390_bfp_unop_t;
+} s390_conv_t;
/* Condition code. The encoding of the enumerators matches the value of
@@ -341,11 +344,6 @@
s390_opnd_RMI src2;
} compare;
struct {
- HReg dst; /* condition code in s390 encoding */
- HReg op1;
- HReg op2;
- } bfp_compare;
- struct {
s390_opnd_RMI src;
} test;
/* Convert the condition code to a boolean value. */
@@ -402,6 +400,17 @@
HReg op; /* operand */
} bfp_unop;
struct {
+ s390_conv_t tag;
+ s390_round_t rounding_mode;
+ HReg dst; /* result */
+ HReg op; /* operand */
+ } bfp_convert;
+ struct {
+ HReg dst; /* condition code in s390 encoding */
+ HReg op1;
+ HReg op2;
+ } bfp_compare;
+ struct {
s390_bfp_binop_t tag;
s390_round_t rounding_mode;
HReg dst_hi; /* left operand; high part */
@@ -409,8 +418,6 @@
HReg op2_hi; /* right operand; high part */
HReg op2_lo; /* right operand; low part */
} bfp128_binop;
- /* This variant is also used by the BFP128_CONVERT_TO and
- BFP128_CONVERT_FROM insns. */
struct {
s390_bfp_unop_t tag;
s390_round_t rounding_mode;
@@ -420,6 +427,14 @@
HReg op_lo; /* operand; low part */
} bfp128_unop;
struct {
+ s390_conv_t tag;
+ s390_round_t rounding_mode;
+ HReg dst_hi; /* 128-bit result high part; 32/64-bit result */
+ HReg dst_lo; /* 128-bit result low part */
+ HReg op_hi; /* 128-bit operand high part; 32/64-bit opnd */
+ HReg op_lo; /* 128-bit operand low part */
+ } bfp128_convert;
+ struct {
HReg dst; /* condition code in s390 encoding */
HReg op1_hi; /* left operand; high part */
HReg op1_lo; /* left operand; low part */
@@ -510,6 +525,8 @@
s390_insn *s390_insn_bfp_unop(UChar size, s390_bfp_unop_t tag, HReg dst,
HReg op, s390_round_t);
s390_insn *s390_insn_bfp_compare(UChar size, HReg dst, HReg op1, HReg op2);
+s390_insn *s390_insn_bfp_convert(UChar size, s390_conv_t tag, HReg dst,
+ HReg op, s390_round_t);
s390_insn *s390_insn_bfp128_binop(UChar size, s390_bfp_binop_t, HReg dst_hi,
HReg dst_lo, HReg op2_hi, HReg op2_lo,
s390_round_t);
@@ -518,9 +535,9 @@
s390_round_t);
s390_insn *s390_insn_bfp128_compare(UChar size, HReg dst, HReg op1_hi,
HReg op1_lo, HReg op2_hi, HReg op2_lo);
-s390_insn *s390_insn_bfp128_convert_to(UChar size, s390_bfp_unop_t,
+s390_insn *s390_insn_bfp128_convert_to(UChar size, s390_conv_t,
HReg dst_hi, HReg dst_lo, HReg op);
-s390_insn *s390_insn_bfp128_convert_from(UChar size, s390_bfp_unop_t,
+s390_insn *s390_insn_bfp128_convert_from(UChar size, s390_conv_t,
HReg dst, HReg op_hi, HReg op_lo,
s390_round_t);
s390_insn *s390_insn_mfence(void);
Modified: trunk/priv/host_s390_defs.c (+204 -136)
===================================================================
--- trunk/priv/host_s390_defs.c 2012-09-09 19:18:25 +01:00 (rev 2521)
+++ trunk/priv/host_s390_defs.c 2012-09-10 04:09:04 +01:00 (rev 2522)
@@ -680,6 +680,11 @@
addHRegUse(u, HRmRead, insn->variant.bfp_compare.op2); /* right */
break;
+ case S390_INSN_BFP_CONVERT:
+ addHRegUse(u, HRmWrite, insn->variant.bfp_convert.dst);
+ addHRegUse(u, HRmRead, insn->variant.bfp_convert.op); /* operand */
+ break;
+
case S390_INSN_BFP128_BINOP:
addHRegUse(u, HRmWrite, insn->variant.bfp128_binop.dst_hi);
addHRegUse(u, HRmWrite, insn->variant.bfp128_binop.dst_lo);
@@ -704,18 +709,15 @@
addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_lo);
break;
- case S390_INSN_BFP128_CONVERT_TO:
- addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_hi);
- addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_lo);
- addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_hi);
+ case S390_INSN_BFP128_CONVERT:
+ addHRegUse(u, HRmWrite, insn->variant.bfp128_convert.dst_hi);
+ if (insn->variant.bfp128_convert.dst_lo != INVALID_HREG)
+ addHRegUse(u, HRmWrite, insn->variant.bfp128_convert.dst_lo);
+ addHRegUse(u, HRmRead, insn->variant.bfp128_convert.op_hi);
+ if (insn->variant.bfp128_convert.op_lo != INVALID_HREG)
+ addHRegUse(u, HRmRead, insn->variant.bfp128_convert.op_lo);
break;
- case S390_INSN_BFP128_CONVERT_FROM:
- addHRegUse(u, HRmWrite, insn->variant.bfp128_unop.dst_hi);
- addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_hi);
- addHRegUse(u, HRmRead, insn->variant.bfp128_unop.op_lo);
- break;
-
case S390_INSN_MFENCE:
case S390_INSN_GZERO:
case S390_INSN_GADD:
@@ -899,6 +901,13 @@
insn->variant.bfp_compare.op2 = lookupHRegRemap(m, insn->variant.bfp_compare.op2);
break;
+ case S390_INSN_BFP_CONVERT:
+ insn->variant.bfp_convert.dst =
+ lookupHRegRemap(m, insn->variant.bfp_convert.dst);
+ insn->variant.bfp_convert.op =
+ lookupHRegRemap(m, insn->variant.bfp_convert.op);
+ break;
+
case S390_INSN_BFP128_BINOP:
insn->variant.bfp128_binop.dst_hi =
lookupHRegRemap(m, insn->variant.bfp128_binop.dst_hi);
@@ -934,24 +943,19 @@
lookupHRegRemap(m, insn->variant.bfp128_unop.op_lo);
break;
- case S390_INSN_BFP128_CONVERT_TO:
- insn->variant.bfp128_unop.dst_hi =
- lookupHRegRemap(m, insn->variant.bfp128_unop.dst_hi);
- insn->variant.bfp128_unop.dst_lo =
- lookupHRegRemap(m, insn->variant.bfp128_unop.dst_lo);
- insn->variant.bfp128_unop.op_hi =
- lookupHRegRemap(m, insn->variant.bfp128_unop.op_hi);
+ case S390_INSN_BFP128_CONVERT:
+ insn->variant.bfp128_convert.dst_hi =
+ lookupHRegRemap(m, insn->variant.bfp128_convert.dst_hi);
+ if (insn->variant.bfp128_convert.dst_lo != INVALID_HREG)
+ insn->variant.bfp128_convert.dst_lo =
+ lookupHRegRemap(m, insn->variant.bfp128_convert.dst_lo);
+ insn->variant.bfp128_convert.op_hi =
+ lookupHRegRemap(m, insn->variant.bfp128_convert.op_hi);
+ if (insn->variant.bfp128_convert.op_lo != INVALID_HREG)
+ insn->variant.bfp128_convert.op_lo =
+ lookupHRegRemap(m, insn->variant.bfp128_convert.op_lo);
break;
- case S390_INSN_BFP128_CONVERT_FROM:
- insn->variant.bfp128_unop.dst_hi =
- lookupHRegRemap(m, insn->variant.bfp128_unop.dst_hi);
- insn->variant.bfp128_unop.op_hi =
- lookupHRegRemap(m, insn->variant.bfp128_unop.op_hi);
- insn->variant.bfp128_unop.op_lo =
- lookupHRegRemap(m, insn->variant.bfp128_unop.op_lo);
- break;
-
case S390_INSN_MFENCE:
case S390_INSN_GZERO:
case S390_INSN_GADD:
@@ -4746,6 +4750,23 @@
s390_insn *
+s390_insn_bfp_convert(UChar size, s390_conv_t tag, HReg dst, HReg op,
+ s390_round_t rounding_mode)
+{
+ s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
+
+ insn->tag = S390_INSN_BFP_CONVERT;
+ insn->size = size;
+ insn->variant.bfp_convert.tag = tag;
+ insn->variant.bfp_convert.dst = dst;
+ insn->variant.bfp_convert.op = op;
+ insn->variant.bfp_convert.rounding_mode = rounding_mode;
+
+ return insn;
+}
+
+
+s390_insn *
s390_insn_bfp128_binop(UChar size, s390_bfp_binop_t tag, HReg dst_hi,
HReg dst_lo, HReg op2_hi, HReg op2_lo,
s390_round_t rounding_mode)
@@ -4803,42 +4824,46 @@
}
-s390_insn *
-s390_insn_bfp128_convert_to(UChar size, s390_bfp_unop_t tag, HReg dst_hi,
- HReg dst_lo, HReg op)
+static s390_insn *
+s390_insn_bfp128_convert(UChar size, s390_conv_t tag, HReg dst_hi,
+ HReg dst_lo, HReg op_hi, HReg op_lo,
+ s390_round_t rounding_mode)
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
- insn->tag = S390_INSN_BFP128_CONVERT_TO;
+ insn->tag = S390_INSN_BFP128_CONVERT;
insn->size = size;
- insn->variant.bfp128_unop.tag = tag;
- insn->variant.bfp128_unop.dst_hi = dst_hi;
- insn->variant.bfp128_unop.dst_lo = dst_lo;
- insn->variant.bfp128_unop.op_hi = op;
- insn->variant.bfp128_unop.op_lo = INVALID_HREG; /* unused */
- insn->variant.bfp128_unop.rounding_mode = S390_ROUND_NEAREST_EVEN; /* unused */
+ insn->variant.bfp128_convert.tag = tag;
+ insn->variant.bfp128_convert.dst_hi = dst_hi;
+ insn->variant.bfp128_convert.dst_lo = dst_lo;
+ insn->variant.bfp128_convert.op_hi = op_hi;
+ insn->variant.bfp128_convert.op_lo = op_lo;
+ insn->variant.bfp128_convert.rounding_mode = rounding_mode;
return insn;
}
s390_insn *
-s390_insn_bfp128_convert_from(UChar size, s390_bfp_unop_t tag, HReg dst,
+s390_insn_bfp128_convert_to(UChar size, s390_conv_t tag, HReg dst_hi,
+ HReg dst_lo, HReg op)
+{
+ /* Conversion to bfp128 never requires a rounding mode. Provide default
+ rounding mode. It will not be used when emitting insns. */
+ s390_round_t rounding_mode = S390_ROUND_NEAREST_EVEN;
+
+ return s390_insn_bfp128_convert(size, tag, dst_hi, dst_lo, op,
+ INVALID_HREG, rounding_mode);
+}
+
+
+s390_insn *
+s390_insn_bfp128_convert_from(UChar size, s390_conv_t tag, HReg dst,
HReg op_hi, HReg op_lo,
s390_round_t rounding_mode)
{
- s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
-
- insn->tag = S390_INSN_BFP128_CONVERT_FROM;
- insn->size = size;
- insn->variant.bfp128_unop.tag = tag;
- insn->variant.bfp128_unop.dst_hi = dst;
- insn->variant.bfp128_unop.dst_lo = INVALID_HREG; /* unused */
- insn->variant.bfp128_unop.op_hi = op_hi;
- insn->variant.bfp128_unop.op_lo = op_lo;
- insn->variant.bfp128_unop.rounding_mode = rounding_mode;
-
- return insn;
+ return s390_insn_bfp128_convert(size, tag, dst, INVALID_HREG, op_hi, op_lo,
+ rounding_mode);
}
@@ -5327,6 +5352,14 @@
case S390_BFP_NABS: op = "v-fnabs"; break;
case S390_BFP_NEG: op = "v-fneg"; break;
case S390_BFP_SQRT: op = "v-fsqrt"; break;
+ default: goto fail;
+ }
+ s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp_unop.dst,
+ insn->variant.bfp_unop.op);
+ break;
+
+ case S390_INSN_BFP_CONVERT:
+ switch (insn->variant.bfp_convert.tag) {
case S390_BFP_I32_TO_F32:
case S390_BFP_I32_TO_F64:
case S390_BFP_I32_TO_F128:
@@ -5359,8 +5392,8 @@
case S390_BFP_F128_TO_F64: op = "v-f2f"; break;
default: goto fail;
}
- s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp_unop.dst,
- insn->variant.bfp_unop.op);
+ s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp_convert.dst,
+ insn->variant.bfp_convert.op);
break;
case S390_INSN_BFP128_BINOP:
@@ -5385,13 +5418,20 @@
break;
case S390_INSN_BFP128_UNOP:
- case S390_INSN_BFP128_CONVERT_TO:
- case S390_INSN_BFP128_CONVERT_FROM:
switch (insn->variant.bfp128_unop.tag) {
case S390_BFP_ABS: op = "v-fabs"; break;
case S390_BFP_NABS: op = "v-fnabs"; break;
case S390_BFP_NEG: op = "v-fneg"; break;
case S390_BFP_SQRT: op = "v-fsqrt"; break;
+ default: goto fail;
+ }
+ /* Only write the register that identifies the register pair */
+ s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp128_unop.dst_hi,
+ insn->variant.bfp128_unop.op_hi);
+ break;
+
+ case S390_INSN_BFP128_CONVERT:
+ switch (insn->variant.bfp128_convert.tag) {
case S390_BFP_I32_TO_F128:
case S390_BFP_I64_TO_F128: op = "v-i2f"; break;
case S390_BFP_U32_TO_F128:
@@ -5407,8 +5447,8 @@
default: goto fail;
}
/* Only write the register that identifies the register pair */
- s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp128_unop.dst_hi,
- insn->variant.bfp128_unop.op_hi);
+ s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp128_convert.dst_hi,
+ insn->variant.bfp128_convert.op_hi);
break;
case S390_INSN_MFENCE:
@@ -5531,9 +5571,10 @@
}
case S390_INSN_BFP128_UNOP:
- case S390_INSN_BFP128_CONVERT_TO:
- case S390_INSN_BFP128_CONVERT_FROM:
- switch (insn->variant.bfp128_unop.tag) {
+ goto common;
+
+ case S390_INSN_BFP128_CONVERT:
+ switch (insn->variant.bfp128_convert.tag) {
case S390_BFP_I32_TO_F128:
case S390_BFP_U32_TO_F128:
case S390_BFP_F32_TO_F128: p += vex_sprintf(p, "4 -> "); goto common;
@@ -7398,26 +7439,7 @@
UInt r1 = hregNumber(insn->variant.bfp_unop.dst);
UInt r2 = hregNumber(insn->variant.bfp_unop.op);
s390_round_t rounding_mode = insn->variant.bfp_unop.rounding_mode;
- s390_round_t m3 = rounding_mode;
- /* The "convert to fixed" instructions have a field for the rounding
- mode and no FPC modification is necessary. So we handle them
- upfront. */
- switch (insn->variant.bfp_unop.tag) {
- case S390_BFP_F32_TO_I32: return s390_emit_CFEBR(buf, m3, r1, r2);
- case S390_BFP_F64_TO_I32: return s390_emit_CFDBR(buf, m3, r1, r2);
- case S390_BFP_F32_TO_I64: return s390_emit_CGEBR(buf, m3, r1, r2);
- case S390_BFP_F64_TO_I64: return s390_emit_CGDBR(buf, m3, r1, r2);
-
- /* We leave m4 as 0 - as gcc */
- case S390_BFP_F32_TO_U32: return s390_emit_CLFEBR(buf, m3, 0, r1, r2);
- case S390_BFP_F64_TO_U32: return s390_emit_CLFDBR(buf, m3, 0, r1, r2);
- case S390_BFP_F32_TO_U64: return s390_emit_CLGEBR(buf, m3, 0, r1, r2);
- case S390_BFP_F64_TO_U64: return s390_emit_CLGDBR(buf, m3, 0, r1, r2);
-
- default: break;
- }
-
/* For all other insns if a special rounding mode is requested,
we need to set the FPC first and restore it later. */
if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
@@ -7461,6 +7483,54 @@
}
break;
+ default: goto fail;
+ }
+
+ if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+ /* Restore FPC register from guest state */
+ buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
+ S390X_GUEST_OFFSET(guest_fpc)); // fpc = guest_fpc
+ }
+ return buf;
+
+ fail:
+ vpanic("s390_insn_bfp_unop_emit");
+}
+
+
+static UChar *
+s390_insn_bfp_convert_emit(UChar *buf, const s390_insn *insn)
+{
+ UInt r1 = hregNumber(insn->variant.bfp_convert.dst);
+ UInt r2 = hregNumber(insn->variant.bfp_convert.op);
+ s390_round_t rounding_mode = insn->variant.bfp_convert.rounding_mode;
+ s390_round_t m3 = rounding_mode;
+
+ /* The "convert to fixed" instructions have a field for the rounding
+ mode and no FPC modification is necessary. So we handle them
+ upfront. */
+ switch (insn->variant.bfp_convert.tag) {
+ case S390_BFP_F32_TO_I32: return s390_emit_CFEBR(buf, m3, r1, r2);
+ case S390_BFP_F64_TO_I32: return s390_emit_CFDBR(buf, m3, r1, r2);
+ case S390_BFP_F32_TO_I64: return s390_emit_CGEBR(buf, m3, r1, r2);
+ case S390_BFP_F64_TO_I64: return s390_emit_CGDBR(buf, m3, r1, r2);
+
+ /* We leave m4 as 0 - as gcc */
+ case S390_BFP_F32_TO_U32: return s390_emit_CLFEBR(buf, m3, 0, r1, r2);
+ case S390_BFP_F64_TO_U32: return s390_emit_CLFDBR(buf, m3, 0, r1, r2);
+ case S390_BFP_F32_TO_U64: return s390_emit_CLGEBR(buf, m3, 0, r1, r2);
+ case S390_BFP_F64_TO_U64: return s390_emit_CLGDBR(buf, m3, 0, r1, r2);
+
+ default: break;
+ }
+
+ /* For all other insns if a special rounding mode is requested,
+ we need to set the FPC first and restore it later. */
+ if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+ buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
+ }
+
+ switch (insn->variant.bfp_convert.tag) {
case S390_BFP_I32_TO_F32: buf = s390_emit_CEFBRA(buf, 0, 0, r1, r2); break;
case S390_BFP_I32_TO_F64: buf = s390_emit_CDFBRA(buf, 0, 0, r1, r2); break;
case S390_BFP_I32_TO_F128: buf = s390_emit_CXFBRA(buf, 0, 0, r1, r2); break;
@@ -7492,7 +7562,7 @@
return buf;
fail:
- vpanic("s390_insn_bfp_unop_emit");
+ vpanic("s390_insn_bfp_convert_emit");
}
@@ -7610,8 +7680,6 @@
case S390_BFP_NABS: buf = s390_emit_LNXBR(buf, r1_hi, r2_hi); break;
case S390_BFP_NEG: buf = s390_emit_LCXBR(buf, r1_hi, r2_hi); break;
case S390_BFP_SQRT: buf = s390_emit_SQXBR(buf, r1_hi, r2_hi); break;
- case S390_BFP_F128_TO_F32: buf = s390_emit_LEXBRA(buf, 0, 0, r1_hi, r2_hi); break;
- case S390_BFP_F128_TO_F64: buf = s390_emit_LDXBRA(buf, 0, 0, r1_hi, r2_hi); break;
default: goto fail;
}
@@ -7627,72 +7695,72 @@
}
-/* Conversion to 128-bit BFP does not require a rounding mode */
static UChar *
-s390_insn_bfp128_convert_to_emit(UChar *buf, const s390_insn *insn)
+s390_insn_bfp128_convert_emit(UChar *buf, const s390_insn *insn)
{
- UInt r1_hi = hregNumber(insn->variant.bfp128_unop.dst_hi);
- UInt r1_lo = hregNumber(insn->variant.bfp128_unop.dst_lo);
- UInt r2 = hregNumber(insn->variant.bfp128_unop.op_hi);
+ UInt r1_hi = hregNumber(insn->variant.bfp128_convert.dst_hi);
+ UInt r1_lo = hregNumber(insn->variant.bfp128_convert.dst_lo);
+ UInt r2_hi = hregNumber(insn->variant.bfp128_convert.op_hi);
+ UInt r2_lo = hregNumber(insn->variant.bfp128_convert.op_lo);
+ s390_round_t rounding_mode = insn->variant.bfp128_convert.rounding_mode;
/* Paranoia */
- vassert(insn->size == 16);
- vassert(r1_lo == r1_hi + 2);
- vassert((r1_hi & 0x2) == 0);
+ vassert(r1_lo == hregNumber(INVALID_HREG) || r1_lo == r1_hi + 2);
+ vassert(r2_lo == hregNumber(INVALID_HREG) || r2_lo == r2_hi + 2);
+ vassert(r1_lo == hregNumber(INVALID_HREG) || (r1_hi & 0x2) == 0);
+ vassert(r2_lo == hregNumber(INVALID_HREG) || (r2_hi & 0x2) == 0);
- switch (insn->variant.bfp128_unop.tag) {
- case S390_BFP_I32_TO_F128: buf = s390_emit_CXFBRA(buf, 0, 0, r1_hi, r2); break;
- case S390_BFP_I64_TO_F128: buf = s390_emit_CXGBRA(buf, 0, 0, r1_hi, r2); break;
- /* Rounding makes no sense -> m3 == 0. m4 is also 0 */
- case S390_BFP_U32_TO_F128: buf = s390_emit_CXLFBR(buf, 0, 0, r1_hi, r2);
- break;
- case S390_BFP_U64_TO_F128: buf = s390_emit_CXLGBR(buf, 0, 0, r1_hi, r2);
- break;
- case S390_BFP_F32_TO_F128: buf = s390_emit_LXEBR(buf, r1_hi, r2); break;
- case S390_BFP_F64_TO_F128: buf = s390_emit_LXDBR(buf, r1_hi, r2); break;
- default: goto fail;
- }
+ switch (insn->variant.bfp128_convert.tag) {
+ /* Conversion to 128-bit never requires a rounding mode */
+ case S390_BFP_I32_TO_F128: return s390_emit_CXFBRA(buf, 0, 0, r1_hi, r2_hi);
+ case S390_BFP_I64_TO_F128: return s390_emit_CXGBRA(buf, 0, 0, r1_hi, r2_hi);
+ case S390_BFP_U32_TO_F128: return s390_emit_CXLFBR(buf, 0, 0, r1_hi, r2_hi);
+ case S390_BFP_U64_TO_F128: return s390_emit_CXLGBR(buf, 0, 0, r1_hi, r2_hi);
+ case S390_BFP_F32_TO_F128: return s390_emit_LXEBR(buf, r1_hi, r2_hi);
+ case S390_BFP_F64_TO_F128: return s390_emit_LXDBR(buf, r1_hi, r2_hi);
- return buf;
-
- fail:
- vpanic("s390_insn_bfp128_convert_to_emit");
-}
-
-
-static UChar *
-s390_insn_bfp128_convert_from_emit(UChar *buf, const s390_insn *insn)
-{
- UInt r1 = hregNumber(insn->variant.bfp128_unop.dst_hi);
- UInt r2_hi = hregNumber(insn->variant.bfp128_unop.op_hi);
- UInt r2_lo = hregNumber(insn->variant.bfp128_unop.op_lo);
- s390_round_t rounding_mode = insn->variant.bfp128_unop.rounding_mode;
-
- /* Paranoia */
- vassert(insn->size != 16);
- vassert(r2_lo == r2_hi + 2);
- vassert((r2_hi & 0x2) == 0);
-
- /* The "convert to fixed" instructions have a field for the rounding
- mode and no FPC modification is necessary. So we handle them
- upfront. */
- switch (insn->variant.bfp_unop.tag) {
+ /* Conversion from 128-bit requires a rounding mode */
case S390_BFP_F128_TO_I32:
- return s390_emit_CFXBR(buf, rounding_mode, r1, r2_hi);
+ return s390_emit_CFXBR(buf, rounding_mode, r1_hi, r2_hi);
case S390_BFP_F128_TO_I64:
- return s390_emit_CGXBR(buf, rounding_mode, r1, r2_hi);
+ return s390_emit_CGXBR(buf, rounding_mode, r1_hi, r2_hi);
case S390_BFP_F128_TO_U32:
- return s390_emit_CLFXBR(buf, rounding_mode, 0, r1, r2_hi);
+ return s390_emit_CLFXBR(buf, rounding_mode, 0, r1_hi, r2_hi);
case S390_BFP_F128_TO_U64:
- return s390_emit_CLGXBR(buf, rounding_mode, 0, r1, r2_hi);
+ return s390_emit_CLGXBR(buf, rounding_mode, 0, r1_hi, r2_hi);
- default: break;
+ case S390_BFP_F128_TO_F32:
+ if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+ buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
+ }
+ buf = s390_emit_LEXBRA(buf, 0, 0, r1_hi, r2_hi);
+ if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+ /* Restore FPC register from guest state */
+ buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
+ S390X_GUEST_OFFSET(guest_fpc)); // fpc = guest_fpc
+ }
+ return buf;
+
+ case S390_BFP_F128_TO_F64:
+ if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+ buf = s390_set_fpc_rounding_mode(buf, rounding_mode);
+ }
+ buf = s390_emit_LDXBRA(buf, 0, 0, r1_hi, r2_hi);
+ if (rounding_mode != S390_ROUND_NEAREST_EVEN) {
+ /* Restore FPC register from guest state */
+ buf = s390_emit_LFPC(buf, S390_REGNO_GUEST_STATE_POINTER,
+ S390X_GUEST_OFFSET(guest_fpc)); // fpc = guest_fpc
+ }
+ return buf;
+
+ default: goto fail;
}
- vpanic("s390_insn_bfp128_convert_from_emit");
+ fail:
+ vpanic("s390_insn_bfp128_convert_emit");
}
@@ -8245,6 +8313,10 @@
end = s390_insn_bfp_compare_emit(buf, insn);
break;
+ case S390_INSN_BFP_CONVERT:
+ end = s390_insn_bfp_convert_emit(buf, insn);
+ break;
+
case S390_INSN_BFP128_BINOP:
end = s390_insn_bfp128_binop_emit(buf, insn);
break;
@@ -8257,14 +8329,10 @@
end = s390_insn_bfp128_unop_emit(buf, insn);
break;
- case S390_INSN_BFP128_CONVERT_TO:
- end = s390_insn_bfp128_convert_to_emit(buf, insn);
+ case S390_INSN_BFP128_CONVERT:
+ end = s390_insn_bfp128_convert_emit(buf, insn);
break;
- case S390_INSN_BFP128_CONVERT_FROM:
- end = s390_insn_bfp128_convert_from_emit(buf, insn);
- break;
-
case S390_INSN_MFENCE:
end = s390_insn_mfence_emit(buf, insn);
break;
Modified: trunk/priv/host_s390_isel.c (+89 -82)
===================================================================
--- trunk/priv/host_s390_isel.c 2012-09-09 19:18:25 +01:00 (rev 2521)
+++ trunk/priv/host_s390_isel.c 2012-09-10 04:09:04 +01:00 (rev 2522)
@@ -785,7 +785,7 @@
{
IRType ty = typeOfIRExpr(env->type_env, expr);
UChar size;
- s390_bfp_unop_t bfpop;
+ s390_conv_t conv;
vassert(ty == Ity_I8 || ty == Ity_I16 || ty == Ity_I32 || ty == Ity_I64);
@@ -911,18 +911,18 @@
return res;
}
- case Iop_F32toI32S: bfpop = S390_BFP_F32_TO_I32; goto do_convert;
- case Iop_F32toI64S: bfpop = S390_BFP_F32_TO_I64; goto do_convert;
- case Iop_F32toI32U: bfpop = S390_BFP_F32_TO_U32; goto do_convert;
- case Iop_F32toI64U: bfpop = S390_BFP_F32_TO_U64; goto do_convert;
- case Iop_F64toI32S: bfpop = S390_BFP_F64_TO_I32; goto do_convert;
- case Iop_F64toI64S: bfpop = S390_BFP_F64_TO_I64; goto do_convert;
- case Iop_F64toI32U: bfpop = S390_BFP_F64_TO_U32; goto do_convert;
- case Iop_F64toI64U: bfpop = S390_BFP_F64_TO_U64; goto do_convert;
- case Iop_F128toI32S: bfpop = S390_BFP_F128_TO_I32; goto do_convert_128;
- case Iop_F128toI64S: bfpop = S390_BFP_F128_TO_I64; goto do_convert_128;
- case Iop_F128toI32U: bfpop = S390_BFP_F128_TO_U32; goto do_convert_128;
- case Iop_F128toI64U: bfpop = S390_BFP_F128_TO_U64; goto do_convert_128;
+ case Iop_F32toI32S: conv = S390_BFP_F32_TO_I32; goto do_convert;
+ case Iop_F32toI64S: conv = S390_BFP_F32_TO_I64; goto do_convert;
+ case Iop_F32toI32U: conv = S390_BFP_F32_TO_U32; goto do_convert;
+ case Iop_F32toI64U: conv = S390_BFP_F32_TO_U64; goto do_convert;
+ case Iop_F64toI32S: conv = S390_BFP_F64_TO_I32; goto do_convert;
+ case Iop_F64toI64S: conv = S390_BFP_F64_TO_I64; goto do_convert;
+ case Iop_F64toI32U: conv = S390_BFP_F64_TO_U32; goto do_convert;
+ case Iop_F64toI64U: conv = S390_BFP_F64_TO_U64; goto do_convert;
+ case Iop_F128toI32S: conv = S390_BFP_F128_TO_I32; goto do_convert_128;
+ case Iop_F128toI64S: conv = S390_BFP_F128_TO_I64; goto do_convert_128;
+ case Iop_F128toI32U: conv = S390_BFP_F128_TO_U32; goto do_convert_128;
+ case Iop_F128toI64U: conv = S390_BFP_F128_TO_U64; goto do_convert_128;
do_convert: {
s390_round_t rounding_mode;
@@ -931,7 +931,7 @@
h1 = s390_isel_float_expr(env, arg2); /* Process operand */
rounding_mode = decode_rounding_mode(arg1);
- addInstr(env, s390_insn_bfp_unop(size, bfpop, res, h1, rounding_mode));
+ addInstr(env, s390_insn_bfp_convert(size, conv, res, h1, rounding_mode));
return res;
}
@@ -951,7 +951,7 @@
addInstr(env, s390_insn_move(8, f15, op_lo));
rounding_mode = decode_rounding_mode(arg1);
- addInstr(env, s390_insn_bfp128_convert_from(size, bfpop, res, f13, f15,
+ addInstr(env, s390_insn_bfp128_convert_from(size, conv, res, f13, f15,
rounding_mode));
return res;
}
@@ -1665,6 +1665,7 @@
IRExpr *left = expr->Iex.Unop.arg;
s390_bfp_unop_t bfpop;
s390_round_t rounding_mode;
+ s390_conv_t conv;
HReg op_hi, op_lo, op, f12, f13, f14, f15;
/* We use non-virtual registers as pairs (f13, f15) and (f12, f14)) */
@@ -1674,14 +1675,14 @@
f15 = make_fpr(15);
switch (expr->Iex.Unop.op) {
- case Iop_NegF128: bfpop = S390_BFP_NEG; goto float128_opnd;
- case Iop_AbsF128: bfpop = S390_BFP_ABS; goto float128_opnd;
- case Iop_I32StoF128: bfpop = S390_BFP_I32_TO_F128; goto convert_int;
- case Iop_I64StoF128: bfpop = S390_BFP_I64_TO_F128; goto convert_int;
- case Iop_I32UtoF128: bfpop = S390_BFP_U32_TO_F128; goto convert_int;
- case Iop_I64UtoF128: bfpop = S390_BFP_U64_TO_F128; goto convert_int;
- case Iop_F32toF128: bfpop = S390_BFP_F32_TO_F128; goto convert_float;
- case Iop_F64toF128: bfpop = S390_BFP_F64_TO_F128; goto convert_float;
+ case Iop_NegF128: bfpop = S390_BFP_NEG; goto float128_opnd;
+ case Iop_AbsF128: bfpop = S390_BFP_ABS; goto float128_opnd;
+ case Iop_I32StoF128: conv = S390_BFP_I32_TO_F128; goto convert_int;
+ case Iop_I64StoF128: conv = S390_BFP_I64_TO_F128; goto convert_int;
+ case Iop_I32UtoF128: conv = S390_BFP_U32_TO_F128; goto convert_int;
+ case Iop_I64UtoF128: conv = S390_BFP_U64_TO_F128; goto convert_int;
+ case Iop_F32toF128: conv = S390_BFP_F32_TO_F128; goto convert_float;
+ case Iop_F64toF128: conv = S390_BFP_F64_TO_F128; goto convert_float;
default:
goto irreducible;
}
@@ -1700,14 +1701,12 @@
convert_float:
op = s390_isel_float_expr(env, left);
- addInstr(env, s390_insn_bfp128_convert_to(16, bfpop, f12, f14,
- op));
+ addInstr(env, s390_insn_bfp128_convert_to(16, conv, f12, f14, op));
goto move_dst;
convert_int:
op = s390_isel_int_expr(env, left);
- addInstr(env, s390_insn_bfp128_convert_to(16, bfpop, f12, f14,
- op));
+ addInstr(env, s390_insn_bfp128_convert_to(16, conv, f12, f14, op));
goto move_dst;
move_dst:
@@ -1874,51 +1873,61 @@
/* --------- BINARY OP --------- */
case Iex_Binop: {
IROp op = expr->Iex.Binop.op;
+ IRExpr *irrm = expr->Iex.Binop.arg1;
IRExpr *left = expr->Iex.Binop.arg2;
HReg h1, dst;
- s390_bfp_unop_t bfpop;
s390_round_t rounding_mode;
- Int integer_operand;
+ s390_conv_t conv;
- integer_operand = 1;
-
switch (op) {
case Iop_SqrtF32:
case Iop_SqrtF64:
- bfpop = S390_BFP_SQRT;
- integer_operand = 0;
- break;
+ h1 = s390_isel_float_expr(env, left);
+ dst = newVRegF(env);
+ rounding_mode = decode_rounding_mode(irrm);
+ addInstr(env, s390_insn_bfp_unop(size, S390_BFP_SQRT, dst, h1,
+ rounding_mode));
+ return dst;
- case Iop_F64toF32:
- bfpop = S390_BFP_F64_TO_F32;
- integer_operand = 0;
- break;
+ case Iop_F64toF32: conv = S390_BFP_F64_TO_F32; goto convert_float;
+ case Iop_I32StoF32: conv = S390_BFP_I32_TO_F32; goto convert_int;
+ case Iop_I32UtoF32: conv = S390_BFP_U32_TO_F32; goto convert_int;
+ case Iop_I64StoF32: conv = S390_BFP_I64_TO_F32; goto convert_int;
+ case Iop_I64StoF64: conv = S390_BFP_I64_TO_F64; goto convert_int;
+ case Iop_I64UtoF32: conv = S390_BFP_U64_TO_F32; goto convert_int;
+ case Iop_I64UtoF64: conv = S390_BFP_U64_TO_F64; goto convert_int;
- case Iop_I32StoF32: bfpop = S390_BFP_I32_TO_F32; break;
- case Iop_I32UtoF32: bfpop = S390_BFP_U32_TO_F32; break;
- case Iop_I64StoF32: bfpop = S390_BFP_I64_TO_F32; break;
- case Iop_I64StoF64: bfpop = S390_BFP_I64_TO_F64; break;
- case Iop_I64UtoF32: bfpop = S390_BFP_U64_TO_F32; break;
- case Iop_I64UtoF64: bfpop = S390_BFP_U64_TO_F64; break;
+ convert_float:
+ h1 = s390_isel_float_expr(env, left);
+ goto convert;
+ convert_int:
+ h1 = s390_isel_int_expr(env, left);
+ goto convert;
+
+ convert:
+ dst = newVRegF(env);
+ rounding_mode = decode_rounding_mode(irrm);
+ addInstr(env, s390_insn_bfp_convert(size, conv, dst, h1,
+ rounding_mode));
+ return dst;
+
default:
goto irreducible;
case Iop_F128toF64:
case Iop_F128toF32: {
- HReg op_hi, op_lo, f12, f13, f14, f15;
+ HReg op_hi, op_lo, f13, f15;
- bfpop = op == Iop_F128toF32 ? S390_BFP_F128_TO_F32
- : S390_BFP_F128_TO_F64;
+ conv = op == Iop_F128toF32 ? S390_BFP_F128_TO_F32
+ : S390_BFP_F128_TO_F64;
- rounding_mode = decode_rounding_mode(expr->Iex.Binop.arg1);
+ rounding_mode = decode_rounding_mode(irrm);
- s390_isel_float128_expr(&op_hi, &op_lo, env, expr->Iex.Binop.arg2);
+ s390_isel_float128_expr(&op_hi, &op_lo, env, left);
- /* We use non-virtual registers as pairs (f13, f15) and (f12, f14)) */
- f12 = make_fpr(12);
+ /* We use non-virtual registers as pairs (f13, f15) */
f13 = make_fpr(13);
- f14 = make_fpr(14);
f15 = make_fpr(15);
/* operand --> (f13, f15) */
@@ -1926,26 +1935,11 @@
addInstr(env, s390_insn_move(8, f15, op_lo));
dst = newVRegF(env);
- addInstr(env, s390_insn_bfp128_unop(16, bfpop, f12, f14, f13, f15,
- rounding_mode));
-
- /* Move result to virtual destination registers */
- addInstr(env, s390_insn_move(8, dst, f12));
+ addInstr(env, s390_insn_bfp128_convert_from(16, conv, dst, f13, f15,
+ rounding_mode));
return dst;
}
}
-
- /* Process operand */
- if (integer_operand) {
- h1 = s390_isel_int_expr(env, left);
- } else {
- h1 = s390_isel_float_expr(env, left);
- }
-
- dst = newVRegF(env);
- rounding_mode = decode_rounding_mode(expr->Iex.Binop.arg1);
- addInstr(env, s390_insn_bfp_unop(size, bfpop, dst, h1, rounding_mode));
- return dst;
}
/* --------- UNARY OP --------- */
@@ -1953,7 +1947,10 @@
IROp op = expr->Iex.Unop.op;
IRExpr *left = expr->Iex.Unop.arg;
s390_bfp_unop_t bfpop;
- s390_round_t rounding_mode;
+ /* No rounding mode is needed for these conversions. Provide the
+ default rounding mode. It will not be used. */
+ s390_round_t rounding_mode = S390_ROUND_NEAREST_EVEN;
+ s390_conv_t conv;
HReg h1, dst;
if (op == Iop_F128HItoF64 || op == Iop_F128LOtoF64) {
@@ -1982,24 +1979,34 @@
break;
case Iop_AbsF32:
- case Iop_AbsF64: bfpop = S390_BFP_ABS; break;
- case Iop_I32StoF64: bfpop = S390_BFP_I32_TO_F64; break;
- case Iop_I32UtoF64: bfpop = S390_BFP_U32_TO_F64; break;
- case Iop_F32toF64: bfpop = S390_BFP_F32_TO_F64; break;
+ case Iop_AbsF64:
+ bfpop = S390_BFP_ABS;
+ break;
+
+ case Iop_I32StoF64: conv = S390_BFP_I32_TO_F64; goto convert_int1;
+ case Iop_I32UtoF64: conv = S390_BFP_U32_TO_F64; goto convert_int1;
+ case Iop_F32toF64: conv = S390_BFP_F32_TO_F64; goto convert_float1;
+
+ convert_float1:
+ h1 = s390_isel_float_expr(env, left);
+ goto convert1;
+
+ convert_int1:
+ h1 = s390_isel_int_expr(env, left);
+ goto convert1;
+
+ convert1:
+ dst = newVRegF(env);
+ addInstr(env, s390_insn_bfp_convert(size, conv, dst, h1, rounding_mode));
+ return dst;
+
default:
goto irreducible;
}
/* Process operand */
- if (op == Iop_I32StoF64 || op == Iop_I32UtoF64)
- h1 = s390_isel_int_expr(env, left);
- else if (bfpop == S390_BFP_NABS)
- h1 = s390_isel_float_expr(env, left->Iex.Unop.arg);
- else
- h1 = s390_isel_float_expr(env, left);
-
+ h1 = s390_isel_float_expr(env, left);
dst = newVRegF(env);
- rounding_mode = S390_ROUND_NEAREST_EVEN; /* will not be used later on */
addInstr(env, s390_insn_bfp_unop(size, bfpop, dst, h1, rounding_mode));
return dst;
}
|
|
From: Rich C. <rc...@wi...> - 2012-09-10 02:55:19
|
valgrind revision: 12963
VEX revision: 2521
C compiler: gcc (SUSE Linux) 4.5.1 20101208 [gcc-4_5-branch revision 167585]
Assembler: GNU assembler (GNU Binutils; openSUSE 11.4) 2.21
C library: GNU C Library stable release version 2.11.3 (20110203)
uname -mrs: Linux 2.6.37.6-0.7-desktop x86_64
Vendor version: Welcome to openSUSE 11.4 "Celadon" - Kernel %r (%t).
Nightly build on ultra ( gcc 4.5.1 Linux 2.6.37.6-0.7-desktop x86_64 )
Started at 2012-09-09 21:30:01 CDT
Ended at 2012-09-09 21:55:10 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 618 tests, 2 stderr failures, 0 stdout failures, 6 stderrB failures, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mcbreak (stderrB)
gdbserver_tests/mcclean_after_fork (stderrB)
gdbserver_tests/mcleak (stderrB)
gdbserver_tests/mcmain_pic (stderrB)
gdbserver_tests/mcvabits (stderrB)
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/linux/timerfd-syscall (stderr)
memcheck/tests/origin5-bz2 (stderr)
=================================================
./valgrind-new/gdbserver_tests/mcbreak.stderrB.diff
=================================================
--- mcbreak.stderrB.exp 2012-09-09 21:42:55.749563915 -0500
+++ mcbreak.stderrB.out 2012-09-09 21:46:11.482223813 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
vgdb-error value changed from 999999 to 0
n_errs_found 1 n_errs_shown 1 (vgdb-error 0)
vgdb-error value changed from 0 to 0
=================================================
./valgrind-new/gdbserver_tests/mcclean_after_fork.stderrB.diff
=================================================
--- mcclean_after_fork.stderrB.exp 2012-09-09 21:42:55.749563915 -0500
+++ mcclean_after_fork.stderrB.out 2012-09-09 21:46:13.178420183 -0500
@@ -1,4 +1,6 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
monitor command request to kill this process
Remote connection closed
=================================================
./valgrind-new/gdbserver_tests/mcleak.stderrB.diff
=================================================
--- mcleak.stderrB.exp 2012-09-09 21:42:55.746563568 -0500
+++ mcleak.stderrB.out 2012-09-09 21:46:32.771688520 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
10 bytes in 1 blocks are still reachable in loss record ... of ...
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: f (leak-delta.c:14)
=================================================
./valgrind-new/gdbserver_tests/mcmain_pic.stderrB.diff
=================================================
--- mcmain_pic.stderrB.exp 2012-09-09 21:42:55.753564378 -0500
+++ mcmain_pic.stderrB.out 2012-09-09 21:46:34.390875976 -0500
@@ -1,3 +1,5 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Remote connection closed
=================================================
./valgrind-new/gdbserver_tests/mcvabits.stderrB.diff
=================================================
--- mcvabits.stderrB.exp 2012-09-09 21:42:55.754564494 -0500
+++ mcvabits.stderrB.out 2012-09-09 21:46:39.305444943 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Address 0x........ len 10 addressable
Address 0x........ is 0 bytes inside data symbol "undefined"
Address 0x........ len 10 defined
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2012-09-09 21:42:55.753564378 -0500
+++ mssnapshot.stderrB.out 2012-09-09 21:46:42.453809435 -0500
@@ -1,5 +1,9 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=92ec8fe859846a62345f74696ab349721415587a"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/memcheck/tests/linux/timerfd-syscall.stderr.diff
=================================================
--- timerfd-syscall.stderr.exp 2012-09-09 21:42:56.329631068 -0500
+++ timerfd-syscall.stderr.out 2012-09-09 21:47:46.798258720 -0500
@@ -33,7 +33,7 @@
got timer ticks (1) after 0.5 s
absolute timer test (at 500 ms) ...
waiting timer ...
-got timer ticks (1) after 0.5 s
+got timer ticks (1) after 0.0 s
sequential timer test (100 ms clock) ...
sleeping one second ...
timerfd_gettime returned:
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2012-09-09 21:42:57.154726588 -0500
+++ origin5-bz2.stderr.out 2012-09-09 21:48:02.192040899 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2012-09-09 21:42:57.137724620 -0500
+++ origin5-bz2.stderr.out 2012-09-09 21:48:02.192040899 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2012-09-09 21:42:57.080718020 -0500
+++ origin5-bz2.stderr.out 2012-09-09 21:48:02.192040899 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2012-09-09 21:42:57.110721494 -0500
+++ origin5-bz2.stderr.out 2012-09-09 21:48:02.192040899 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2012-09-09 21:42:57.123722999 -0500
+++ origin5-bz2.stderr.out 2012-09-09 21:48:02.192040899 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-old/gdbserver_tests/mcbreak.stderrB.diff
=================================================
--- mcbreak.stderrB.exp 2012-09-09 21:30:32.207489967 -0500
+++ mcbreak.stderrB.out 2012-09-09 21:33:54.932956941 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
vgdb-error value changed from 999999 to 0
n_errs_found 1 n_errs_shown 1 (vgdb-error 0)
vgdb-error value changed from 0 to 0
=================================================
./valgrind-old/gdbserver_tests/mcclean_after_fork.stderrB.diff
=================================================
--- mcclean_after_fork.stderrB.exp 2012-09-09 21:30:32.207489967 -0500
+++ mcclean_after_fork.stderrB.out 2012-09-09 21:33:56.639154449 -0500
@@ -1,4 +1,6 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
monitor command request to kill this process
Remote connection closed
=================================================
./valgrind-old/gdbserver_tests/mcleak.stderrB.diff
=================================================
--- mcleak.stderrB.exp 2012-09-09 21:30:32.204489620 -0500
+++ mcleak.stderrB.out 2012-09-09 21:34:15.870380645 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
10 bytes in 1 blocks are still reachable in loss record ... of ...
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: f (leak-delta.c:14)
=================================================
./valgrind-old/gdbserver_tests/mcmain_pic.stderrB.diff
=================================================
--- mcmain_pic.stderrB.exp 2012-09-09 21:30:32.210490315 -0500
+++ mcmain_pic.stderrB.out 2012-09-09 21:34:17.467565534 -0500
@@ -1,3 +1,5 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Remote connection closed
=================================================
./valgrind-old/gdbserver_tests/mcvabits.stderrB.diff
=================================================
--- mcvabits.stderrB.exp 2012-09-09 21:30:32.212490546 -0500
+++ mcvabits.stderrB.out 2012-09-09 21:34:22.455142895 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Address 0x........ len 10 addressable
Address 0x........ is 0 bytes inside data symbol "undefined"
Address 0x........ len 10 defined
=================================================
./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2012-09-09 21:30:32.210490315 -0500
+++ mssnapshot.stderrB.out 2012-09-09 21:34:25.607507811 -0500
@@ -1,5 +1,9 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=92ec8fe859846a62345f74696ab349721415587a"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-old/memcheck/tests/linux/timerfd-syscall.stderr.diff
=================================================
--- timerfd-syscall.stderr.exp 2012-09-09 21:30:32.470520415 -0500
+++ timerfd-syscall.stderr.out 2012-09-09 21:35:29.495903552 -0500
@@ -33,7 +33,7 @@
got timer ticks (1) after 0.5 s
absolute timer test (at 500 ms) ...
waiting timer ...
-got timer ticks (1) after 0.5 s
+got timer ticks (1) after 0.0 s
sequential timer test (100 ms clock) ...
sleeping one second ...
timerfd_gettime returned:
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2012-09-09 21:30:33.177602263 -0500
+++ origin5-bz2.stderr.out 2012-09-09 21:35:44.580649778 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2012-09-09 21:30:33.160600295 -0500
+++ origin5-bz2.stderr.out 2012-09-09 21:35:44.580649778 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2012-09-09 21:30:33.104593812 -0500
+++ origin5-bz2.stderr.out 2012-09-09 21:35:44.580649778 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2012-09-09 21:30:33.134597285 -0500
+++ origin5-bz2.stderr.out 2012-09-09 21:35:44.580649778 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2012-09-09 21:30:33.147598790 -0500
+++ origin5-bz2.stderr.out 2012-09-09 21:35:44.580649778 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
|
|
From: <br...@ac...> - 2012-09-10 02:54:32
|
valgrind revision: 12963
VEX revision: 2521
C compiler: gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3)
Assembler: GNU assembler 2.15.92.0.2 20040927
C library: GNU C Library stable release version 2.3.4
uname -mrs: Linux 2.6.9-42.EL s390x
Vendor version: Red Hat Enterprise Linux AS release 4 (Nahant Update 4)
Nightly build on z10-ec ( s390x build on z10-EC )
Started at 2012-09-09 22:20:14 EDT
Ended at 2012-09-09 22:54:19 EDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 531 tests, 6 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
memcheck/tests/manuel3 (stderr)
memcheck/tests/partial_load_ok (stderr)
memcheck/tests/varinfo6 (stderr)
none/tests/s390x/fpconv (stdout)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc18_semabuse (stderr)
helgrind/tests/tc20_verifywrap (stderr)
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff
=================================================
--- tc09_bad_unlock.stderr.exp 2012-09-09 22:37:37.000000000 -0400
+++ tc09_bad_unlock.stderr.out 2012-09-09 22:49:43.000000000 -0400
@@ -42,14 +42,6 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:49)
-
---------------------
----------------------------------------------------------------
@@ -110,16 +102,8 @@
----------------------------------------------------------------
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-----------------------------------------------------------------
-
Thread #x: Exiting thread still holds 1 lock
...
-ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc18_semabuse.stderr.diff
=================================================
--- tc18_semabuse.stderr.exp 2012-09-09 22:37:37.000000000 -0400
+++ tc18_semabuse.stderr.out 2012-09-09 22:49:52.000000000 -0400
@@ -18,13 +18,5 @@
by 0x........: sem_wait (hg_intercepts.c:...)
by 0x........: main (tc18_semabuse.c:34)
-----------------------------------------------------------------
-Thread #x's call to sem_post failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: sem_post_WRK (hg_intercepts.c:...)
- by 0x........: sem_post (hg_intercepts.c:...)
- by 0x........: main (tc18_semabuse.c:37)
-
-
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc20_verifywrap.stderr.diff
=================================================
--- tc20_verifywrap.stderr.exp 2012-09-09 22:37:37.000000000 -0400
+++ tc20_verifywrap.stderr.out 2012-09-09 22:50:01.000000000 -0400
@@ -1,7 +1,7 @@
------- This is output for >= glibc 2.4 ------
+------ This is output for < glibc 2.4 ------
---------------- pthread_create/join ----------------
@@ -45,13 +45,6 @@
----------------------------------------------------------------
-Thread #x's call to pthread_mutex_init failed
- with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint)
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:92)
-
-----------------------------------------------------------------
-
Thread #x: pthread_mutex_destroy of a locked mutex
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
@@ -63,26 +56,8 @@
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_lock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:108)
-
-----------------------------------------------------------------
-Thread #x's call to pthread_mutex_trylock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_trylock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:116)
-
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_timedlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:121)
+make pthread_mutex_lock fail: skipped on glibc < 2.4
----------------------------------------------------------------
@@ -90,13 +65,6 @@
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:125)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:125)
-
---------------- pthread_cond_wait et al ----------------
@@ -215,14 +183,6 @@
by 0x........: sem_wait (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:242)
-----------------------------------------------------------------
-
-Thread #x's call to sem_post failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: sem_post_WRK (hg_intercepts.c:...)
- by 0x........: sem_post (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:245)
-
FIXME: can't figure out how to verify wrap of sem_post
@@ -235,4 +195,4 @@
...
-ERROR SUMMARY: 23 errors from 23 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 17 errors from 17 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/memcheck/tests/manuel3.stderr.diff
=================================================
--- manuel3.stderr.exp 2012-09-09 22:37:44.000000000 -0400
+++ manuel3.stderr.out 2012-09-09 22:44:21.000000000 -0400
@@ -1,4 +1,3 @@
Conditional jump or move depends on uninitialised value(s)
- at 0x........: gcc_cant_inline_me (manuel3.c:22)
- by 0x........: main (manuel3.c:14)
+ at 0x........: main (manuel3.c:12)
=================================================
./valgrind-new/memcheck/tests/partial_load_ok.stderr.diff
=================================================
--- partial_load_ok.stderr.exp 2012-09-09 22:37:43.000000000 -0400
+++ partial_load_ok.stderr.out 2012-09-09 22:44:52.000000000 -0400
@@ -1,7 +1,13 @@
-Invalid read of size 4
+Invalid read of size 1
+ at 0x........: main (partial_load.c:16)
+ Address 0x........ is 0 bytes after a block of size 7 alloc'd
+ at 0x........: calloc (vg_replace_malloc.c:...)
+ by 0x........: main (partial_load.c:14)
+
+Invalid read of size 8
at 0x........: main (partial_load.c:23)
- Address 0x........ is 1 bytes inside a block of size 4 alloc'd
+ Address 0x........ is 1 bytes inside a block of size 8 alloc'd
at 0x........: calloc (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:20)
@@ -11,9 +17,9 @@
at 0x........: calloc (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:28)
-Invalid read of size 4
+Invalid read of size 8
at 0x........: main (partial_load.c:37)
- Address 0x........ is 0 bytes inside a block of size 4 free'd
+ Address 0x........ is 0 bytes inside a block of size 8 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:36)
@@ -25,4 +31,4 @@
For a detailed leak analysis, rerun with: --leak-check=full
For counts of detected and suppressed errors, rerun with: -v
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/memcheck/tests/partial_load_ok.stderr.diff64
=================================================
--- partial_load_ok.stderr.exp64 2012-09-09 22:37:43.000000000 -0400
+++ partial_load_ok.stderr.out 2012-09-09 22:44:52.000000000 -0400
@@ -1,4 +1,10 @@
+Invalid read of size 1
+ at 0x........: main (partial_load.c:16)
+ Address 0x........ is 0 bytes after a block of size 7 alloc'd
+ at 0x........: calloc (vg_replace_malloc.c:...)
+ by 0x........: main (partial_load.c:14)
+
Invalid read of size 8
at 0x........: main (partial_load.c:23)
Address 0x........ is 1 bytes inside a block of size 8 alloc'd
@@ -25,4 +31,4 @@
For a detailed leak analysis, rerun with: --leak-check=full
For counts of detected and suppressed errors, rerun with: -v
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/memcheck/tests/varinfo6.stderr.diff
=================================================
--- varinfo6.stderr.exp 2012-09-09 22:37:43.000000000 -0400
+++ varinfo6.stderr.out 2012-09-09 22:45:53.000000000 -0400
@@ -7,8 +7,7 @@
by 0x........: BZ2_bzCompress (varinfo6.c:4860)
by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667)
by 0x........: main (varinfo6.c:6517)
- Location 0x........ is 2 bytes inside local var "budget"
- declared at varinfo6.c:3115, in frame #2 of thread 1
+ Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo6.c:34)
=================================================
./valgrind-new/memcheck/tests/varinfo6.stderr.diff-ppc64
=================================================
--- varinfo6.stderr.exp-ppc64 2012-09-09 22:37:43.000000000 -0400
+++ varinfo6.stderr.out 2012-09-09 22:45:53.000000000 -0400
@@ -1,5 +1,5 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: mainSort (varinfo6.c:2999)
by 0x........: BZ2_blockSort (varinfo6.c:3143)
by 0x........: BZ2_compressBlock (varinfo6.c:4072)
@@ -10,7 +10,7 @@
Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: BZ2_decompress (varinfo6.c:1699)
by 0x........: BZ2_bzDecompress (varinfo6.c:5230)
by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715)
=================================================
./valgrind-new/none/tests/s390x/fpconv.stdout.diff
=================================================
--- fpconv.stdout.exp 2012-09-09 22:37:57.000000000 -0400
+++ fpconv.stdout.out 2012-09-09 22:47:59.000000000 -0400
@@ -35,137 +35,137 @@
"cdgbr" -9223372036854775808.000000
"cdgbr" 9223372036854775808.000000
"cxfbr" 0.000000
-"cxfbr" 1.000000
-"cxfbr" -1.000000
-"cxfbr" -2147483648.000000
-"cxfbr" 2147483647.000000
+"cxfbr" 1.937500
+"cxfbr" -1.937500
+"cxfbr" -7.500000
+"cxfbr" 7.500000
"cxfbr" 0.000000
-"cxfbr" -1.000000
+"cxfbr" -1.937500
"cxfbr" 0.000000
-"cxfbr" -1.000000
+"cxfbr" -1.937500
"cxgbr" 0.000000
-"cxgbr" 1.000000
-"cxgbr" 4294967295.000000
-"cxgbr" 2147483648.000000
-"cxgbr" 2147483647.000000
-"cxgbr" 4294967296.000000
-"cxgbr" -1.000000
-"cxgbr" -9223372036854775808.000000
-"cxgbr" 9223372036854775807.000000
-"cfebr" 4294967295 cc=1
-"cfebr" 0 cc=0
-"cfebr" 1 cc=2
-"cfebr" 1 cc=2
-"cfebr" 2 cc=2
-"cfebr" 2 cc=2
-"cfebr" 16000 cc=2
-"cfebr" 160000000 cc=2
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=2
-"cfebr" 0 cc=2
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=0
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=0
-"cfebr" 2147483647 cc=3
-"cgebr" -1 cc=1
-"cgebr" 0 cc=0
-"cgebr" 1 cc=2
-"cgebr" 1 cc=2
-"cgebr" 2 cc=2
-"cgebr" 2 cc=2
-"cgebr" 16000 cc=2
-"cgebr" 160000000 cc=2
-"cgebr" 1599999967232 cc=2
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=2
-"cgebr" 0 cc=2
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=0
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=0
-"cgebr" 9223372036854775807 cc=3
-"cfdbr" 4294967295 cc=1
-"cfdbr" 0 cc=0
-"cfdbr" 1 cc=2
-"cfdbr" 1 cc=2
-"cfdbr" 2 cc=2
-"cfdbr" 2 cc=2
-"cfdbr" 16000 cc=2
-"cfdbr" 160000000 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=2
-"cfdbr" 0 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=0
-"cfdbr" 2147483647 cc=3
-"cgdbr" -1 cc=1
-"cgdbr" 0 cc=0
-"cgdbr" 1 cc=2
-"cgdbr" 1 cc=2
-"cgdbr" 2 cc=2
-"cgdbr" 2 cc=2
-"cgdbr" 16000 cc=2
-"cgdbr" 160000000 cc=2
-"cgdbr" 1600000000000 cc=2
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 0 cc=2
-"cgdbr" 0 cc=2
<truncated beyond 100 lines>
=================================================
./valgrind-old/helgrind/tests/tc09_bad_unlock.stderr.diff
=================================================
--- tc09_bad_unlock.stderr.exp 2012-09-09 22:20:42.000000000 -0400
+++ tc09_bad_unlock.stderr.out 2012-09-09 22:32:54.000000000 -0400
@@ -42,14 +42,6 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:49)
-
---------------------
----------------------------------------------------------------
@@ -110,16 +102,8 @@
----------------------------------------------------------------
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-----------------------------------------------------------------
-
Thread #x: Exiting thread still holds 1 lock
...
-ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/helgrind/tests/tc18_semabuse.stderr.diff
=================================================
--- tc18_semabuse.stderr.exp 2012-09-09 22:20:42.000000000 -0400
+++ tc18_semabuse.stderr.out 2012-09-09 22:33:02.000000000 -0400
@@ -18,13 +18,5 @@
by 0x........: sem_wait (hg_intercepts.c:...)
by 0x........: main (tc18_semabuse.c:34)
-----------------------------------------------------------------
-Thread #x's call to sem_post failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: sem_post_WRK (hg_intercepts.c:...)
- by 0x........: sem_post (hg_intercepts.c:...)
- by 0x........: main (tc18_semabuse.c:37)
-
-
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/helgrind/tests/tc20_verifywrap.stderr.diff
=================================================
--- tc20_verifywrap.stderr.exp 2012-09-09 22:20:42.000000000 -0400
+++ tc20_verifywrap.stderr.out 2012-09-09 22:33:12.000000000 -0400
@@ -1,7 +1,7 @@
------- This is output for >= glibc 2.4 ------
+------ This is output for < glibc 2.4 ------
---------------- pthread_create/join ----------------
@@ -45,13 +45,6 @@
----------------------------------------------------------------
-Thread #x's call to pthread_mutex_init failed
- with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint)
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:92)
-
-----------------------------------------------------------------
-
Thread #x: pthread_mutex_destroy of a locked mutex
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
@@ -63,26 +56,8 @@
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_lock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:108)
-
-----------------------------------------------------------------
-Thread #x's call to pthread_mutex_trylock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_trylock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:116)
-
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_timedlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:121)
+make pthread_mutex_lock fail: skipped on glibc < 2.4
----------------------------------------------------------------
@@ -90,13 +65,6 @@
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:125)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:125)
-
---------------- pthread_cond_wait et al ----------------
@@ -215,14 +183,6 @@
by 0x........: sem_wait (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:242)
-----------------------------------------------------------------
-
-Thread #x's call to sem_post failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: sem_post_WRK (hg_intercepts.c:...)
- by 0x........: sem_post (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:245)
-
FIXME: can't figure out how to verify wrap of sem_post
@@ -235,4 +195,4 @@
...
-ERROR SUMMARY: 23 errors from 23 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 17 errors from 17 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/memcheck/tests/manuel3.stderr.diff
=================================================
--- manuel3.stderr.exp 2012-09-09 22:20:51.000000000 -0400
+++ manuel3.stderr.out 2012-09-09 22:27:30.000000000 -0400
@@ -1,4 +1,3 @@
Conditional jump or move depends on uninitialised value(s)
- at 0x........: gcc_cant_inline_me (manuel3.c:22)
- by 0x........: main (manuel3.c:14)
+ at 0x........: main (manuel3.c:12)
=================================================
./valgrind-old/memcheck/tests/partial_load_ok.stderr.diff
=================================================
--- partial_load_ok.stderr.exp 2012-09-09 22:20:51.000000000 -0400
+++ partial_load_ok.stderr.out 2012-09-09 22:28:01.000000000 -0400
@@ -1,7 +1,13 @@
-Invalid read of size 4
+Invalid read of size 1
+ at 0x........: main (partial_load.c:16)
+ Address 0x........ is 0 bytes after a block of size 7 alloc'd
+ at 0x........: calloc (vg_replace_malloc.c:...)
+ by 0x........: main (partial_load.c:14)
+
+Invalid read of size 8
at 0x........: main (partial_load.c:23)
- Address 0x........ is 1 bytes inside a block of size 4 alloc'd
+ Address 0x........ is 1 bytes inside a block of size 8 alloc'd
at 0x........: calloc (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:20)
@@ -11,9 +17,9 @@
at 0x........: calloc (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:28)
-Invalid read of size 4
+Invalid read of size 8
at 0x........: main (partial_load.c:37)
- Address 0x........ is 0 bytes inside a block of size 4 free'd
+ Address 0x........ is 0 bytes inside a block of size 8 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:36)
@@ -25,4 +31,4 @@
For a detailed leak analysis, rerun with: --leak-check=full
For counts of detected and suppressed errors, rerun with: -v
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/memcheck/tests/partial_load_ok.stderr.diff64
=================================================
--- partial_load_ok.stderr.exp64 2012-09-09 22:20:51.000000000 -0400
+++ partial_load_ok.stderr.out 2012-09-09 22:28:01.000000000 -0400
@@ -1,4 +1,10 @@
+Invalid read of size 1
+ at 0x........: main (partial_load.c:16)
+ Address 0x........ is 0 bytes after a block of size 7 alloc'd
+ at 0x........: calloc (vg_replace_malloc.c:...)
+ by 0x........: main (partial_load.c:14)
+
Invalid read of size 8
at 0x........: main (partial_load.c:23)
Address 0x........ is 1 bytes inside a block of size 8 alloc'd
@@ -25,4 +31,4 @@
For a detailed leak analysis, rerun with: --leak-check=full
For counts of detected and suppressed errors, rerun with: -v
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/memcheck/tests/varinfo6.stderr.diff
=================================================
--- varinfo6.stderr.exp 2012-09-09 22:20:51.000000000 -0400
+++ varinfo6.stderr.out 2012-09-09 22:29:04.000000000 -0400
@@ -7,8 +7,7 @@
by 0x........: BZ2_bzCompress (varinfo6.c:4860)
by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667)
by 0x........: main (varinfo6.c:6517)
- Location 0x........ is 2 bytes inside local var "budget"
- declared at varinfo6.c:3115, in frame #2 of thread 1
+ Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo6.c:34)
=================================================
./valgrind-old/memcheck/tests/varinfo6.stderr.diff-ppc64
=================================================
--- varinfo6.stderr.exp-ppc64 2012-09-09 22:20:51.000000000 -0400
+++ varinfo6.stderr.out 2012-09-09 22:29:04.000000000 -0400
@@ -1,5 +1,5 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: mainSort (varinfo6.c:2999)
by 0x........: BZ2_blockSort (varinfo6.c:3143)
by 0x........: BZ2_compressBlock (varinfo6.c:4072)
@@ -10,7 +10,7 @@
Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: BZ2_decompress (varinfo6.c:1699)
by 0x........: BZ2_bzDecompress (varinfo6.c:5230)
by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715)
=================================================
./valgrind-old/none/tests/s390x/fpconv.stdout.diff
=================================================
--- fpconv.stdout.exp 2012-09-09 22:21:04.000000000 -0400
+++ fpconv.stdout.out 2012-09-09 22:31:10.000000000 -0400
@@ -35,137 +35,137 @@
"cdgbr" -9223372036854775808.000000
"cdgbr" 9223372036854775808.000000
"cxfbr" 0.000000
-"cxfbr" 1.000000
-"cxfbr" -1.000000
-"cxfbr" -2147483648.000000
-"cxfbr" 2147483647.000000
+"cxfbr" 1.937500
+"cxfbr" -1.937500
+"cxfbr" -7.500000
+"cxfbr" 7.500000
"cxfbr" 0.000000
-"cxfbr" -1.000000
+"cxfbr" -1.937500
"cxfbr" 0.000000
-"cxfbr" -1.000000
+"cxfbr" -1.937500
"cxgbr" 0.000000
-"cxgbr" 1.000000
-"cxgbr" 4294967295.000000
-"cxgbr" 2147483648.000000
-"cxgbr" 2147483647.000000
-"cxgbr" 4294967296.000000
-"cxgbr" -1.000000
-"cxgbr" -9223372036854775808.000000
-"cxgbr" 9223372036854775807.000000
-"cfebr" 4294967295 cc=1
-"cfebr" 0 cc=0
-"cfebr" 1 cc=2
-"cfebr" 1 cc=2
-"cfebr" 2 cc=2
-"cfebr" 2 cc=2
-"cfebr" 16000 cc=2
-"cfebr" 160000000 cc=2
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=2
-"cfebr" 0 cc=2
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=0
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=0
-"cfebr" 2147483647 cc=3
-"cgebr" -1 cc=1
-"cgebr" 0 cc=0
-"cgebr" 1 cc=2
-"cgebr" 1 cc=2
-"cgebr" 2 cc=2
-"cgebr" 2 cc=2
-"cgebr" 16000 cc=2
-"cgebr" 160000000 cc=2
-"cgebr" 1599999967232 cc=2
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=2
-"cgebr" 0 cc=2
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=0
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=0
-"cgebr" 9223372036854775807 cc=3
-"cfdbr" 4294967295 cc=1
-"cfdbr" 0 cc=0
-"cfdbr" 1 cc=2
-"cfdbr" 1 cc=2
-"cfdbr" 2 cc=2
-"cfdbr" 2 cc=2
-"cfdbr" 16000 cc=2
-"cfdbr" 160000000 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=2
-"cfdbr" 0 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=0
-"cfdbr" 2147483647 cc=3
-"cgdbr" -1 cc=1
-"cgdbr" 0 cc=0
-"cgdbr" 1 cc=2
-"cgdbr" 1 cc=2
-"cgdbr" 2 cc=2
-"cgdbr" 2 cc=2
-"cgdbr" 16000 cc=2
-"cgdbr" 160000000 cc=2
-"cgdbr" 1600000000000 cc=2
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 0 cc=2
-"cgdbr" 0 cc=2
<truncated beyond 100 lines>
|
|
From: Tom H. <to...@co...> - 2012-09-10 02:40:23
|
valgrind revision: 12962 VEX revision: 2519 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) Assembler: GNU assembler version 2.18.50.0.6-2 20080403 C library: GNU C Library stable release version 2.8 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2012-09-09 03:42:06 BST Ended at 2012-09-09 04:08:00 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 606 tests, 0 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == none/tests/amd64/sse4-64 (stdout) |
|
From: Christian B. <bor...@de...> - 2012-09-10 02:12:31
|
valgrind revision: 12963 VEX revision: 2521 C compiler: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] Assembler: GNU assembler (GNU Binutils; SUSE Linux Enterprise 11) 2.21.1 C library: GNU C Library stable release version 2.11.3 (20110527) uname -mrs: Linux 3.0.38-0.5-default s390x Vendor version: Welcome to SUSE Linux Enterprise Server 11 SP2 (s390x) - Kernel %r (%t). Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2012-09-10 03:45:01 CEST Ended at 2012-09-10 04:12:19 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 566 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Christian B. <bor...@de...> - 2012-09-10 02:04:45
|
valgrind revision: 12963 VEX revision: 2521 C compiler: gcc (GCC) 4.5.3 20110121 (Red Hat 4.5.3-5) Assembler: GNU assembler version 2.20.51.0.7-4bb6.fc13 20100318 C library: GNU C Library stable release version 2.12.1 uname -mrs: Linux 3.3.4-53.x.20120504-s390xperformance s390x Vendor version: unknown Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2012-09-10 03:45:01 CEST Ended at 2012-09-10 04:04:51 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 565 tests, 5 stderr failures, 0 stdout failures, 1 stderrB failure, 1 stdoutB failure, 0 post failures == gdbserver_tests/mcinvokeWS (stdoutB) gdbserver_tests/mcinvokeWS (stderrB) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) drd/tests/tc21_pthonce (stderr) |
|
From: Andrew C. M. <and...@gm...> - 2012-09-10 01:19:45
|
On Thu, Aug 30, 2012 at 11:19 AM, Florian Krohm <br...@ac...> wrote: > On 08/30/2012 10:25 AM, Andrew C. Morrow wrote: >> There were three possible solutions proposed in this thread: >> >> - Using volatile >> - Converting to an integer representation and comparing. >> - My proposal to just do a linear scan of interim_stack looking for aLocal >> >> I didn't get any feedback on the last idea, so I guess it wasn't too >> well received. > > Yeah, it seems excessive... > >> Is there any consensus on what is the best fix? > > Everybody felt, that relying on implementation behaviour would be better > than relying on undefined behaviour be handled in a specific way. > But it was not verified yet, that that casting the pointers to HWords > and comparing them would actually work. Did you try it? > > Florian > Hi Florian - Apologies for the delay: I was away on vacation last week. I have not yet tried the HWord conversion but I will try to do so this week. Thanks, Andrew |