]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: Fix up handling of register ... asm ("...") vars in templates [PR33661, PR98847]
authorJakub Jelinek <jakub@redhat.com>
Thu, 28 Jan 2021 15:13:11 +0000 (16:13 +0100)
committerJakub Jelinek <jakub@redhat.com>
Fri, 29 Jan 2021 16:53:09 +0000 (17:53 +0100)
commitcf93f94b3498f3925895fb0bbfd4b64232b9987a
tree3049de8e4375805295a0253bbe7243d8033bbf18
parent2a2c1e22c2501457608f12d5ab560caaca59c425
c++: Fix up handling of register ... asm ("...") vars in templates [PR33661, PR98847]

As the testcase shows, for vars appearing in templates, we don't attach
the asm spec string to the pattern decls, nor pass it back to cp_finish_decl
during instantiation.

The following patch does that.

2021-01-28  Jakub Jelinek  <jakub@redhat.com>

PR c++/33661
PR c++/98847
* decl.c (cp_finish_decl): For register vars with asmspec in templates
call set_user_assembler_name and set DECL_HARD_REGISTER.
* pt.c (tsubst_expr): When instantiating DECL_HARD_REGISTER vars,
pass asmspec_tree to cp_finish_decl.

* g++.target/i386/pr98847.C: New test.
gcc/cp/decl.c
gcc/cp/pt.c
gcc/testsuite/g++.target/i386/pr98847.C [new file with mode: 0644]