Commit eb723fa3 by Richard Guenther Committed by Richard Biener

re PR middle-end/49938 (ICE in interpret_loop_phi, at tree-scalar-evolution.c:1645)

2011-08-03  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/49938
	* tree-scalar-evolution.c (interpret_loop_phi): Gracefully
	deal with a POLYNOMIAL_CHREC.

	* g++.dg/torture/pr49938.C: New testcase.

From-SVN: r177267
parent 0187b60e
2011-08-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/49938
* tree-scalar-evolution.c (interpret_loop_phi): Gracefully
deal with a POLYNOMIAL_CHREC.
2011-08-03 Revital Eres <revital.eres@linaro.org>
* modulo-sched.c (calculate_stage_count,
......
2011-08-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/49938
* g++.dg/torture/pr49938.C: New testcase.
2011-08-02 Jason Merrill <jason@redhat.com>
PR c++/43886
......
#include <vector>
#include <cstdlib>
typedef unsigned short uint16;
namespace base {
class StringPiece
{
public:
typedef std::size_t size_type;
size_type size() const { return length_; }
size_type length_;
};
}
namespace net {
class DNSSECKeySet
{
bool CheckSignature (const base::StringPiece& name, const
base::StringPiece& zone, const
base::StringPiece& signature, uint16 rrtype,
const std::vector<base::StringPiece>& rrdatas);
};
}
template <class C> class scoped_array
{
public: typedef C element_type;
explicit scoped_array(C* p = __null):array_(p) {}
private: C* array_;
};
namespace net {
bool DNSSECKeySet::CheckSignature (const base::StringPiece& name,
const base::StringPiece& zone, const base::StringPiece& signature,
uint16 rrtype, const std::vector<base::StringPiece>& rrdatas)
{
unsigned signed_data_len = 0;
for (std::vector<base::StringPiece>::const_iterator i =
rrdatas.begin();
i != rrdatas.end(); i++) {
signed_data_len += 2;
signed_data_len += i->size();
}
scoped_array<unsigned char> signed_data(new unsigned
char[signed_data_len]);
}
}
......@@ -1642,8 +1642,8 @@ interpret_loop_phi (struct loop *loop, gimple loop_phi_node)
else if (TREE_CODE (res) == POLYNOMIAL_CHREC)
new_init = CHREC_LEFT (res);
STRIP_USELESS_TYPE_CONVERSION (new_init);
gcc_assert (TREE_CODE (new_init) != POLYNOMIAL_CHREC);
if (!operand_equal_p (init_cond, new_init, 0))
if (TREE_CODE (new_init) == POLYNOMIAL_CHREC
|| !operand_equal_p (init_cond, new_init, 0))
return chrec_dont_know;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment