On aarch64 this caused ICE with pragma push_options since
commit
ae54c1b09963779c5c3914782324ff48af32e2f1
Author: Wilco Dijkstra <wilco.dijkstra@arm.com>
CommitDate: 2022-06-01 18:13:57 +0100
AArch64: Cleanup option processing code
The failure is at pop_options:
internal compiler error: ‘global_options’ are modified in local context
On arm the variable was unused.
gcc/ChangeLog:
* config/aarch64/aarch64.cc (aarch64_override_options_after_change_1):
Do not override branch_protection options.
(aarch64_override_options): Remove accepted_branch_protection_string.
* config/arm/aarch-common.cc (BRANCH_PROTECT_STR_MAX): Remove.
(aarch_parse_branch_protection): Remove
accepted_branch_protection_string.
* config/arm/arm.cc: Likewise.
/* Global flag for whether frame pointer is enabled. */
bool aarch64_use_frame_pointer;
-char *accepted_branch_protection_string = NULL;
-
/* Support for command line parsing of boolean flags in the tuning
structures. */
struct aarch64_flag_desc
static void
aarch64_override_options_after_change_1 (struct gcc_options *opts)
{
- if (accepted_branch_protection_string)
- {
- opts->x_aarch64_branch_protection_string
- = xstrdup (accepted_branch_protection_string);
- }
-
/* PR 70044: We have to be careful about being called multiple times for the
same function. This means all changes should be repeatable. */
/* Return address signing is currently not supported for ILP32 targets. For
LP64 targets use the configured option in the absence of a command-line
option for -mbranch-protection. */
- if (!TARGET_ILP32 && accepted_branch_protection_string == NULL)
+ if (!TARGET_ILP32 && aarch64_branch_protection_string == NULL)
{
#ifdef TARGET_ENABLE_PAC_RET
aarch_ra_sign_scope = AARCH_FUNCTION_NON_LEAF;
return saw_asm_flag ? seq : NULL;
}
-#define BRANCH_PROTECT_STR_MAX 255
-extern char *accepted_branch_protection_string;
-
static enum aarch_parse_opt_result
aarch_handle_no_branch_protection (char* str, char* rest)
{
else
*last_str = NULL;
}
-
- if (res == AARCH_PARSE_OK)
- {
- /* If needed, alloc the accepted string then copy in const_str.
- Used by override_option_after_change_1. */
- if (!accepted_branch_protection_string)
- accepted_branch_protection_string
- = (char *) xmalloc (BRANCH_PROTECT_STR_MAX + 1);
- strncpy (accepted_branch_protection_string, const_str,
- BRANCH_PROTECT_STR_MAX + 1);
- /* Forcibly null-terminate. */
- accepted_branch_protection_string[BRANCH_PROTECT_STR_MAX] = '\0';
- }
return res;
}
tune_params::SCHED_AUTOPREF_OFF
};
-char *accepted_branch_protection_string = NULL;
-
/* Auto-generated CPU, FPU and architecture tables. */
#include "arm-cpu-data.h"