mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-23 10:11:53 +00:00
Filter: Additional consistency checks
This commit is contained in:
parent
8029ae527e
commit
57e52e8a90
@ -32,6 +32,7 @@ m4_divert(-1)m4_dnl
|
|||||||
#
|
#
|
||||||
# 101 content of per-inst struct
|
# 101 content of per-inst struct
|
||||||
# 102 constructor arguments
|
# 102 constructor arguments
|
||||||
|
# 109 constructor attributes
|
||||||
# 103 constructor body
|
# 103 constructor body
|
||||||
# 104 dump line item content
|
# 104 dump line item content
|
||||||
# (there may be nothing in dump-line content and
|
# (there may be nothing in dump-line content and
|
||||||
@ -44,6 +45,7 @@ m4_divert(-1)m4_dnl
|
|||||||
# Here are macros to allow you to _divert to the right directions.
|
# Here are macros to allow you to _divert to the right directions.
|
||||||
m4_define(FID_STRUCT_IN, `m4_divert(101)')
|
m4_define(FID_STRUCT_IN, `m4_divert(101)')
|
||||||
m4_define(FID_NEW_ARGS, `m4_divert(102)')
|
m4_define(FID_NEW_ARGS, `m4_divert(102)')
|
||||||
|
m4_define(FID_NEW_ATTRIBUTES, `m4_divert(109)')
|
||||||
m4_define(FID_NEW_BODY, `m4_divert(103)')
|
m4_define(FID_NEW_BODY, `m4_divert(103)')
|
||||||
m4_define(FID_DUMP_BODY, `m4_divert(104)m4_define([[FID_DUMP_BODY_EXISTS]])')
|
m4_define(FID_DUMP_BODY, `m4_divert(104)m4_define([[FID_DUMP_BODY_EXISTS]])')
|
||||||
m4_define(FID_LINEARIZE_BODY, `m4_divert(105)')
|
m4_define(FID_LINEARIZE_BODY, `m4_divert(105)')
|
||||||
@ -104,15 +106,18 @@ FID_STRUCT_IN()m4_dnl
|
|||||||
struct f_inst * f$1;
|
struct f_inst * f$1;
|
||||||
FID_NEW_ARGS()m4_dnl
|
FID_NEW_ARGS()m4_dnl
|
||||||
, struct f_inst * f$1
|
, struct f_inst * f$1
|
||||||
|
FID_NEW_ATTRIBUTES()m4_dnl
|
||||||
|
NONNULL(m4_eval($1+1))
|
||||||
FID_NEW_BODY()m4_dnl
|
FID_NEW_BODY()m4_dnl
|
||||||
whati->f$1 = f$1;
|
whati->f$1 = f$1;
|
||||||
for (const struct f_inst *child = f$1; child; child = child->next) {
|
const struct f_inst *child$1 = f$1;
|
||||||
what->size += child->size;
|
do {
|
||||||
|
what->size += child$1->size;
|
||||||
FID_IFCONST([[
|
FID_IFCONST([[
|
||||||
if (child->fi_code != FI_CONSTANT)
|
if (child$1->fi_code != FI_CONSTANT)
|
||||||
constargs = 0;
|
constargs = 0;
|
||||||
]])
|
]])
|
||||||
}
|
} while (child$1 = child$1->next);
|
||||||
FID_LINEARIZE_BODY
|
FID_LINEARIZE_BODY
|
||||||
pos = linearize(dest, whati->f$1, pos);
|
pos = linearize(dest, whati->f$1, pos);
|
||||||
FID_INTERPRET_BODY()')
|
FID_INTERPRET_BODY()')
|
||||||
@ -303,7 +308,9 @@ m4_undivert(107)m4_dnl
|
|||||||
FID_NEW()m4_dnl Constructor and interpreter code together
|
FID_NEW()m4_dnl Constructor and interpreter code together
|
||||||
FID_HIC(
|
FID_HIC(
|
||||||
[[m4_dnl Public declaration of constructor in H file
|
[[m4_dnl Public declaration of constructor in H file
|
||||||
struct f_inst *f_new_inst_]]INST_NAME()[[(enum f_instruction_code fi_code
|
struct f_inst *
|
||||||
|
m4_undivert(109)m4_dnl
|
||||||
|
f_new_inst_]]INST_NAME()[[(enum f_instruction_code fi_code
|
||||||
m4_undivert(102)m4_dnl
|
m4_undivert(102)m4_dnl
|
||||||
);]],
|
);]],
|
||||||
[[m4_dnl The one case in The Big Switch inside interpreter
|
[[m4_dnl The one case in The Big Switch inside interpreter
|
||||||
@ -315,7 +322,9 @@ m4_undivert(102)m4_dnl
|
|||||||
break;
|
break;
|
||||||
]],
|
]],
|
||||||
[[m4_dnl Constructor itself
|
[[m4_dnl Constructor itself
|
||||||
struct f_inst *f_new_inst_]]INST_NAME()[[(enum f_instruction_code fi_code
|
struct f_inst *
|
||||||
|
m4_undivert(109)m4_dnl
|
||||||
|
f_new_inst_]]INST_NAME()[[(enum f_instruction_code fi_code
|
||||||
m4_undivert(102)m4_dnl
|
m4_undivert(102)m4_dnl
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -72,6 +72,7 @@ static inline int u64_cmp(u64 i1, u64 i2)
|
|||||||
#define NORET __attribute__((noreturn))
|
#define NORET __attribute__((noreturn))
|
||||||
#define UNUSED __attribute__((unused))
|
#define UNUSED __attribute__((unused))
|
||||||
#define PACKED __attribute__((packed))
|
#define PACKED __attribute__((packed))
|
||||||
|
#define NONNULL(x) __attribute__((nonnull((x))))
|
||||||
|
|
||||||
#ifndef HAVE_THREAD_LOCAL
|
#ifndef HAVE_THREAD_LOCAL
|
||||||
#define _Thread_local
|
#define _Thread_local
|
||||||
|
Loading…
Reference in New Issue
Block a user