From 8492d8f3b982065bb5c22bec0a94dab8f55c7de1 Mon Sep 17 00:00:00 2001 From: Virgile Prevosto <virgile.prevosto@m4x.org> Date: Fri, 18 Jun 2021 18:56:40 +0200 Subject: [PATCH] [typing] do not consider non-type attributes when comparing args of TFun only type attributes are relevant here. --- src/kernel_services/ast_queries/cil.ml | 2 +- src/kernel_services/ast_queries/cil_datatype.ml | 5 ++--- tests/spec/oracle/unused_parameter_attribute.res.oracle | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/kernel_services/ast_queries/cil.ml b/src/kernel_services/ast_queries/cil.ml index 3667813a8fb..23900b64093 100644 --- a/src/kernel_services/ast_queries/cil.ml +++ b/src/kernel_services/ast_queries/cil.ml @@ -4951,7 +4951,7 @@ let mk_behavior ?(name=default_behavior_name) ?(assumes=[]) ?(requires=[]) } let spare_attributes_for_c_cast = - "unused"::"declspec"::"arraylen"::"fc_stdlib"::qualifier_attributes + "declspec"::"arraylen"::"fc_stdlib"::qualifier_attributes let type_remove_attributes_for_c_cast = typeRemoveAttributes spare_attributes_for_c_cast diff --git a/src/kernel_services/ast_queries/cil_datatype.ml b/src/kernel_services/ast_queries/cil_datatype.ml index 539184f0204..8058a931418 100644 --- a/src/kernel_services/ast_queries/cil_datatype.ml +++ b/src/kernel_services/ast_queries/cil_datatype.ml @@ -555,9 +555,8 @@ and compare_type config t1 t2 = and compare_arg_list config l1 l2 = Option.compare (compare_list - (fun (_n1, t1, l1) (_n2, t2, l2) -> - (compare_chain (compare_type config) t1 t2 - (compare_attributes config)) l1 l2 + (fun (_n1, t1, _l1) (_n2, t2, _l2) -> + compare_type config t1 t2 )) l1 l2 let hash_attribute _config = function diff --git a/tests/spec/oracle/unused_parameter_attribute.res.oracle b/tests/spec/oracle/unused_parameter_attribute.res.oracle index 809fe3405fb..eb4879183f5 100644 --- a/tests/spec/oracle/unused_parameter_attribute.res.oracle +++ b/tests/spec/oracle/unused_parameter_attribute.res.oracle @@ -5,7 +5,7 @@ void f(int a __attribute__((__unused__))); int main(void) { int __retres; - void (*op)(int ) = (void (*)(int ))(& f); + void (*op)(int ) = & f; /*@ assert op ≡ &f; */ ; __retres = 0; return __retres; -- GitLab