assembly sequences. This gives speedups in the region of 0% to 7%
for those targets only.
- - New command line option: --expensive-definedness-check=<yes|no> which
+ - New command line option: --expensive-definedness-checks=yes|no which
is useful to avoid occasional invalid complaints on optimised code.
Watchout for runtime degradation: 25% have been observed but, as always,
- this is highly application specific.
+ this is highly application specific. The default setting is "no".
* Massif:
</listitem>
</varlistentry>
- <varlistentry id="opt.expensive-definedness-check" xreflabel="--expensive-definedness-check">
+ <varlistentry id="opt.expensive-definedness-checks" xreflabel="--expensive-definedness-checks">
<term>
- <option><![CDATA[--expensive-definedness-check=<yes|no> [default: no] ]]></option>
+ <option><![CDATA[--expensive-definedness-checks=<yes|no> [default: no] ]]></option>
</term>
<listitem>
<para>Controls whether Memcheck should employ more precise but also more
value. The default setting is not to do that and it is usually
sufficient. However, for highly optimised code valgrind may sometimes
incorrectly complain.
- Invoking valgrind with <option>--expensive-definedness-check==yes</option>
+ Invoking valgrind with <option>--expensive-definedness-checks=yes</option>
helps but comes at a performance cost. Runtime degradation of
25% have been observed but the extra cost depends a lot on the
application at hand.
/* Should we use expensive definedness checking for add/sub and compare
operations? Default: NO */
-extern Bool MC_(clo_expensive_definedness_check);
+extern Bool MC_(clo_expensive_definedness_checks);
/*------------------------------------------------------------*/
/*--- Instrumentation ---*/
KeepStacktraces MC_(clo_keep_stacktraces) = KS_alloc_and_free;
Int MC_(clo_mc_level) = 2;
Bool MC_(clo_show_mismatched_frees) = True;
-Bool MC_(clo_expensive_definedness_check) = False;
+Bool MC_(clo_expensive_definedness_checks) = False;
static const HChar * MC_(parse_leak_heuristics_tokens) =
"-,stdstring,length64,newarray,multipleinheritance";
else if VG_BOOL_CLO(arg, "--show-mismatched-frees",
MC_(clo_show_mismatched_frees)) {}
- else if VG_BOOL_CLO(arg, "--expensive-definedness-check",
- MC_(clo_expensive_definedness_check)) {}
+ else if VG_BOOL_CLO(arg, "--expensive-definedness-checks",
+ MC_(clo_expensive_definedness_checks)) {}
else
return VG_(replacement_malloc_process_cmd_line_option)(arg);
" --undef-value-errors=no|yes check for undefined value errors [yes]\n"
" --track-origins=no|yes show origins of undefined values? [no]\n"
" --partial-loads-ok=no|yes too hard to explain here; see manual [yes]\n"
+" --expensive-definedness-checks=no|yes\n"
+" Use extra-precise definedness tracking [no]\n"
" --freelist-vol=<number> volume of freed blocks queue [20000000]\n"
" --freelist-big-blocks=<number> releases first blocks with size>= [1000000]\n"
" --workaround-gcc296-bugs=no|yes self explanatory [no]\n"
}
tl_assert( VG_(sizeXA)( mce.tmpMap ) == sb_in->tyenv->types_used );
- if (MC_(clo_expensive_definedness_check)) {
+ if (MC_(clo_expensive_definedness_checks)) {
/* For expensive definedness checking skip looking for bogus
literals. */
mce.bogusLiterals = True;
-# When run without --expensive-definedness-check valgrind
+# When run without --expensive-definedness-checks valgrind
# produces:
#
# ==10953== Conditional jump or move depends on uninitialised value(s)
# Making sure we don't get the message.
#
prog: bug340392
-vgopts: -q --expensive-definedness-check=yes
+vgopts: -q --expensive-definedness-checks=yes