Changeset: 1111572f649d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1111572f649d
Modified Files:
NT/monetdb_config.h.in
clients/Tests/MAL-signatures_all.stable.out
clients/Tests/MAL-signatures_fits_geom.stable.out
clients/Tests/MAL-signatures_geom.stable.out
clients/Tests/MAL-signatures_none.stable.out
clients/Tests/exports.stable.out
configure.ag
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_calc.c
gdk/gdk_select.c
sql/backends/monet5/sql_gencode.c
Branch: default
Log Message:
Merge with Oct2014 branch.
diffs (truncated from 977 to 300 lines):
diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in
--- a/NT/monetdb_config.h.in
+++ b/NT/monetdb_config.h.in
@@ -993,6 +993,14 @@
#endif
#endif
+/* Define to `__restrict__' or `__restrict' if that's what the C compiler
+ calls it, or to nothing if 'restrict' is not supported under any name. */
+#ifndef __cplusplus
+#ifndef restrict
+#define restrict __restrict
+#endif
+#endif
+
/* Define to `long int' if <sys/types.h> does not define. */
/* #undef off_t */
diff --git a/clients/Tests/MAL-signatures_all.stable.out
b/clients/Tests/MAL-signatures_all.stable.out
--- a/clients/Tests/MAL-signatures_all.stable.out
+++ b/clients/Tests/MAL-signatures_all.stable.out
@@ -40406,6 +40406,10 @@ command mtime.date(X_1:date):date
address MTIMEdate2date;
comment generate the nil date
+command mtime.date_sub_month_interval(t:date,s:int):date
+address MTIMEdate_submonths;
+comment Subtract months from a date
+
command mtime.date_add_month_interval(t:date,s:int):date
address MTIMEdate_addmonths;
comment Add months to a date
diff --git a/clients/Tests/MAL-signatures_fits_geom.stable.out
b/clients/Tests/MAL-signatures_fits_geom.stable.out
--- a/clients/Tests/MAL-signatures_fits_geom.stable.out
+++ b/clients/Tests/MAL-signatures_fits_geom.stable.out
@@ -40323,6 +40323,10 @@ command mtime.date(X_1:date):date
address MTIMEdate2date;
comment generate the nil date
+command mtime.date_sub_month_interval(t:date,s:int):date
+address MTIMEdate_submonths;
+comment Subtract months from a date
+
command mtime.date_add_month_interval(t:date,s:int):date
address MTIMEdate_addmonths;
comment Add months to a date
diff --git a/clients/Tests/MAL-signatures_geom.stable.out
b/clients/Tests/MAL-signatures_geom.stable.out
--- a/clients/Tests/MAL-signatures_geom.stable.out
+++ b/clients/Tests/MAL-signatures_geom.stable.out
@@ -40299,6 +40299,10 @@ command mtime.date(X_1:date):date
address MTIMEdate2date;
comment generate the nil date
+command mtime.date_sub_month_interval(t:date,s:int):date
+address MTIMEdate_submonths;
+comment Subtract months from a date
+
command mtime.date_add_month_interval(t:date,s:int):date
address MTIMEdate_addmonths;
comment Add months to a date
diff --git a/clients/Tests/MAL-signatures_none.stable.out
b/clients/Tests/MAL-signatures_none.stable.out
--- a/clients/Tests/MAL-signatures_none.stable.out
+++ b/clients/Tests/MAL-signatures_none.stable.out
@@ -40112,6 +40112,10 @@ command mtime.date(X_1:date):date
address MTIMEdate2date;
comment generate the nil date
+command mtime.date_sub_month_interval(t:date,s:int):date
+address MTIMEdate_submonths;
+comment Subtract months from a date
+
command mtime.date_add_month_interval(t:date,s:int):date
address MTIMEdate_addmonths;
comment Add months to a date
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -261,18 +261,18 @@ MT_Lock *volatile GDKlocklist;
ATOMIC_FLAG volatile GDKlocklistlock;
ATOMIC_TYPE volatile GDKlocksleepcnt;
void GDKlockstatistics(int);
-void *GDKmalloc(size_t size);
+void *GDKmalloc(size_t size) __attribute__((__malloc__))
__attribute__((__warn_unused_result__));
size_t GDKmem_cursize(void);
void *GDKmmap(const char *path, int mode, size_t len);
int GDKms(void);
int GDKnr_threads;
void GDKqsort(void *h, void *t, const void *base, size_t n, int hs, int ts,
int tpe);
void GDKqsort_rev(void *h, void *t, const void *base, size_t n, int hs, int
ts, int tpe);
-void *GDKrealloc(void *pold, size_t size);
+void *GDKrealloc(void *pold, size_t size)
__attribute__((__warn_unused_result__));
void GDKsetenv(str name, str value);
ssize_t GDKstrFromStr(unsigned char *dst, const unsigned char *src, ssize_t
len);
-str GDKstrdup(const char *s);
-str GDKstrndup(const char *s, size_t n);
+str GDKstrdup(const char *s) __attribute__((__warn_unused_result__));
+str GDKstrndup(const char *s, size_t n)
__attribute__((__warn_unused_result__));
int GDKsyserror(_In_z_ _Printf_format_string_ const char *format, ...)
__attribute__((__format__(__printf__, 1, 2)));
ThreadRec GDKthreads[THREADS];
int GDKupgradevarheap(COLrec *c, var_t v, int copyall, int mayshare);
@@ -280,7 +280,7 @@ lng GDKusec(void);
BAT *GDKval;
const char *GDKversion(void);
size_t GDKvm_cursize(void);
-void *GDKzalloc(size_t size);
+void *GDKzalloc(size_t size) __attribute__((__malloc__))
__attribute__((__warn_unused_result__));
void HASHdestroy(BAT *b);
BUN HASHlist(Hash *h, BUN i);
BUN HASHprobe(Hash *h, const void *v);
@@ -1607,6 +1607,7 @@ str MTIMEdate_extract_year_bulk(bat *ret
str MTIMEdate_fromstr(date *ret, const char *const *s);
str MTIMEdate_sub_msec_interval_lng_wrap(date *ret, const date *t, const lng
*msec);
str MTIMEdate_sub_sec_interval_wrap(date *ret, const date *t, const int *sec);
+str MTIMEdate_submonths(date *ret, const date *v, const int *delta);
str MTIMEday_from_str(int *ret, const char *const *day);
str MTIMEday_to_str(str *ret, const int *day);
str MTIMEdaytime1(daytime *ret, const int *h);
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -2847,6 +2847,7 @@ dnl checks for structures
dnl checks for compiler characteristics
AC_C_CONST
AC_C_INLINE
+AC_C_RESTRICT
AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo(int * restrict p) { return *p; }])],
AC_DEFINE(HAVE_RESTRICT, 1,
[Define if the compiler supports the restrict keyword]),
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2221,12 +2221,19 @@ gdk_export int GDK_vm_trim; /* allow tr
gdk_export size_t GDKmem_cursize(void); /* RAM/swapmem that MonetDB has
claimed from OS */
gdk_export size_t GDKvm_cursize(void); /* current MonetDB VM address space
usage */
-gdk_export void *GDKmalloc(size_t size);
-gdk_export void *GDKzalloc(size_t size);
-gdk_export void *GDKrealloc(void *pold, size_t size);
+gdk_export void *GDKmalloc(size_t size)
+ __attribute__((__malloc__))
+ __attribute__ ((__warn_unused_result__));
+gdk_export void *GDKzalloc(size_t size)
+ __attribute__((__malloc__))
+ __attribute__ ((__warn_unused_result__));
+gdk_export void *GDKrealloc(void *pold, size_t size)
+ __attribute__ ((__warn_unused_result__));
gdk_export void GDKfree(void *blk);
-gdk_export str GDKstrdup(const char *s);
-gdk_export str GDKstrndup(const char *s, size_t n);
+gdk_export str GDKstrdup(const char *s)
+ __attribute__ ((__warn_unused_result__));
+gdk_export str GDKstrndup(const char *s, size_t n)
+ __attribute__ ((__warn_unused_result__));
#if !defined(NDEBUG) && !defined(STATIC_CODE_ANALYSIS)
/* In debugging mode, replace GDKmalloc and other functions with a
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -156,7 +156,7 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
#define AGGR_SUM(TYPE1, TYPE2) \
do { \
TYPE1 x; \
- const TYPE1 *vals = (const TYPE1 *) values; \
+ const TYPE1 *restrict vals = (const TYPE1 *) values; \
if (ngrp == 1 && cand == NULL) { \
/* single group, no candidate list */ \
TYPE2 sum; \
@@ -305,16 +305,16 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
} while (0)
static BUN
-dosum(const void *values, int nonil, oid seqb, BUN start, BUN end,
- void *results, BUN ngrp, int tp1, int tp2,
- const oid *cand, const oid *candend, const oid *gids,
+dosum(const void *restrict values, int nonil, oid seqb, BUN start, BUN end,
+ void *restrict results, BUN ngrp, int tp1, int tp2,
+ const oid *restrict cand, const oid *candend, const oid *restrict gids,
oid min, oid max, int skip_nils, int abort_on_error,
int nil_if_empty, const char *func)
{
BUN nils = 0;
BUN i;
oid gid;
- unsigned int *seen; /* bitmask for groups that we've seen */
+ unsigned int *restrict seen; /* bitmask for groups that we've seen */
/* allocate bitmap for seen group ids */
seen = GDKzalloc(((ngrp + 31) / 32) * sizeof(int));
@@ -325,7 +325,7 @@ dosum(const void *values, int nonil, oid
switch (tp2) {
case TYPE_bte: {
- bte *sums = (bte *) results;
+ bte *restrict sums = (bte *) results;
switch (tp1) {
case TYPE_bte:
AGGR_SUM(bte, bte);
@@ -336,7 +336,7 @@ dosum(const void *values, int nonil, oid
break;
}
case TYPE_sht: {
- sht *sums = (sht *) results;
+ sht *restrict sums = (sht *) results;
switch (tp1) {
case TYPE_bte:
AGGR_SUM(bte, sht);
@@ -353,7 +353,7 @@ dosum(const void *values, int nonil, oid
case TYPE_wrd:
#endif
case TYPE_int: {
- int *sums = (int *) results;
+ int *restrict sums = (int *) results;
switch (tp1) {
case TYPE_bte:
AGGR_SUM(bte, int);
@@ -376,7 +376,7 @@ dosum(const void *values, int nonil, oid
case TYPE_wrd:
#endif
case TYPE_lng: {
- lng *sums = (lng *) results;
+ lng *restrict sums = (lng *) results;
switch (tp1) {
case TYPE_bte:
AGGR_SUM(bte, lng);
@@ -427,7 +427,7 @@ dosum(const void *values, int nonil, oid
}
#endif
case TYPE_flt: {
- flt *sums = (flt *) results;
+ flt *restrict sums = (flt *) results;
switch (tp1) {
case TYPE_flt:
AGGR_SUM(flt, flt);
@@ -438,7 +438,7 @@ dosum(const void *values, int nonil, oid
break;
}
case TYPE_dbl: {
- dbl *sums = (dbl *) results;
+ dbl *restrict sums = (dbl *) results;
switch (tp1) {
case TYPE_flt:
AGGR_SUM(flt, dbl);
@@ -682,7 +682,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
#define AGGR_PROD(TYPE1, TYPE2, TYPE3) \
do { \
- const TYPE1 *vals = (const TYPE1 *) values; \
+ const TYPE1 *restrict vals = (const TYPE1 *) values; \
assert(gidincr == 0 || gidincr == 1); \
gid = 0; /* doesn't change if gidincr == 0 */ \
for (;;) { \
@@ -777,7 +777,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
#else
#define AGGR_PROD_LNG(TYPE) \
do { \
- const TYPE *vals = (const TYPE *) values; \
+ const TYPE *restrict vals = (const TYPE *) values; \
assert(gidincr == 0 || gidincr == 1); \
gid = 0; /* doesn't change if gidincr == 0 */ \
for (;;) { \
@@ -826,7 +826,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
#define AGGR_PROD_FLOAT(TYPE1, TYPE2) \
do { \
- const TYPE1 *vals = (const TYPE1 *) values; \
+ const TYPE1 *restrict vals = (const TYPE1 *) values; \
assert(gidincr == 0 || gidincr == 1); \
gid = 0; /* doesn't change if gidincr == 0 */ \
for (;;) { \
@@ -877,15 +877,15 @@ BATsum(void *res, int tp, BAT *b, BAT *s
} while (0)
static BUN
-doprod(const void *values, oid seqb, BUN start, BUN end, void *results,
- BUN ngrp, int tp1, int tp2, const oid *cand, const oid *candend,
- const oid *gids, int gidincr, oid min, oid max,
+doprod(const void *restrict values, oid seqb, BUN start, BUN end, void
*restrict results,
+ BUN ngrp, int tp1, int tp2, const oid *restrict cand, const oid
*candend,
+ const oid *restrict gids, int gidincr, oid min, oid max,
int skip_nils, int abort_on_error, int nil_if_empty, const char *func)
{
BUN nils = 0;
BUN i;
oid gid;
- unsigned int *seen; /* bitmask for groups that we've seen */
+ unsigned int *restrict seen; /* bitmask for groups that we've seen */
/* allocate bitmap for seen group ids */
seen = GDKzalloc(((ngrp + 31) / 32) * sizeof(int));
@@ -896,7 +896,7 @@ doprod(const void *values, oid seqb, BUN
switch (tp2) {
case TYPE_bte: {
- bte *prods = (bte *) results;
+ bte *restrict prods = (bte *) results;
switch (tp1) {
case TYPE_bte:
AGGR_PROD(bte, bte, sht);
@@ -907,7 +907,7 @@ doprod(const void *values, oid seqb, BUN
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list