tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
2008-06-25 Richard Guenther <rguenther@suse.de> * tree-vn.c (vn_add): Handle TRUTH_*_EXPR. (vn_lookup): Likewise. * g++.dg/torture/20080625-1.C: New testcase. From-SVN: r137102
This commit is contained in:
parent
ee1f127045
commit
8ef834ca4d
4 changed files with 58 additions and 6 deletions
|
@ -1,3 +1,8 @@
|
|||
2008-06-25 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
|
||||
(vn_lookup): Likewise.
|
||||
|
||||
2008-06-25 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/35518
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2008-06-25 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* g++.dg/torture/20080625-1.C: New testcase.
|
||||
|
||||
2008-06-24 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/36371
|
||||
|
|
27
gcc/testsuite/g++.dg/torture/20080625-1.C
Normal file
27
gcc/testsuite/g++.dg/torture/20080625-1.C
Normal file
|
@ -0,0 +1,27 @@
|
|||
extern "C" {
|
||||
typedef unsigned char sal_Bool;
|
||||
typedef struct _rtl_uString {
|
||||
} rtl_uString;
|
||||
void rtl_uString_release( rtl_uString * str ) throw ();
|
||||
}
|
||||
class OUString {
|
||||
rtl_uString * pData;
|
||||
public:
|
||||
OUString() {}
|
||||
~OUString() {
|
||||
rtl_uString_release( pData );
|
||||
}
|
||||
sal_Bool equalsIgnoreAsciiCase( const OUString & str ) const;
|
||||
};
|
||||
bool findAndRemove();
|
||||
long getAttributeProps()
|
||||
{
|
||||
long nAttrs = 0;
|
||||
OUString aValue;
|
||||
if (findAndRemove()
|
||||
&& aValue.equalsIgnoreAsciiCase(OUString()))
|
||||
;
|
||||
else
|
||||
nAttrs |= 1;
|
||||
return nAttrs;
|
||||
}
|
|
@ -196,12 +196,19 @@ vn_add (tree expr, tree val)
|
|||
SSA_NAME_VALUE (expr) = val;
|
||||
break;
|
||||
}
|
||||
else if (TREE_CODE (expr) == ADDR_EXPR)
|
||||
switch (TREE_CODE (expr))
|
||||
{
|
||||
case ADDR_EXPR:
|
||||
case TRUTH_AND_EXPR:
|
||||
case TRUTH_OR_EXPR:
|
||||
case TRUTH_XOR_EXPR:
|
||||
case TRUTH_NOT_EXPR:
|
||||
vn_nary_op_insert (expr, val);
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
break;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
@ -263,9 +270,18 @@ vn_lookup (tree expr)
|
|||
return vn_reference_lookup (expr, NULL, false);
|
||||
else if (TREE_CODE (expr) == SSA_NAME)
|
||||
return SSA_NAME_VALUE (expr);
|
||||
else if (TREE_CODE (expr) == ADDR_EXPR)
|
||||
return vn_nary_op_lookup (expr);
|
||||
/* FALLTHROUGH */
|
||||
switch (TREE_CODE (expr))
|
||||
{
|
||||
case ADDR_EXPR:
|
||||
case TRUTH_AND_EXPR:
|
||||
case TRUTH_OR_EXPR:
|
||||
case TRUTH_XOR_EXPR:
|
||||
case TRUTH_NOT_EXPR:
|
||||
return vn_nary_op_lookup (expr);
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue