diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-15 20:41:03 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-15 20:41:03 +0000 |
commit | f8eca087325a6c9a6997aa398fa5fdf79f17e96e (patch) | |
tree | f3b03f728a76b77ce4adaca3c4525a06bed79409 /gcc/combine.c | |
parent | c360ad02a5600387db496d7cf9d0ce1de82e0ad7 (diff) | |
download | gcc-f8eca087325a6c9a6997aa398fa5fdf79f17e96e.tar.gz |
PR middle-end/26300
* combine.c (make_extraction): Bail out if ORIG_POS is negative.
* gcc.c-torture/compile/20060215-1.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111116 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index d4ea6897c81..96ebd208a82 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -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))) return 0; + if (orig_pos < 0) + return 0; + inner = force_to_mode (inner, wanted_inner_mode, pos_rtx || len + orig_pos >= HOST_BITS_PER_WIDE_INT |