summaryrefslogtreecommitdiff
path: root/gcc/var-tracking.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2011-05-31 19:14:21 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2011-05-31 19:14:21 +0000
commit0ee5bf3c39811c9469b6be259744e38e23e7b31a (patch)
tree2f0b491691c28732618def0868a08c868f96b580 /gcc/var-tracking.c
parent1bd906a3a94bb5d5420280fe4dd4878e34eac6b8 (diff)
downloadgcc-0ee5bf3c39811c9469b6be259744e38e23e7b31a.tar.gz
* cselib.c (promote_debug_loc): Allow l->next non-NULL for
cselib_preserve_constants. (cselib_lookup_1): If cselib_preserve_constants, a new VALUE is being created for REG and there is a VALUE for the same register in wider mode, add another loc with lowpart SUBREG of the wider VALUE. (cselib_subst_to_values): Handle ENTRY_VALUE. * var-tracking.c (replace_expr_with_values): Return NULL for ENTRY_VALUE too. * dwarf2out.c (convert_descriptor_to_signed): New function. (mem_loc_descriptor) <case ZERO_EXTEND>: Optimize using DW_OP_and instead of two shifts. (mem_loc_descriptor) <do_shift>: ZERO_EXTEND second argument to the right mode if needed. (mem_loc_descriptor) <case MOD>: For typed ops just use DW_OP_mod. (mem_loc_descriptor) <case UNSIGNED_FIX>: Use convert_descriptor_to_signed. (mem_loc_descriptor) <case UDIV, CLZ, CTZ, FFS, POPCOUNT, PARITY, BSWAP, ROTATE, ROTATERT>: Handle these rtls. * gcc.dg/guality/bswaptest.c: New test. * gcc.dg/guality/clztest.c: New test. * gcc.dg/guality/ctztest.c: New test. * gcc.dg/guality/rotatetest.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@174508 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/var-tracking.c')
-rw-r--r--gcc/var-tracking.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 488635d7f64..f761234ed08 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -4837,7 +4837,7 @@ get_address_mode (rtx mem)
static rtx
replace_expr_with_values (rtx loc)
{
- if (REG_P (loc))
+ if (REG_P (loc) || GET_CODE (loc) == ENTRY_VALUE)
return NULL;
else if (MEM_P (loc))
{