Commit 01ea23f3 by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/26300 (ICE in trunc_int_for_mode)

	PR middle-end/26300
	* combine.c (make_extraction): Bail out if ORIG_POS is negative.

	* gcc.c-torture/compile/20060215-1.c: New test.

From-SVN: r111116
parent fb57dc0b
2006-02-15 Jakub Jelinek <jakub@redhat.com> 2006-02-15 Jakub Jelinek <jakub@redhat.com>
PR middle-end/26300
* combine.c (make_extraction): Bail out if ORIG_POS is negative.
* tree.h (struct tree_omp_clause): Use OMP_CLAUSE_CODE rather * tree.h (struct tree_omp_clause): Use OMP_CLAUSE_CODE rather
than TREE_CODE as index into omp_clause_num_ops array. than TREE_CODE as index into omp_clause_num_ops array.
......
...@@ -6249,6 +6249,9 @@ make_extraction (enum machine_mode mode, rtx inner, HOST_WIDE_INT pos, ...@@ -6249,6 +6249,9 @@ make_extraction (enum machine_mode mode, rtx inner, HOST_WIDE_INT pos,
|| orig_pos + len > GET_MODE_BITSIZE (wanted_inner_mode))) || orig_pos + len > GET_MODE_BITSIZE (wanted_inner_mode)))
return 0; return 0;
if (orig_pos < 0)
return 0;
inner = force_to_mode (inner, wanted_inner_mode, inner = force_to_mode (inner, wanted_inner_mode,
pos_rtx pos_rtx
|| len + orig_pos >= HOST_BITS_PER_WIDE_INT || len + orig_pos >= HOST_BITS_PER_WIDE_INT
......
2006-02-15 Jakub Jelinek <jakub@redhat.com>
PR middle-end/26300
* gcc.c-torture/compile/20060215-1.c: New test.
2006-02-14 Roger Sayle <roger@eyesopen.com> 2006-02-14 Roger Sayle <roger@eyesopen.com>
PR middle-end/23670 PR middle-end/23670
/* PR middle-end/26300 */
struct S
{
char c;
struct S *d;
struct S *e;
};
extern struct S *u, *v;
extern void fn1 (struct S *) __attribute__ ((noreturn));
void fn2 (struct S *);
static inline struct S *
fn3 (struct S *x)
{
if (x->c != 6)
fn1 (0);
return (struct S *) x;
}
static inline int
fn4 (struct S *x)
{
if (x != u)
return 3;
fn2 (x);
return 0;
}
int
test (struct S *x)
{
struct S *r;
int m = 0;
for (r = x; r != v; r = (fn3 (r)->d))
if (r->c != 6)
fn1 (x);
else
m |= 1 << (fn4 (fn3 (r)->e) - 1);
return m;
}
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