diff options
author | DJ Delorie <dj@redhat.com> | 2013-09-12 13:06:38 -0400 |
---|---|---|
committer | DJ Delorie <dj@gcc.gnu.org> | 2013-09-12 13:06:38 -0400 |
commit | 8369f38a6f3f797952452dc25cd148909e049ee6 (patch) | |
tree | 51fd6fe31983c5c9dd226dd15ecbc2b15e406a2e | |
parent | 511daaf5267c535201c6d9e6aabb442bbe12f0f8 (diff) | |
download | gcc-8369f38a6f3f797952452dc25cd148909e049ee6.zip gcc-8369f38a6f3f797952452dc25cd148909e049ee6.tar.gz gcc-8369f38a6f3f797952452dc25cd148909e049ee6.tar.bz2 |
cfgexpand.c (expand_debug_expr): Avoid sign-extending SImode to PSImode.
* cfgexpand.c (expand_debug_expr): Avoid sign-extending SImode to
PSImode.
From-SVN: r202534
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0acde62..de4bb3d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-09-12 DJ Delorie <dj@redhat.com> + + * cfgexpand.c (expand_debug_expr): Avoid sign-extending SImode to + PSImode. + 2013-09-12 Martin Jambor <mjambor@suse.cz> PR ipa/58389 diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 4f10361..88e48c2 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -3154,7 +3154,12 @@ expand_debug_expr (tree exp) && GET_MODE (op0) != VOIDmode && GET_MODE (op1) != VOIDmode && GET_MODE (op0) != GET_MODE (op1)) { - if (GET_MODE_BITSIZE (GET_MODE (op0)) < GET_MODE_BITSIZE (GET_MODE (op1))) + if (GET_MODE_BITSIZE (GET_MODE (op0)) < GET_MODE_BITSIZE (GET_MODE (op1)) + /* If OP0 is a partial mode, then we must truncate, even if it has + the same bitsize as OP1 as GCC's representation of partial modes + is opaque. */ + || (GET_MODE_CLASS (GET_MODE (op0)) == MODE_PARTIAL_INT + && GET_MODE_BITSIZE (GET_MODE (op0)) == GET_MODE_BITSIZE (GET_MODE (op1)))) op1 = simplify_gen_unary (TRUNCATE, GET_MODE (op0), op1, GET_MODE (op1)); else |