re PR middle-end/45017 (miscompile with bitfield and optimization)
2010-07-22 Richard Guenther <rguenther@suse.de> PR tree-optimization/45017 * tree-ssa-sccvn.c (vn_reference_eq): Make sure we honor TYPE_PRECISION of integral types in addition to size. * gcc.c-torture/execute/pr45017.c: New testcase. From-SVN: r162411
This commit is contained in:
parent
e1d818f7ea
commit
5ccbfc1fb8
4 changed files with 48 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2010-07-22 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/45017
|
||||
* tree-ssa-sccvn.c (vn_reference_eq): Make sure we honor
|
||||
TYPE_PRECISION of integral types in addition to size.
|
||||
|
||||
2010-07-22 Maxim Kuvyrkov <maxim@codesourcery.com>
|
||||
|
||||
* config/rs6000/sysv4.h (CHOOSE_DYNAMIC_LINKER): Default to GLIBC
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2010-07-22 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/45017
|
||||
* gcc.c-torture/execute/pr45017.c: New testcase.
|
||||
|
||||
2010-07-22 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/45019
|
||||
|
|
22
gcc/testsuite/gcc.c-torture/execute/pr45017.c
Normal file
22
gcc/testsuite/gcc.c-torture/execute/pr45017.c
Normal file
|
@ -0,0 +1,22 @@
|
|||
int tester(char *bytes)
|
||||
{
|
||||
union {
|
||||
struct {
|
||||
unsigned int r1:4;
|
||||
unsigned int r2:4;
|
||||
} fmt;
|
||||
char value[1];
|
||||
} ovl;
|
||||
|
||||
ovl.value[0] = bytes[0];
|
||||
return ovl.fmt.r1;
|
||||
}
|
||||
extern void abort (void);
|
||||
int main()
|
||||
{
|
||||
char buff = 0x2f;
|
||||
if (tester(&buff) != 0x0f)
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -498,6 +498,21 @@ vn_reference_eq (const void *p1, const void *p2)
|
|||
if (!expressions_equal_p (TYPE_SIZE (vr1->type), TYPE_SIZE (vr2->type)))
|
||||
return false;
|
||||
|
||||
if (INTEGRAL_TYPE_P (vr1->type)
|
||||
&& INTEGRAL_TYPE_P (vr2->type))
|
||||
{
|
||||
if (TYPE_PRECISION (vr1->type) != TYPE_PRECISION (vr2->type))
|
||||
return false;
|
||||
}
|
||||
else if (INTEGRAL_TYPE_P (vr1->type)
|
||||
&& (TYPE_PRECISION (vr1->type)
|
||||
!= TREE_INT_CST_LOW (TYPE_SIZE (vr1->type))))
|
||||
return false;
|
||||
else if (INTEGRAL_TYPE_P (vr2->type)
|
||||
&& (TYPE_PRECISION (vr2->type)
|
||||
!= TREE_INT_CST_LOW (TYPE_SIZE (vr2->type))))
|
||||
return false;
|
||||
|
||||
i = 0;
|
||||
j = 0;
|
||||
do
|
||||
|
|
Loading…
Add table
Reference in a new issue