Skip to content
Browse files

PIRC: Really use headerizer

git-svn-id: https://svn.parrot.org/parrot/trunk@44010 d31e2699-5ff4-0310-a27c-f18f2fbe73fe
  • Loading branch information...
1 parent e87acde commit 51336ab52563582d9f1b4327b6a044239c8f5e2d @bacek bacek committed Feb 16, 2010
Showing with 256 additions and 99 deletions.
  1. +93 −49 src/pirpcc.c
  2. +10 −6 src/pirpcc.h
  3. +1 −1 src/pirsymbol.c
  4. +152 −43 src/pirsymbol.h
View
142 src/pirpcc.c
@@ -41,67 +41,84 @@ static void add_alias_operand(
static void arguments_to_operands(
ARGIN(lexer_state * const lexer),
- argument * const args,
+ ARGIN(argument * const args),
unsigned num_arguments)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static int calculate_pcc_argument_flags(ARGIN(argument * const arg))
+ __attribute__nonnull__(1);
+
+static int calculate_pcc_target_flags(ARGIN(target * const result))
__attribute__nonnull__(1);
-static int calculate_pcc_argument_flags(argument * const arg);
-static int calculate_pcc_target_flags(target * const result);
static void convert_nci_call(
ARGIN(lexer_state * const lexer),
- invocation * const inv)
- __attribute__nonnull__(1);
+ ARGIN(invocation * const inv))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
static void convert_pcc_call(
ARGIN(lexer_state * const lexer),
- invocation * const inv)
- __attribute__nonnull__(1);
+ ARGIN(invocation * const inv))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
static void convert_pcc_methodcall(
ARGIN(lexer_state * const lexer),
- invocation * const inv)
- __attribute__nonnull__(1);
+ ARGIN(invocation * const inv))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
static void convert_pcc_methodtailcall(
ARGIN(lexer_state * const lexer),
- invocation * const inv)
- __attribute__nonnull__(1);
+ ARGIN(invocation * const inv))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
static void convert_pcc_return(
ARGIN(lexer_state * const lexer),
- invocation * const inv)
- __attribute__nonnull__(1);
+ ARGIN(invocation * const inv))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
static void convert_pcc_tailcall(
ARGIN(lexer_state * const lexer),
- invocation * const inv)
- __attribute__nonnull__(1);
+ ARGIN(invocation * const inv))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
static void convert_pcc_yield(
ARGIN(lexer_state * const lexer),
- invocation * const inv)
- __attribute__nonnull__(1);
+ ARGIN(invocation * const inv))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
static int generate_signature_pmc(
ARGIN(lexer_state * const lexer),
unsigned size)
__attribute__nonnull__(1);
+PARROT_CANNOT_RETURN_NULL
static target * generate_unique_pir_reg(
ARGIN(lexer_state * const lexer),
pir_type type)
__attribute__nonnull__(1);
+PARROT_CANNOT_RETURN_NULL
static target * get_invoked_sub(
ARGIN(lexer_state * const lexer),
- target * const sub)
- __attribute__nonnull__(1);
+ ARGIN(target * const sub))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
static void save_global_reference(
ARGIN(lexer_state * const lexer),
- instruction * const instr,
- char const * const label)
- __attribute__nonnull__(1);
+ ARGIN(instruction * const instr),
+ ARGIN(char const * const label))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
static void targets_to_operands(
ARGIN(lexer_state * const lexer),
@@ -114,31 +131,44 @@ static void targets_to_operands(
, PARROT_ASSERT_ARG(array) \
, PARROT_ASSERT_ARG(alias))
#define ASSERT_ARGS_arguments_to_operands __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
-#define ASSERT_ARGS_calculate_pcc_argument_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_calculate_pcc_target_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(args))
+#define ASSERT_ARGS_calculate_pcc_argument_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(arg))
+#define ASSERT_ARGS_calculate_pcc_target_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(result))
#define ASSERT_ARGS_convert_nci_call __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(inv))
#define ASSERT_ARGS_convert_pcc_call __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(inv))
#define ASSERT_ARGS_convert_pcc_methodcall __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(inv))
#define ASSERT_ARGS_convert_pcc_methodtailcall __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(inv))
#define ASSERT_ARGS_convert_pcc_return __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(inv))
#define ASSERT_ARGS_convert_pcc_tailcall __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(inv))
#define ASSERT_ARGS_convert_pcc_yield __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(inv))
#define ASSERT_ARGS_generate_signature_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(lexer))
#define ASSERT_ARGS_generate_unique_pir_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(lexer))
#define ASSERT_ARGS_get_invoked_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(sub))
#define ASSERT_ARGS_save_global_reference __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(instr) \
+ , PARROT_ASSERT_ARG(label))
#define ASSERT_ARGS_targets_to_operands __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(lexer))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
@@ -158,7 +188,7 @@ C<result>.
*/
static int
-calculate_pcc_target_flags(target * const result)
+calculate_pcc_target_flags(ARGIN(target * const result))
{
int flag = 0;
@@ -193,7 +223,7 @@ argument C<arg>. An int encoding the flags is returned.
*/
static int
-calculate_pcc_argument_flags(argument * const arg)
+calculate_pcc_argument_flags(ARGIN(argument * const arg))
{
int flag = 0;
@@ -241,6 +271,7 @@ mapped to a PASM register, so using negative PIR register is safe.
=cut
*/
+PARROT_CANNOT_RETURN_NULL
static target *
generate_unique_pir_reg(ARGIN(lexer_state * const lexer), pir_type type)
{
@@ -433,7 +464,8 @@ at index C<i> encodes the type and flags (such as C<:flat>) for operand C<i>.
*/
static void
-arguments_to_operands(ARGIN(lexer_state * const lexer), argument * const args, unsigned num_arguments)
+arguments_to_operands(ARGIN(lexer_state * const lexer),
+ ARGIN(argument * const args), unsigned num_arguments)
{
ASSERT_ARGS(arguments_to_operands)
@@ -515,7 +547,8 @@ Generate instruction for the C<.get_results> statement.
*/
void
-generate_getresults_instr(ARGIN(lexer_state * const lexer), target * const targetlist)
+generate_getresults_instr(ARGIN(lexer_state * const lexer),
+ ARGIN(target * const targetlist))
{
/* add this point we know that there's only 1 target, as that's the convention for
* exception handlers:
@@ -543,8 +576,9 @@ during compile time.
*/
static void
-save_global_reference(ARGIN(lexer_state * const lexer), instruction * const instr,
- char const * const label)
+save_global_reference(ARGIN(lexer_state * const lexer),
+ ARGIN(instruction * const instr),
+ ARGIN(char const * const label))
{
ASSERT_ARGS(save_global_reference)
@@ -574,8 +608,10 @@ instruction is emitted.
=cut
*/
+PARROT_CANNOT_RETURN_NULL
static target *
-get_invoked_sub(ARGIN(lexer_state * const lexer), target * const sub)
+get_invoked_sub(ARGIN(lexer_state * const lexer),
+ ARGIN(target * const sub))
{
target *subreg = NULL;
symbol *sym = NULL;
@@ -653,7 +689,8 @@ For "foo"() and foo():
*/
static void
-convert_pcc_call(ARGIN(lexer_state * const lexer), invocation * const inv)
+convert_pcc_call(ARGIN(lexer_state * const lexer),
+ ARGIN(invocation * const inv))
{
ASSERT_ARGS(convert_pcc_call)
@@ -693,7 +730,8 @@ The sequence of instructions is:
*/
static void
-convert_pcc_tailcall(ARGIN(lexer_state * const lexer), invocation * const inv)
+convert_pcc_tailcall(ARGIN(lexer_state * const lexer),
+ ARGIN(invocation * const inv))
{
ASSERT_ARGS(convert_pcc_tailcall)
@@ -723,7 +761,8 @@ Conventions (PCC). The sequence of instructions is:
*/
static void
-convert_pcc_return(ARGIN(lexer_state * const lexer), invocation * const inv)
+convert_pcc_return(ARGIN(lexer_state * const lexer),
+ ARGIN(invocation * const inv))
{
ASSERT_ARGS(convert_pcc_return)
@@ -748,7 +787,8 @@ Interface (NCI). The sequence of instructions is:
*/
static void
-convert_nci_call(ARGIN(lexer_state * const lexer), invocation * const inv)
+convert_nci_call(ARGIN(lexer_state * const lexer),
+ ARGIN(invocation * const inv))
{
ASSERT_ARGS(convert_nci_call)
@@ -781,7 +821,8 @@ The sequence of instructions is:
*/
static void
-convert_pcc_yield(ARGIN(lexer_state * const lexer), invocation * const inv)
+convert_pcc_yield(ARGIN(lexer_state * const lexer),
+ ARGIN(invocation * const inv))
{
ASSERT_ARGS(convert_pcc_yield)
@@ -807,7 +848,8 @@ The sequence of instructions is:
*/
static void
-convert_pcc_methodcall(ARGIN(lexer_state * const lexer), invocation * const inv)
+convert_pcc_methodcall(ARGIN(lexer_state * const lexer),
+ ARGIN(invocation * const inv))
{
ASSERT_ARGS(convert_pcc_methodcall)
@@ -840,7 +882,8 @@ The sequence of instructions is:
*/
static void
-convert_pcc_methodtailcall(ARGIN(lexer_state * const lexer), invocation * const inv)
+convert_pcc_methodtailcall(ARGIN(lexer_state * const lexer),
+ ARGIN(invocation * const inv))
{
ASSERT_ARGS(convert_pcc_methodtailcall)
@@ -880,7 +923,8 @@ on the type of C<inv>.
*/
void
-convert_inv_to_instr(ARGIN(lexer_state * const lexer), invocation * const inv)
+convert_inv_to_instr(ARGIN(lexer_state * const lexer),
+ ARGIN(invocation * const inv))
{
switch (inv->type) {
case CALL_PCC:
View
16 src/pirpcc.h
@@ -14,28 +14,32 @@
void convert_inv_to_instr(
ARGIN(lexer_state * const lexer),
- invocation * const inv)
- __attribute__nonnull__(1);
+ ARGIN(invocation * const inv))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
void emit_sub_epilogue(ARGIN(lexer_state * const lexer))
__attribute__nonnull__(1);
void generate_getresults_instr(
ARGIN(lexer_state * const lexer),
- target * const targetlist)
- __attribute__nonnull__(1);
+ ARGIN(target * const targetlist))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
void generate_parameters_instr(
ARGIN(lexer_state * const lexer),
unsigned num_parameters)
__attribute__nonnull__(1);
#define ASSERT_ARGS_convert_inv_to_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(inv))
#define ASSERT_ARGS_emit_sub_epilogue __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(lexer))
#define ASSERT_ARGS_generate_getresults_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(targetlist))
#define ASSERT_ARGS_generate_parameters_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(lexer))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
View
2 src/pirsymbol.c
@@ -48,7 +48,7 @@ Globally defined constants are stored in yet another separate list.
*/
-/* HEADERIZER HFILE: none */
+/* HEADERIZER HFILE: compilers/pirc/src/pirsymbol.h */
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
View
195 src/pirsymbol.h
@@ -75,49 +75,158 @@ typedef struct local_label {
/* lookup table to convert value_type and pir_type values into one another. */
extern const int valuetype_pirtype_clut[10];
-
-/* symbol constructor */
-symbol *new_symbol(struct lexer_state * const lexer, char const * const name, pir_type type);
-
-/* to enter a symbol in the symbol table */
-void declare_local(struct lexer_state * const lexer, pir_type type, symbol * const list);
-
-/* to find a symbol in the symbol table */
-symbol *find_symbol(struct lexer_state * const lexer, char const * const name);
-
-
-pir_reg *find_register(struct lexer_state * const lexer, pir_type type, int regno);
-
-
-/* to find declared symbols that are never referenced */
-void check_unused_symbols(struct lexer_state * const lexer);
-
-/* find specified register; if it was not used yet, assign a PASM register to it */
-int color_reg(struct lexer_state * const lexer, pir_type type, int regno);
-
-/* store a global identifier (label) */
-void store_global_label(struct lexer_state * const lexer, char const * const name);
-
-/* find a global identifier */
-global_label *find_global_label(struct lexer_state * const lexer, char const * const name);
-
-/* store a global .const symbol */
-void store_global_constant(struct lexer_state * const lexer, constdecl * const c);
-
-/* find a global .const symbol */
-constdecl *find_global_constant(struct lexer_state * const lexer, char const * const name);
-
-void assign_vanilla_register(struct lexer_state * const lexer, symbol * const sym);
-
-void store_local_label(struct lexer_state * const lexer, char const * const label, unsigned offset);
-
-unsigned find_local_label(struct lexer_state * const lexer, char const * const label);
-
-unsigned get_hashcode(char const * const str, unsigned num_buckets);
-
-bucket *get_bucket(hashtable * const table, unsigned long hash);
-
-void store_bucket(hashtable * const table, bucket * const buck, unsigned long hash);
+/* HEADERIZER BEGIN: compilers/pirc/src/pirsymbol.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+void assign_vanilla_register(
+ NOTNULL(lexer_state * const lexer),
+ ARGMOD(symbol * const sym))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(* const sym);
+
+void check_unused_symbols(NOTNULL(lexer_state * const lexer))
+ __attribute__nonnull__(1);
+
+int color_reg(ARGIN(lexer_state * const lexer), pir_type type, int regno)
+ __attribute__nonnull__(1);
+
+void declare_local(
+ NOTNULL(lexer_state * const lexer),
+ pir_type type,
+ NOTNULL(symbol * const list))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+constdecl * find_global_constant(
+ ARGIN(lexer_state * const lexer),
+ ARGIN(char const * const name))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+global_label * find_global_label(
+ ARGIN(lexer_state * const lexer),
+ ARGIN(char const * const name))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+unsigned find_local_label(
+ ARGIN(lexer_state * const lexer),
+ ARGIN(char const * const labelname))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+pir_reg * find_register(
+ ARGIN(lexer_state * const lexer),
+ pir_type type,
+ int regno)
+ __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+symbol * find_symbol(
+ NOTNULL(lexer_state * const lexer),
+ NOTNULL(char const * const name))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+bucket * get_bucket(NOTNULL(hashtable * const table), unsigned long hash)
+ __attribute__nonnull__(1);
+
+PARROT_PURE_FUNCTION
+PARROT_WARN_UNUSED_RESULT
+unsigned get_hashcode(NOTNULL(char const * const str), unsigned num_buckets)
+ __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+symbol * new_symbol(
+ NOTNULL(lexer_state * const lexer),
+ NOTNULL(char const * const name),
+ pir_type type)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+void store_bucket(
+ NOTNULL(hashtable * const table),
+ NOTNULL(bucket * const buck),
+ unsigned long hash)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+void store_global_constant(
+ ARGIN(lexer_state * const lexer),
+ ARGIN(constdecl * const c))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+void store_global_label(
+ ARGIN(lexer_state * const lexer),
+ ARGIN(char const * const name))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+void store_local_label(
+ ARGIN(lexer_state * const lexer),
+ ARGIN(char const * const labelname),
+ unsigned offset)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_assign_vanilla_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(sym))
+#define ASSERT_ARGS_check_unused_symbols __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_color_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_declare_local __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(list))
+#define ASSERT_ARGS_find_global_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_find_global_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_find_local_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(labelname))
+#define ASSERT_ARGS_find_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_find_symbol __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_get_bucket __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(table))
+#define ASSERT_ARGS_get_hashcode __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(str))
+#define ASSERT_ARGS_new_symbol __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_store_bucket __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(table) \
+ , PARROT_ASSERT_ARG(buck))
+#define ASSERT_ARGS_store_global_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(c))
+#define ASSERT_ARGS_store_global_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_store_local_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(labelname))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: compilers/pirc/src/pirsymbol.c */
#endif /* PARROT_PIR_PIRSYMBOL_H_GUARD */

0 comments on commit 51336ab

Please sign in to comment.
Something went wrong with that request. Please try again.