diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-10-25 10:47:15 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-10-25 10:47:15 +0200 |
commit | e16f1cc79dc131b0762cec4c18cfcd795fb6fe75 (patch) | |
tree | 2d1523ca1b3160a1e7eafa9814f6a920b91ac43e /gcc/c-family | |
parent | 080c5459776a70bf6dc9c3410361011591667951 (diff) | |
download | gcc-e16f1cc79dc131b0762cec4c18cfcd795fb6fe75.zip gcc-e16f1cc79dc131b0762cec4c18cfcd795fb6fe75.tar.gz gcc-e16f1cc79dc131b0762cec4c18cfcd795fb6fe75.tar.bz2 |
internal-fn.def (LAUNDER): New internal function.
* internal-fn.def (LAUNDER): New internal function.
* internal-fn.c (expand_LAUNDER): New function.
c-family/
* c-common.h (enum rid): Add RID_BUILTIN_LAUNDER.
* c-common.c (c_common_reswords): Add __builtin_launder.
cp/
* cp-tree.h (finish_builtin_launder): Declare.
* parser.c (cp_parser_postfix_expression): Handle RID_BUILTIN_LAUNDER.
* semantics.c (finish_builtin_launder): New function.
* pt.c (tsubst_copy_and_build): Handle instantiation of IFN_LAUNDER.
* constexpr.c (cxx_eval_internal_function): Handle IFN_LAUNDER.
(potential_constant_expression_1): Likewise.
testsuite/
* g++.dg/cpp1z/launder1.C: New test.
* g++.dg/cpp1z/launder2.C: New test.
From-SVN: r241506
Diffstat (limited to 'gcc/c-family')
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 1 | ||||
-rw-r--r-- | gcc/c-family/c-common.h | 4 |
3 files changed, 8 insertions, 2 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 6a6dba2..15d7488 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2016-10-25 Jakub Jelinek <jakub@redhat.com> + + * c-common.h (enum rid): Add RID_BUILTIN_LAUNDER. + * c-common.c (c_common_reswords): Add __builtin_launder. + 2016-10-24 Bernd Edlinger <bernd.edlinger@hotmail.de> * c-common.c (c_common_truthvalue_conversion): Warn for diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index c0dafc0..307862b 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -375,6 +375,7 @@ const struct c_common_resword c_common_reswords[] = RID_BUILTIN_CALL_WITH_STATIC_CHAIN, D_CONLY }, { "__builtin_choose_expr", RID_CHOOSE_EXPR, D_CONLY }, { "__builtin_complex", RID_BUILTIN_COMPLEX, D_CONLY }, + { "__builtin_launder", RID_BUILTIN_LAUNDER, D_CXXONLY }, { "__builtin_shuffle", RID_BUILTIN_SHUFFLE, 0 }, { "__builtin_offsetof", RID_OFFSETOF, 0 }, { "__builtin_types_compatible_p", RID_TYPES_COMPATIBLE_P, D_CONLY }, diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h index bfdbda0..547bab2 100644 --- a/gcc/c-family/c-common.h +++ b/gcc/c-family/c-common.h @@ -146,8 +146,8 @@ enum rid RID_CONSTCAST, RID_DYNCAST, RID_REINTCAST, RID_STATCAST, /* C++ extensions */ - RID_ADDRESSOF, - RID_BASES, RID_DIRECT_BASES, + RID_ADDRESSOF, RID_BASES, + RID_BUILTIN_LAUNDER, RID_DIRECT_BASES, RID_HAS_NOTHROW_ASSIGN, RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY, RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR, RID_HAS_TRIVIAL_COPY, |