re PR c++/53605 (Compiler ICEs in size_binop_loc)

2012-06-14  Richard Guenther  <rguenther@suse.de>

        Backport from mainline
        2012-06-11  Richard Guenther  <rguenther@suse.de>

	PR c++/53616
	* mangle.c (write_array_type): Use double-ints for array domain
	arithmetic.

	* g++.dg/ext/pr53605.C: New testcase.

From-SVN: r188615
This commit is contained in:
Richard Guenther 2012-06-14 13:02:06 +00:00 committed by Richard Biener
parent ff5658b6e9
commit 1f32935a05
4 changed files with 37 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2012-06-14 Richard Guenther <rguenther@suse.de>
Backport from mainline
2012-06-11 Richard Guenther <rguenther@suse.de>
PR c++/53616
* mangle.c (write_array_type): Use double-ints for array domain
arithmetic.
2012-06-14 Richard Guenther <rguenther@suse.de>
Backport from mainline

View File

@ -3107,8 +3107,10 @@ write_array_type (const tree type)
{
/* The ABI specifies that we should mangle the number of
elements in the array, not the largest allowed index. */
max = size_binop (PLUS_EXPR, max, size_one_node);
write_unsigned_number (tree_low_cst (max, 1));
double_int dmax
= double_int_add (tree_to_double_int (max), double_int_one);
gcc_assert (double_int_fits_in_uhwi_p (dmax));
write_unsigned_number (dmax.low);
}
else
{

View File

@ -1,3 +1,11 @@
2012-06-14 Richard Guenther <rguenther@suse.de>
Backport from mainline
2012-06-11 Richard Guenther <rguenther@suse.de>
PR c++/53616
* g++.dg/ext/pr53605.C: New testcase.
2012-06-14 Tobias Burnus <burnus@net-b.de>
PR fortran/53597

View File

@ -0,0 +1,16 @@
// { dg-do compile }
// Avoid -pedantic-error default
// { dg-options "" }
template <bool lhs_is_null_literal>
class EqHelper {
public:
template <typename T1, typename T2>
static int Compare( const T1& expected,
const T2& actual);
};
void foo(){
static const int kData[] = {};
::EqHelper<false>::Compare(kData, "abc");
}