mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-10 09:20:31 +08:00
re PR middle-end/47903 (var-tracking.c: valgrind error)
PR middle-end/47903 * real.c (real_arithmetic) <case PLUS_EXPR, MINUS_EXPR, MULT_EXPR, RDIV_EXPR>: Clear padding bits in *r first if r isn't op0 nor op1. From-SVN: r170547
This commit is contained in:
parent
1d944f61ad
commit
f6b439c98c
@ -1,3 +1,10 @@
|
||||
2011-02-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/47903
|
||||
* real.c (real_arithmetic) <case PLUS_EXPR, MINUS_EXPR,
|
||||
MULT_EXPR, RDIV_EXPR>: Clear padding bits in *r first if
|
||||
r isn't op0 nor op1.
|
||||
|
||||
2011-02-23 Georg-Johann Lay <avr@gjlay.de>
|
||||
|
||||
* config/avr/avr.md: Remove magic comment for emacs.
|
||||
|
13
gcc/real.c
13
gcc/real.c
@ -1,6 +1,7 @@
|
||||
/* real.c - software floating point emulation.
|
||||
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002,
|
||||
2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Stephen L. Moshier (moshier@world.std.com).
|
||||
Re-written by Richard Henderson <rth@redhat.com>
|
||||
|
||||
@ -1009,15 +1010,25 @@ real_arithmetic (REAL_VALUE_TYPE *r, int icode, const REAL_VALUE_TYPE *op0,
|
||||
switch (code)
|
||||
{
|
||||
case PLUS_EXPR:
|
||||
/* Clear any padding areas in *r if it isn't equal to one of the
|
||||
operands so that we can later do bitwise comparisons later on. */
|
||||
if (r != op0 && r != op1)
|
||||
memset (r, '\0', sizeof (*r));
|
||||
return do_add (r, op0, op1, 0);
|
||||
|
||||
case MINUS_EXPR:
|
||||
if (r != op0 && r != op1)
|
||||
memset (r, '\0', sizeof (*r));
|
||||
return do_add (r, op0, op1, 1);
|
||||
|
||||
case MULT_EXPR:
|
||||
if (r != op0 && r != op1)
|
||||
memset (r, '\0', sizeof (*r));
|
||||
return do_multiply (r, op0, op1);
|
||||
|
||||
case RDIV_EXPR:
|
||||
if (r != op0 && r != op1)
|
||||
memset (r, '\0', sizeof (*r));
|
||||
return do_divide (r, op0, op1);
|
||||
|
||||
case MIN_EXPR:
|
||||
|
Loading…
x
Reference in New Issue
Block a user