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
(6) |
2
(3) |
3
(2) |
4
(1) |
5
(1) |
6
(6) |
7
(9) |
|
8
(8) |
9
(6) |
10
(13) |
11
(9) |
12
(12) |
13
(6) |
14
(1) |
|
15
(4) |
16
(8) |
17
(15) |
18
(7) |
19
(3) |
20
(11) |
21
(7) |
|
22
(26) |
23
(7) |
24
(4) |
25
(9) |
26
(10) |
27
(13) |
28
(6) |
|
29
(11) |
30
(6) |
31
(8) |
|
|
|
|
|
From: <sv...@va...> - 2010-08-31 15:24:45
|
Author: bart
Date: 2010-08-31 16:18:32 +0100 (Tue, 31 Aug 2010)
New Revision: 11312
Log:
Added command-line option --prefix-to-strip=... Closes #245535.
Added:
trunk/memcheck/tests/badfree3.stderr.exp
trunk/memcheck/tests/badfree3.vgtest
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_main.c
trunk/coregrind/m_options.c
trunk/coregrind/pub_core_options.h
trunk/docs/xml/manual-core.xml
trunk/memcheck/tests/Makefile.am
trunk/none/tests/cmdline1.stdout.exp
trunk/none/tests/cmdline2.stdout.exp
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2010-08-31 15:15:35 UTC (rev 11311)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2010-08-31 15:18:32 UTC (rev 11312)
@@ -1854,7 +1854,21 @@
APPEND("???");
}
if (know_srcloc) {
+ const Char* const pfx = VG_(clo_prefix_to_strip);
APPEND(" (");
+ if (pfx) {
+ const int pfxlen = VG_(strlen)(pfx);
+ const int matchlen = VG_(strncmp)(pfx, buf_dirname, pfxlen) == 0
+ ? pfxlen : 0;
+ if (matchlen && buf_dirname[matchlen] == '/'
+ && buf_dirname[matchlen + 1]) {
+ APPEND(buf_dirname + matchlen + 1);
+ APPEND("/");
+ } else if (buf_dirname[matchlen]) {
+ APPEND(buf_dirname + matchlen);
+ APPEND("/");
+ }
+ }
APPEND(buf_srcloc);
APPEND(":");
VG_(sprintf)(ibuf,"%d",lineno);
Modified: trunk/coregrind/m_main.c
===================================================================
--- trunk/coregrind/m_main.c 2010-08-31 15:15:35 UTC (rev 11311)
+++ trunk/coregrind/m_main.c 2010-08-31 15:18:32 UTC (rev 11312)
@@ -163,6 +163,9 @@
" and use it to print better error messages in\n"
" tools that make use of it (Memcheck, Helgrind,\n"
" DRD) [no]\n"
+" --prefix-to-strip=<pfx> If not empty, specifies that full source file\n"
+" paths must be printed in call stacks and also\n" " that <pfx> must be stripped from these paths.\n"
+" [""].\n"
" --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]\n"
" --sim-hints=hint1,hint2,... known hints:\n"
" lax-ioctls, enable-outer [none]\n"
@@ -479,6 +482,13 @@
else if VG_STR_CLO (arg, "--sim-hints", VG_(clo_sim_hints)) {}
else if VG_BOOL_CLO(arg, "--sym-offsets", VG_(clo_sym_offsets)) {}
else if VG_BOOL_CLO(arg, "--read-var-info", VG_(clo_read_var_info)) {}
+ else if VG_STR_CLO (arg, "--prefix-to-strip", VG_(clo_prefix_to_strip)) {
+ Char *const pfx = VG_(clo_prefix_to_strip);
+ Char *const pfx_end = pfx + VG_(strlen)(pfx);
+ Char *const last_slash = VG_(strrchr)(pfx, '/');
+ if (last_slash == pfx_end - 1)
+ *last_slash = '\0';
+ }
else if VG_INT_CLO (arg, "--dump-error", VG_(clo_dump_error)) {}
else if VG_INT_CLO (arg, "--input-fd", VG_(clo_input_fd)) {}
Modified: trunk/coregrind/m_options.c
===================================================================
--- trunk/coregrind/m_options.c 2010-08-31 15:15:35 UTC (rev 11311)
+++ trunk/coregrind/m_options.c 2010-08-31 15:18:32 UTC (rev 11312)
@@ -83,6 +83,7 @@
Char* VG_(clo_sim_hints) = NULL;
Bool VG_(clo_sym_offsets) = False;
Bool VG_(clo_read_var_info) = False;
+Char* VG_(clo_prefix_to_strip) = NULL;
Int VG_(clo_n_req_tsyms) = 0;
HChar* VG_(clo_req_tsyms)[VG_CLO_MAX_REQ_TSYMS];
HChar* VG_(clo_require_text_symbol) = NULL;
Modified: trunk/coregrind/pub_core_options.h
===================================================================
--- trunk/coregrind/pub_core_options.h 2010-08-31 15:15:35 UTC (rev 11311)
+++ trunk/coregrind/pub_core_options.h 2010-08-31 15:18:32 UTC (rev 11312)
@@ -128,6 +128,8 @@
extern Bool VG_(clo_sym_offsets);
/* Read DWARF3 variable info even if tool doesn't ask for it? */
extern Bool VG_(clo_read_var_info);
+/* Which prefix to strip from full source file paths, if any. */
+extern Char* VG_(clo_prefix_to_strip);
/* An array of strings harvested from --require-text-symbol=
flags.
Modified: trunk/docs/xml/manual-core.xml
===================================================================
--- trunk/docs/xml/manual-core.xml 2010-08-31 15:15:35 UTC (rev 11311)
+++ trunk/docs/xml/manual-core.xml 2010-08-31 15:18:32 UTC (rev 11312)
@@ -997,6 +997,20 @@
</listitem>
</varlistentry>
+ <varlistentry id="opt.prefix-to-strip" xreflabel="--prefix-to-strip">
+ <term>
+ <option><![CDATA[--prefix-to-strip=<prefix> [default: off] ]]></option>
+ </term>
+ <listitem>
+ <para>By default Valgrind only shows the filename in stack traces and
+ not the full path of the source file. When using
+ <option>--prefix-to-strip</option>, Valgrind will include the full
+ path of source files in stack traces. If a path starts with the
+ specified prefix, the prefix will be left out from the printed path.
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="opt.suppressions" xreflabel="--suppressions">
<term>
<option><![CDATA[--suppressions=<filename> [default: $PREFIX/lib/valgrind/default.supp] ]]></option>
Modified: trunk/memcheck/tests/Makefile.am
===================================================================
--- trunk/memcheck/tests/Makefile.am 2010-08-31 15:15:35 UTC (rev 11311)
+++ trunk/memcheck/tests/Makefile.am 2010-08-31 15:18:32 UTC (rev 11312)
@@ -46,6 +46,7 @@
badaddrvalue.stdout.exp badaddrvalue.vgtest \
badfree-2trace.stderr.exp badfree-2trace.vgtest \
badfree.stderr.exp badfree.vgtest \
+ badfree3.stderr.exp badfree3.vgtest \
badjump.stderr.exp badjump.vgtest \
badjump2.stderr.exp badjump2.vgtest \
badloop.stderr.exp badloop.vgtest \
Added: trunk/memcheck/tests/badfree3.stderr.exp
===================================================================
--- trunk/memcheck/tests/badfree3.stderr.exp (rev 0)
+++ trunk/memcheck/tests/badfree3.stderr.exp 2010-08-31 15:18:32 UTC (rev 11312)
@@ -0,0 +1,10 @@
+Invalid free() / delete / delete[]
+ at 0x........: free (coregrind/vg_replace_malloc.c:...)
+ by 0x........: main (memcheck/tests/badfree.c:12)
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Invalid free() / delete / delete[]
+ at 0x........: free (coregrind/vg_replace_malloc.c:...)
+ by 0x........: main (memcheck/tests/badfree.c:15)
+ Address 0x........ is on thread 1's stack
+
Added: trunk/memcheck/tests/badfree3.vgtest
===================================================================
--- trunk/memcheck/tests/badfree3.vgtest (rev 0)
+++ trunk/memcheck/tests/badfree3.vgtest 2010-08-31 15:18:32 UTC (rev 11312)
@@ -0,0 +1,2 @@
+prog: badfree
+vgopts: -q --prefix-to-strip=${PWD}
Modified: trunk/none/tests/cmdline1.stdout.exp
===================================================================
--- trunk/none/tests/cmdline1.stdout.exp 2010-08-31 15:15:35 UTC (rev 11311)
+++ trunk/none/tests/cmdline1.stdout.exp 2010-08-31 15:18:32 UTC (rev 11312)
@@ -51,6 +51,10 @@
and use it to print better error messages in
tools that make use of it (Memcheck, Helgrind,
DRD) [no]
+ --prefix-to-strip=<pfx> If not empty, specifies that full source file
+ paths must be printed in call stacks and also
+ that <pfx> must be stripped from these paths.
+ [].
--run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]
--sim-hints=hint1,hint2,... known hints:
lax-ioctls, enable-outer [none]
Modified: trunk/none/tests/cmdline2.stdout.exp
===================================================================
--- trunk/none/tests/cmdline2.stdout.exp 2010-08-31 15:15:35 UTC (rev 11311)
+++ trunk/none/tests/cmdline2.stdout.exp 2010-08-31 15:18:32 UTC (rev 11312)
@@ -51,6 +51,10 @@
and use it to print better error messages in
tools that make use of it (Memcheck, Helgrind,
DRD) [no]
+ --prefix-to-strip=<pfx> If not empty, specifies that full source file
+ paths must be printed in call stacks and also
+ that <pfx> must be stripped from these paths.
+ [].
--run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]
--sim-hints=hint1,hint2,... known hints:
lax-ioctls, enable-outer [none]
|
|
From: <sv...@va...> - 2010-08-31 15:15:47
|
Author: bart
Date: 2010-08-31 16:15:35 +0100 (Tue, 31 Aug 2010)
New Revision: 11311
Log:
Expand ${PWD} in the vgopts: line of .vgtest files.
Modified:
trunk/tests/vg_regtest.in
Modified: trunk/tests/vg_regtest.in
===================================================================
--- trunk/tests/vg_regtest.in 2010-08-31 13:43:06 UTC (rev 11310)
+++ trunk/tests/vg_regtest.in 2010-08-31 15:15:35 UTC (rev 11311)
@@ -217,7 +217,9 @@
if ($line =~ /^\s*#/ || $line =~ /^\s*$/) {
next;
} elsif ($line =~ /^\s*vgopts:\s*(.*)$/) {
- $vgopts = $vgopts . " " . $1; # Nb: Make sure there's a space!
+ my $addvgopts = $1;
+ $addvgopts =~ s/\${PWD}/$ENV{PWD}/g;
+ $vgopts = $vgopts . " " . $addvgopts; # Nb: Make sure there's a space!
} elsif ($line =~ /^\s*prog:\s*(.*)$/) {
$prog = validate_program(".", $1, 0, 0);
} elsif ($line =~ /^\s*args:\s*(.*)$/) {
|
|
From: <sv...@va...> - 2010-08-31 13:43:15
|
Author: sewardj
Date: 2010-08-31 14:43:06 +0100 (Tue, 31 Aug 2010)
New Revision: 11310
Log:
Another supp for 10.5.x.
Modified:
trunk/darwin9.supp
Modified: trunk/darwin9.supp
===================================================================
--- trunk/darwin9.supp 2010-08-31 09:47:25 UTC (rev 11309)
+++ trunk/darwin9.supp 2010-08-31 13:43:06 UTC (rev 11310)
@@ -187,6 +187,23 @@
fun:_ZNK9TBaseFont12CopyFeaturesEv
}
+# Conditional jump or move depends on uninitialised value(s)
+# at 0x4E5CD59: _DPSNextEvent (in /System/Library/Frameworks
+# /AppKit.framework/Versions/C/AppKit)
+# by 0x4E5BF87: -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
+# (in /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit)
+# by 0x4E54F9E: -[NSApplication run] (in /System/Library/Frameworks
+# /AppKit.framework/Versions/C/AppKit)
+# Uninitialised value was created by a stack allocation
+# at 0x4E5C450: _DPSNextEvent (in /System/Library/Frameworks
+# /AppKit.framework/Versions/C/AppKit)
+{
+ macos-_DPSNextEvent-stack-allocated-uninit
+ Memcheck:Cond
+ fun:_DPSNextEvent
+}
+
+
##----------------------------------------------------------------------##
# Helgrind
##----------------------------------------------------------------------##
|
|
From: <sv...@va...> - 2010-08-31 09:47:36
|
Author: sewardj Date: 2010-08-31 10:47:25 +0100 (Tue, 31 Aug 2010) New Revision: 11309 Log: Improved test cases for Neon VLDn/VSTn instructions. (Kirill Batuzov <bat...@is...>) Modified: trunk/none/tests/arm/neon64.c trunk/none/tests/arm/neon64.stdout.exp [... diff too large to include ...] |
|
From: <sv...@va...> - 2010-08-31 09:32:49
|
Author: sewardj
Date: 2010-08-31 10:32:40 +0100 (Tue, 31 Aug 2010)
New Revision: 2024
Log:
Reduce to 5 the number of available Q (128-bit) registers available
to the allocator, in an attempt to make register allocation a bit
faster on ARM.
Modified:
trunk/priv/host_arm_defs.c
Modified: trunk/priv/host_arm_defs.c
===================================================================
--- trunk/priv/host_arm_defs.c 2010-08-31 09:31:06 UTC (rev 2023)
+++ trunk/priv/host_arm_defs.c 2010-08-31 09:32:40 UTC (rev 2024)
@@ -119,7 +119,7 @@
void getAllocableRegs_ARM ( Int* nregs, HReg** arr )
{
Int i = 0;
- *nregs = 29;
+ *nregs = 26;
*arr = LibVEX_Alloc(*nregs * sizeof(HReg));
// callee saves ones are listed first, since we prefer them
// if they're available
@@ -154,10 +154,11 @@
(*arr)[i++] = hregARM_Q10();
(*arr)[i++] = hregARM_Q11();
(*arr)[i++] = hregARM_Q12();
- (*arr)[i++] = hregARM_Q13();
- (*arr)[i++] = hregARM_Q14();
- (*arr)[i++] = hregARM_Q15();
+ //(*arr)[i++] = hregARM_Q13();
+ //(*arr)[i++] = hregARM_Q14();
+ //(*arr)[i++] = hregARM_Q15();
+
// unavail: r8 as GSP
// r12 'cos we're not sure what it's for
// r13 as SP
|
|
From: <sv...@va...> - 2010-08-31 09:31:13
|
Author: sewardj
Date: 2010-08-31 10:31:06 +0100 (Tue, 31 Aug 2010)
New Revision: 2023
Log:
Support the PLI instruction (icache preload hint) in ARM mode, so
as to make self-hosting on ARM work.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-08-31 09:29:51 UTC (rev 2022)
+++ trunk/priv/guest_arm_toIR.c 2010-08-31 09:31:06 UTC (rev 2023)
@@ -11758,6 +11758,16 @@
/* fall through */
}
+ /* ------------------------ pli ------------------------ */
+ if (BITS8(0,1,0,0, 0, 1,0,1) == (INSN(27,20) & BITS8(1,1,1,1,0,1,1,1))
+ && BITS4(1,1,1,1) == INSN(15,12)) {
+ UInt rN = INSN(19,16);
+ UInt imm12 = INSN(11,0);
+ UInt bU = INSN(23,23);
+ DIP("pli [r%u, #%c%u]\n", rN, bU ? '+' : '-', imm12);
+ return True;
+ }
+
/* --------------------- Interworking branches --------------------- */
// BLX (1), viz, unconditional branch and link to R15+simm24
|
|
From: <sv...@va...> - 2010-08-31 09:30:01
|
Author: sewardj
Date: 2010-08-31 10:29:51 +0100 (Tue, 31 Aug 2010)
New Revision: 2022
Log:
Fix debug printing for Neon VLDn/VSTn instructions.
(Kirill Batuzov <bat...@is...)
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-08-31 09:18:22 UTC (rev 2021)
+++ trunk/priv/guest_arm_toIR.c 2010-08-31 09:29:51 UTC (rev 2022)
@@ -7817,7 +7817,12 @@
DIP(", ");
DIP("d%u[%u]", rD + j * inc, i);
}
- DIP("}, [r%u]%s\n", rN, (rM != 15) ? "!" : "");
+ DIP("}, [r%u]", rN);
+ if (rM != 13 && rM != 15) {
+ DIP(", r%u\n", rM);
+ } else {
+ DIP("%s\n", (rM != 15) ? "!" : "");
+ }
} else {
/* VLDn (single element to all lanes) */
UInt r;
@@ -7908,7 +7913,12 @@
DIP("d%u[]", rD + r + i * inc);
}
}
- DIP("}, [r%u]%s\n", rN, (rM != 15) ? "!" : "");
+ DIP("}, [r%u]", rN);
+ if (rM != 13 && rM != 15) {
+ DIP(", r%u\n", rM);
+ } else {
+ DIP("%s\n", (rM != 15) ? "!" : "");
+ }
}
/* Writeback. We're uncond here, so no condT-ing. */
if (rM != 15) {
@@ -8022,7 +8032,12 @@
}
}
}
- DIP("}, [r%u]%s\n", rN, (rM != 15) ? "!" : "");
+ DIP("}, [r%u]", rN);
+ if (rM != 13 && rM != 15) {
+ DIP(", r%u\n", rM);
+ } else {
+ DIP("%s\n", (rM != 15) ? "!" : "");
+ }
return True;
}
# undef INSN
|
|
From: <sv...@va...> - 2010-08-31 09:18:32
|
Author: sewardj
Date: 2010-08-31 10:18:22 +0100 (Tue, 31 Aug 2010)
New Revision: 2021
Log:
Fix generation of writeback values in Neon VLDn/VSTn instructions.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-08-29 12:33:02 UTC (rev 2020)
+++ trunk/priv/guest_arm_toIR.c 2010-08-31 09:18:22 UTC (rev 2021)
@@ -7766,7 +7766,6 @@
UInt N, size, i, j;
UInt inc;
UInt regs = 1;
- IRTemp addr;
if (isT) {
vassert(condT != IRTemp_INVALID);
@@ -7779,6 +7778,12 @@
if (INSN(20,20) != 0)
return False;
+ IRTemp initialRn = newTemp(Ity_I32);
+ assign(initialRn, isT ? getIRegT(rN) : getIRegA(rN));
+
+ IRTemp initialRm = newTemp(Ity_I32);
+ assign(initialRm, isT ? getIRegT(rM) : getIRegA(rM));
+
if (A) {
N = B & 3;
if ((B >> 2) < 3) {
@@ -7794,8 +7799,8 @@
default: vassert(0);
}
- addr = newTemp(Ity_I32);
- assign(addr, isT ? getIRegT(rN) : getIRegA(rN));
+ IRTemp addr = newTemp(Ity_I32);
+ assign(addr, mkexpr(initialRn));
// go uncond
if (condT != IRTemp_INVALID)
@@ -7812,7 +7817,7 @@
DIP(", ");
DIP("d%u[%u]", rD + j * inc, i);
}
- DIP("}, [r%u]%s\n", rN, (rM != 15) ? "!" : "");
+ DIP("}, [r%u]%s\n", rN, (rM != 15) ? "!" : "");
} else {
/* VLDn (single element to all lanes) */
UInt r;
@@ -7838,8 +7843,8 @@
mk_skip_over_T32_if_cond_is_false(condT);
// now uncond
- addr = newTemp(Ity_I32);
- assign(addr, isT ? getIRegT(rN) : getIRegA(rN));
+ IRTemp addr = newTemp(Ity_I32);
+ assign(addr, mkexpr(initialRn));
if (N == 0 && INSN(5,5))
regs = 2;
@@ -7909,15 +7914,16 @@
if (rM != 15) {
if (rM == 13) {
IRExpr* e = binop(Iop_Add32,
- mkexpr(addr),
+ mkexpr(initialRn),
mkU32((1 << size) * (N + 1)));
if (isT)
putIRegT(rN, e, IRTemp_INVALID);
else
putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring);
} else {
- IRExpr* e = binop(Iop_Add32, mkexpr(addr),
- isT ? getIRegT(rM) : getIRegA(rM));
+ IRExpr* e = binop(Iop_Add32,
+ mkexpr(initialRn),
+ mkexpr(initialRm));
if (isT)
putIRegT(rN, e, IRTemp_INVALID);
else
@@ -7968,8 +7974,8 @@
mk_skip_over_T32_if_cond_is_false(condT);
// now uncond
- addr = newTemp(Ity_I32);
- assign(addr, isT ? getIRegT(rN) : getIRegA(rN));
+ IRTemp addr = newTemp(Ity_I32);
+ assign(addr, mkexpr(initialRn));
for (r = 0; r < regs; r++) {
for (i = 0; i < elems; i++) {
@@ -7987,15 +7993,16 @@
if (rM != 15) {
if (rM == 13) {
IRExpr* e = binop(Iop_Add32,
- mkexpr(addr),
+ mkexpr(initialRn),
mkU32(8 * (N + 1) * regs));
if (isT)
putIRegT(rN, e, IRTemp_INVALID);
else
putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring);
} else {
- IRExpr* e = binop(Iop_Add32, mkexpr(addr),
- isT ? getIRegT(rM) : getIRegA(rM));
+ IRExpr* e = binop(Iop_Add32,
+ mkexpr(initialRn),
+ mkexpr(initialRm));
if (isT)
putIRegT(rN, e, IRTemp_INVALID);
else
|