aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-11-19 08:22:22 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2010-11-19 08:22:22 +0100
commiteb1c5aefe09cdd548e8531ae587466438de2ab02 (patch)
tree9787d569e0db0920cdf56842b8d8aa776a6e31a1 /gcc
parent3ee44df5efd75078645655941b471f263950dcfd (diff)
downloadgcc-eb1c5aefe09cdd548e8531ae587466438de2ab02.zip
gcc-eb1c5aefe09cdd548e8531ae587466438de2ab02.tar.gz
gcc-eb1c5aefe09cdd548e8531ae587466438de2ab02.tar.bz2
re PR target/45870 (note: non-delegitimized UNSPEC 5 found (-O1 -g))
PR target/45870 * dwarf2out.c (const_ok_for_output_1): Don't complain about non-delegitimized TLS UNSPECs. From-SVN: r166932
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dwarf2out.c17
2 files changed, 18 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2016390..66ca884 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/45870
+ * dwarf2out.c (const_ok_for_output_1): Don't complain about
+ non-delegitimized TLS UNSPECs.
+
2010-11-18 Jack Howarth <howarth@bromo.med.uc.edu>
Ian Lance Taylor <iant@google.com>
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index ea3852e..3285dac 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -13503,11 +13503,18 @@ const_ok_for_output_1 (rtx *rtlp, void *data ATTRIBUTE_UNUSED)
/* If delegitimize_address couldn't do anything with the UNSPEC, assume
we can't express it in the debug info. */
#ifdef ENABLE_CHECKING
- inform (current_function_decl
- ? DECL_SOURCE_LOCATION (current_function_decl)
- : UNKNOWN_LOCATION,
- "non-delegitimized UNSPEC %d found in variable location",
- XINT (rtl, 1));
+ /* Don't complain about TLS UNSPECs, those are just too hard to
+ delegitimize. */
+ if (XVECLEN (rtl, 0) != 1
+ || GET_CODE (XVECEXP (rtl, 0, 0)) != SYMBOL_REF
+ || SYMBOL_REF_DECL (XVECEXP (rtl, 0, 0)) == NULL
+ || TREE_CODE (SYMBOL_REF_DECL (XVECEXP (rtl, 0, 0))) != VAR_DECL
+ || !DECL_THREAD_LOCAL_P (SYMBOL_REF_DECL (XVECEXP (rtl, 0, 0))))
+ inform (current_function_decl
+ ? DECL_SOURCE_LOCATION (current_function_decl)
+ : UNKNOWN_LOCATION,
+ "non-delegitimized UNSPEC %d found in variable location",
+ XINT (rtl, 1));
#endif
expansion_failed (NULL_TREE, rtl,
"UNSPEC hasn't been delegitimized.\n");