aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--awk.h12
-rw-r--r--debug.c2
-rw-r--r--profile.c8
4 files changed, 24 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 87547877..a03edc8b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2021-07-23 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (exec_count_t): Add typedef for Vax VMS C and everyone else.
+ (EXEC_COUNT_FMT, EXEC_COUNT_PROFILE_FMT): Corresponding format
+ strings for printf.
+ * debug.c (print_instruction): Use EXEC_COUNT_FMT.
+ * profile.c (indent): Ditto and use EXEC_COUNT_PROFILE_FMT.
+
2021-07-07 Arnold D. Robbins <arnold@skeeve.com>
* array.c (asort_actual): Add a lint warning for passing the
diff --git a/awk.h b/awk.h
index 2ab25bfd..cb7c4990 100644
--- a/awk.h
+++ b/awk.h
@@ -750,6 +750,16 @@ enum redirval {
struct break_point;
+#if __DECC && __VAX
+typedef unsigned long exec_count_t; // for exec_count
+#define EXEC_COUNT_FMT "%lu"
+#define EXEC_COUNT_PROFILE_FMT "%6lu"
+#else
+typedef unsigned long long exec_count_t; // for exec_count
+#define EXEC_COUNT_FMT "%llu"
+#define EXEC_COUNT_PROFILE_FMT "%6llu"
+#endif
+
typedef struct exp_instruction {
struct exp_instruction *nexti;
union {
@@ -760,7 +770,7 @@ typedef struct exp_instruction {
awk_value_t *result,
struct awk_ext_func *finfo);
long dl;
- unsigned long long ldl; // for exec_count
+ exec_count_t ldl; // for exec_count
char *name;
} d;
diff --git a/debug.c b/debug.c
index 39ff7723..cf0946e2 100644
--- a/debug.c
+++ b/debug.c
@@ -4085,7 +4085,7 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump)
break;
case Op_exec_count:
- print_func(fp, "[exec_count = %llu]\n", pc->exec_count);
+ print_func(fp, "[exec_count = " EXEC_COUNT_FMT "]\n", pc->exec_count);
break;
case Op_store_var:
diff --git a/profile.c b/profile.c
index 748abda2..3dd7bde9 100644
--- a/profile.c
+++ b/profile.c
@@ -135,7 +135,7 @@ init_profiling_signals()
/* indent --- print out enough tabs */
static void
-indent(unsigned long long count)
+indent(exec_count_t count)
{
int i;
@@ -143,7 +143,7 @@ indent(unsigned long long count)
if (count == 0)
fprintf(prof_fp, "\t");
else
- fprintf(prof_fp, "%6llu ", count);
+ fprintf(prof_fp, EXEC_COUNT_PROFILE_FMT " ", count);
}
assert(indent_level >= 0);
@@ -297,7 +297,7 @@ pprint(INSTRUCTION *startp, INSTRUCTION *endp, int flags)
ip2 = (pc + 1)->lasti;
if (do_profile && ip1->exec_count > 0)
- fprintf(prof_fp, " # %llu", ip1->exec_count);
+ fprintf(prof_fp, " # " EXEC_COUNT_FMT, ip1->exec_count);
end_line(ip1);
skip_comment = true;
@@ -1044,7 +1044,7 @@ cleanup:
ip1 = pc->branch_if;
if (ip1->exec_count > 0)
- fprintf(prof_fp, " # %llu", ip1->exec_count);
+ fprintf(prof_fp, " # " EXEC_COUNT_FMT, ip1->exec_count);
ip1 = end_line(ip1);
indent_in();
if (pc->comment != NULL)