diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2017-01-27 11:22:30 +0000 |
---|---|---|
committer | Ramana Radhakrishnan <ramana@gcc.gnu.org> | 2017-01-27 11:22:30 +0000 |
commit | 6ca513f9b24dacf47db395f4dc41d11037810706 (patch) | |
tree | 1fd60ff0eee31a4f0c215b265fb2431ef590d8c3 /gcc/tree-vrp.c | |
parent | c7181f1393788572fa451bfd8d45d62c8889dd50 (diff) | |
download | gcc-6ca513f9b24dacf47db395f4dc41d11037810706.zip gcc-6ca513f9b24dacf47db395f4dc41d11037810706.tar.gz gcc-6ca513f9b24dacf47db395f4dc41d11037810706.tar.bz2 |
[ARM] Fix PR target/79239 - unrecognized insn after pragma gcc pop_options
{committed for rearnsha}
It turns out that because the compiler uses a hash table to save the
cl_target_option structures it is unsafe to modify the result of
build_target_option_node() (doing so will cause the hash lookup to
fail). This PR was due to not properly understanding this limitation.
The fix is to create temporary copies of the cl_target_option nodes for
use during target option processing and then only creating the tree node
once the options have been suitably modified.
gcc:
PR target/79239
* arm.c (arm_option_override): Don't call build_target_option_node
until after doing all option overrides.
(arm_valid_target_attribute_tree): Likewise.
gcc/testsuite:
* gcc.target/arm/pr79239.c: New test.
From-SVN: r244965
Diffstat (limited to 'gcc/tree-vrp.c')
0 files changed, 0 insertions, 0 deletions