aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2023-12-08 21:41:33 -0300
committerAlexandre Oliva <oliva@gnu.org>2023-12-08 21:41:33 -0300
commit5a9e8b0cbbc1a10d73f1809e76bfec73a4386be3 (patch)
treed067c18ddde6c6d6ad3074c501fead4d43509642
parentdd3b75d8f99df9197bb58193037201ccdf994d8b (diff)
downloadgcc-5a9e8b0cbbc1a10d73f1809e76bfec73a4386be3.zip
gcc-5a9e8b0cbbc1a10d73f1809e76bfec73a4386be3.tar.gz
gcc-5a9e8b0cbbc1a10d73f1809e76bfec73a4386be3.tar.bz2
strub: skip emutls after strubm errors
The emutls pass requires PROP_ssa, but if the strubm pass (or any other pre-SSA pass) issues errors, all of the build_ssa_passes are skipped, so the property is not set, but emutls still attempts to run, on targets that use it, despite earlier errors, so it hits the unsatisfied requirement. Adjust emutls to be skipped in case of earlier errors. for gcc/ChangeLog * tree-emutls.cc: Include diagnostic-core.h. (pass_ipa_lower_emutls::gate): Skip if errors were seen.
-rw-r--r--gcc/tree-emutls.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-emutls.cc b/gcc/tree-emutls.cc
index 5dca5a8..38de202 100644
--- a/gcc/tree-emutls.cc
+++ b/gcc/tree-emutls.cc
@@ -35,6 +35,7 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "tree-iterator.h"
#include "gimplify.h"
+#include "diagnostic-core.h" /* for seen_error */
/* Whenever a target does not support thread-local storage (TLS) natively,
we can emulate it with some run-time support in libgcc. This will in
@@ -841,7 +842,7 @@ public:
bool gate (function *) final override
{
/* If the target supports TLS natively, we need do nothing here. */
- return !targetm.have_tls;
+ return !targetm.have_tls && !seen_error ();
}
unsigned int execute (function *) final override