diff mbox series

c++: Micro-optimize instantiation_dependent_expression_p

Message ID 20210212233617.475042-1-ppalka@redhat.com
State New
Headers show
Series c++: Micro-optimize instantiation_dependent_expression_p | expand

Commit Message

Patrick Palka Feb. 12, 2021, 11:36 p.m. UTC
This makes instantiation_dependent_expression_p avoid checking
potential_constant_expression when processing_template_decl isn't set
(and hence when value_dependent_expression_p is definitely false).

gcc/cp/ChangeLog:

	* pt.c (instantiation_dependent_expression_p): Check
	processing_template_decl before checking
	potential_constant_expression.
---
 gcc/cp/pt.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jason Merrill Feb. 23, 2021, 2:24 a.m. UTC | #1
On 2/12/21 6:36 PM, Patrick Palka wrote:
> This makes instantiation_dependent_expression_p avoid checking
> potential_constant_expression when processing_template_decl isn't set
> (and hence when value_dependent_expression_p is definitely false).

OK.

> gcc/cp/ChangeLog:
> 
> 	* pt.c (instantiation_dependent_expression_p): Check
> 	processing_template_decl before checking
> 	potential_constant_expression.
> ---
>   gcc/cp/pt.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
> index dd89dd6f896..5102bf02d0f 100644
> --- a/gcc/cp/pt.c
> +++ b/gcc/cp/pt.c
> @@ -27519,7 +27519,8 @@ bool
>   instantiation_dependent_expression_p (tree expression)
>   {
>     return (instantiation_dependent_uneval_expression_p (expression)
> -	  || (potential_constant_expression (expression)
> +	  || (processing_template_decl
> +	      && potential_constant_expression (expression)
>   	      && value_dependent_expression_p (expression)));
>   }
>   
>
diff mbox series

Patch

diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index dd89dd6f896..5102bf02d0f 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -27519,7 +27519,8 @@  bool
 instantiation_dependent_expression_p (tree expression)
 {
   return (instantiation_dependent_uneval_expression_p (expression)
-	  || (potential_constant_expression (expression)
+	  || (processing_template_decl
+	      && potential_constant_expression (expression)
 	      && value_dependent_expression_p (expression)));
 }