aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2011-08-31 21:06:29 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2011-08-31 21:06:29 +0000
commit091ace5877b03942e6b71fdf13fa4ac2df8e88cf (patch)
tree7f505cbfe91151d42d96eb4b983f66c34c5b04e6 /gcc
parent201176d3483714110201548a37b157a33415a635 (diff)
downloadgcc-091ace5877b03942e6b71fdf13fa4ac2df8e88cf.zip
gcc-091ace5877b03942e6b71fdf13fa4ac2df8e88cf.tar.gz
gcc-091ace5877b03942e6b71fdf13fa4ac2df8e88cf.tar.bz2
genattrtab.c (attr_rtx_1): Hash SYMBOL_REFs.
gcc/ * genattrtab.c (attr_rtx_1): Hash SYMBOL_REFs. (attr_string): Use copy_md_ptr_loc. From-SVN: r178387
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/genattrtab.c11
2 files changed, 14 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index afb213b..8f40314 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-08-31 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * genattrtab.c (attr_rtx_1): Hash SYMBOL_REFs.
+ (attr_string): Use copy_md_ptr_loc.
+
2011-08-31 Martin Jambor <mjambor@suse.cz>
PR middle-end/49886
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index a3da978..69e0850 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -434,8 +434,9 @@ attr_rtx_1 (enum rtx_code code, va_list p)
XEXP (rt_val, 1) = arg1;
}
}
- else if (GET_RTX_LENGTH (code) == 1
- && GET_RTX_FORMAT (code)[0] == 's')
+ else if (code == SYMBOL_REF
+ || (GET_RTX_LENGTH (code) == 1
+ && GET_RTX_FORMAT (code)[0] == 's'))
{
char *arg0 = va_arg (p, char *);
@@ -453,6 +454,11 @@ attr_rtx_1 (enum rtx_code code, va_list p)
rtl_obstack = hash_obstack;
rt_val = rtx_alloc (code);
XSTR (rt_val, 0) = arg0;
+ if (code == SYMBOL_REF)
+ {
+ X0EXP (rt_val, 1) = NULL_RTX;
+ X0EXP (rt_val, 2) = NULL_RTX;
+ }
}
}
else if (GET_RTX_LENGTH (code) == 2
@@ -611,6 +617,7 @@ attr_string (const char *str, int len)
memcpy (new_str, str, len);
new_str[len] = '\0';
attr_hash_add_string (hashcode, new_str);
+ copy_md_ptr_loc (new_str, str);
return new_str; /* Return the new string. */
}