From 794ae6fb64e89175b40288369011f4fc51e0ac53 Mon Sep 17 00:00:00 2001 From: Xavier Leroy Date: Mon, 24 Nov 2014 16:31:33 +0100 Subject: Use gettimeofday() instead of obsolete ftime(). (Patch by Daniel Dickman.) --- test/spass/clock.c | 26 +++++++++++++++++--------- test/spass/clock.h | 4 ++-- 2 files changed, 19 insertions(+), 11 deletions(-) (limited to 'test') diff --git a/test/spass/clock.c b/test/spass/clock.c index 7106669a..d9472338 100644 --- a/test/spass/clock.c +++ b/test/spass/clock.c @@ -104,7 +104,7 @@ void clock_StartCounter(CLOCK_CLOCKS ClockCounter) **********************************************************/ { #ifndef CLOCK_NO_TIMING - ftime(&(clock_Counters[ClockCounter])); + gettimeofday(&(clock_Counters[ClockCounter]), NULL); #endif } @@ -121,7 +121,7 @@ void clock_StopPassedTime(CLOCK_CLOCKS ClockCounter) { #ifndef CLOCK_NO_TIMING CLOCK_TMS newtime; - ftime(&newtime); + gettimeofday(&newtime, NULL); clock_Akku[ClockCounter] = clock_GetSeconds(ClockCounter); #endif } @@ -139,7 +139,7 @@ void clock_StopAddPassedTime(CLOCK_CLOCKS ClockCounter) { #ifndef CLOCK_NO_TIMING CLOCK_TMS newtime; - ftime(&newtime); + gettimeofday(&newtime, NULL); clock_Akku[ClockCounter] += clock_GetSeconds(ClockCounter); #endif } @@ -157,13 +157,21 @@ float clock_GetSeconds(CLOCK_CLOCKS ClockCounter) { #ifndef CLOCK_NO_TIMING CLOCK_TMS newtime; - ftime(&newtime); - return ((float) (newtime.time - clock_Counters[ClockCounter].time) - + (((newtime.millitm - clock_Counters[ClockCounter].millitm)) - /(float)1000)); -#else + time_t seconds_passed; + long microseconds_passed; + + gettimeofday(&newtime, NULL); + + seconds_passed = newtime.tv_sec - clock_Counters[ClockCounter].tv_sec; + microseconds_passed = newtime.tv_usec - clock_Counters[ClockCounter].tv_usec; + + return ((float) seconds_passed + + (microseconds_passed /(float)1000000)); + +#else /* CLOCK_NO_TIMING */ return 0; -#endif +#endif /* ! CLOCK_NO_TIMING */ + } #ifdef WIN diff --git a/test/spass/clock.h b/test/spass/clock.h index 6e675742..80f6c003 100644 --- a/test/spass/clock.h +++ b/test/spass/clock.h @@ -49,7 +49,7 @@ #include "misc.h" #include -#include +#include typedef enum { clock_BACKTRACK, @@ -61,7 +61,7 @@ typedef enum { clock_TYPESIZE } CLOCK_CLOCKS; -typedef struct timeb CLOCK_TMS; +typedef struct timeval CLOCK_TMS; void clock_Init(void); void clock_InitCounter(CLOCK_CLOCKS); -- cgit From c3b615f875ed2cf8418453c79c4621d2dc61b0a0 Mon Sep 17 00:00:00 2001 From: Xavier Leroy Date: Wed, 26 Nov 2014 15:50:36 +0100 Subject: Wrong handling of block-local function declarations (in Elab.ml). --- test/regression/Makefile | 3 ++- test/regression/Results/decl1 | 1 + test/regression/decl1.c | 21 +++++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 test/regression/Results/decl1 create mode 100644 test/regression/decl1.c (limited to 'test') diff --git a/test/regression/Makefile b/test/regression/Makefile index f4f96233..5c601211 100644 --- a/test/regression/Makefile +++ b/test/regression/Makefile @@ -16,7 +16,8 @@ TESTS=int32 int64 floats floats-basics \ expr1 expr6 funptr2 initializers initializers2 initializers3 \ volatile1 volatile2 volatile3 \ funct3 expr5 struct7 struct8 struct11 casts1 casts2 char1 \ - sizeof1 sizeof2 binops bool for1 switch switch2 compound + sizeof1 sizeof2 binops bool for1 switch switch2 compound \ + decl1 # Can run, but only in compiled mode, and have reference output in Results diff --git a/test/regression/Results/decl1 b/test/regression/Results/decl1 new file mode 100644 index 00000000..fa8248b0 --- /dev/null +++ b/test/regression/Results/decl1 @@ -0,0 +1 @@ +Result is 2 diff --git a/test/regression/decl1.c b/test/regression/decl1.c new file mode 100644 index 00000000..d2aedba7 --- /dev/null +++ b/test/regression/decl1.c @@ -0,0 +1,21 @@ +#include + +/* Local function declarations */ + +int f (int p) +{ + p = p + 1; + return p; +} + +int main (int argc, char **argv) +{ + int (*p)(); + int f(); + int i; + + p = f; + i = (*p)(1); + printf("Result is %d\n", i); + return 0; +} -- cgit From 9a0cc571c98ca2ce41891c09c24aabfea4bfe639 Mon Sep 17 00:00:00 2001 From: Xavier Leroy Date: Wed, 17 Dec 2014 10:36:41 +0100 Subject: Prototype the pointer so that the program has well defined semantics and passes the reference interpreter. --- test/regression/decl1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test') diff --git a/test/regression/decl1.c b/test/regression/decl1.c index d2aedba7..6049b4af 100644 --- a/test/regression/decl1.c +++ b/test/regression/decl1.c @@ -10,7 +10,7 @@ int f (int p) int main (int argc, char **argv) { - int (*p)(); + int (*p)(int); int f(); int i; -- cgit