Commit ac48cd5e by Tamar Christina Committed by Tamar Christina

arm.c (arm_test_cpu_arch_dat): Check for overlap.

2017-07-21  Tamar Christina  <tamar.christina@arm.com>

	* config/arm/arm.c (arm_test_cpu_arch_dat):
	Check for overlap.

From-SVN: r250415
parent 5aaa8fb4
2017-07-21 Tamar Christina <tamar.christina@arm.com>
* config/arm/arm.c (arm_test_cpu_arch_dat):
Check for overlap.
2017-07-20 Nathan Sidwell <nathan@acm.org> 2017-07-20 Nathan Sidwell <nathan@acm.org>
Remove TYPE_METHODS. Remove TYPE_METHODS.
......
...@@ -31222,12 +31222,15 @@ namespace selftest { ...@@ -31222,12 +31222,15 @@ namespace selftest {
inconsistencies in the option extensions at present (extensions inconsistencies in the option extensions at present (extensions
that duplicate others but aren't marked as aliases). Furthermore, that duplicate others but aren't marked as aliases). Furthermore,
for correct canonicalization later options must never be a subset for correct canonicalization later options must never be a subset
of an earlier option. */ of an earlier option. Any extension should also only specify other
feature bits and never an architecture bit. The architecture is inferred
from the declaration of the extension. */
static void static void
arm_test_cpu_arch_data (void) arm_test_cpu_arch_data (void)
{ {
const arch_option *arch; const arch_option *arch;
const cpu_option *cpu; const cpu_option *cpu;
auto_sbitmap target_isa (isa_num_bits);
auto_sbitmap isa1 (isa_num_bits); auto_sbitmap isa1 (isa_num_bits);
auto_sbitmap isa2 (isa_num_bits); auto_sbitmap isa2 (isa_num_bits);
...@@ -31238,6 +31241,8 @@ arm_test_cpu_arch_data (void) ...@@ -31238,6 +31241,8 @@ arm_test_cpu_arch_data (void)
if (arch->common.extensions == NULL) if (arch->common.extensions == NULL)
continue; continue;
arm_initialize_isa (target_isa, arch->common.isa_bits);
for (ext1 = arch->common.extensions; ext1->name != NULL; ++ext1) for (ext1 = arch->common.extensions; ext1->name != NULL; ++ext1)
{ {
if (ext1->alias) if (ext1->alias)
...@@ -31250,7 +31255,13 @@ arm_test_cpu_arch_data (void) ...@@ -31250,7 +31255,13 @@ arm_test_cpu_arch_data (void)
continue; continue;
arm_initialize_isa (isa2, ext2->isa_bits); arm_initialize_isa (isa2, ext2->isa_bits);
/* If the option is a subset of the parent option, it doesn't
add anything and so isn't useful. */
ASSERT_TRUE (!bitmap_subset_p (isa2, isa1)); ASSERT_TRUE (!bitmap_subset_p (isa2, isa1));
/* If the extension specifies any architectural bits then
disallow it. Extensions should only specify feature bits. */
ASSERT_TRUE (!bitmap_intersect_p (isa2, target_isa));
} }
} }
} }
...@@ -31262,6 +31273,8 @@ arm_test_cpu_arch_data (void) ...@@ -31262,6 +31273,8 @@ arm_test_cpu_arch_data (void)
if (cpu->common.extensions == NULL) if (cpu->common.extensions == NULL)
continue; continue;
arm_initialize_isa (target_isa, arch->common.isa_bits);
for (ext1 = cpu->common.extensions; ext1->name != NULL; ++ext1) for (ext1 = cpu->common.extensions; ext1->name != NULL; ++ext1)
{ {
if (ext1->alias) if (ext1->alias)
...@@ -31274,7 +31287,13 @@ arm_test_cpu_arch_data (void) ...@@ -31274,7 +31287,13 @@ arm_test_cpu_arch_data (void)
continue; continue;
arm_initialize_isa (isa2, ext2->isa_bits); arm_initialize_isa (isa2, ext2->isa_bits);
/* If the option is a subset of the parent option, it doesn't
add anything and so isn't useful. */
ASSERT_TRUE (!bitmap_subset_p (isa2, isa1)); ASSERT_TRUE (!bitmap_subset_p (isa2, isa1));
/* If the extension specifies any architectural bits then
disallow it. Extensions should only specify feature bits. */
ASSERT_TRUE (!bitmap_intersect_p (isa2, target_isa));
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment