Changeset: 9a13606d13aa for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9a13606d13aa
Modified Files:
configure.ag
monetdb5/modules/mal/mkey.c
Branch: Jun2020
Log Message:
GCC both on Fedora 31 and 32 have a problem optimizing mkey.c with -O3.
So we use -O2 for GCC when using --enable-optimize. We then don't
need a hacky call to a function in the loop.
diffs (74 lines):
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -856,7 +856,7 @@ AS_CASE([$enable_optimize], [yes], [
# -finline-functions, -funswitch-loops,
# -fpredictive-commoning, -fgcse-after-reload,
# -ftree-vectorize and -fipa-cp-clone
- CFLAGS="-O3 -fomit-frame-pointer -pipe ${CFLAGS}"
+ CFLAGS="-O2 -fomit-frame-pointer -pipe ${CFLAGS}"
# because we explicitly disable debugging, we can
explicitly
# enable -fomit-frame-pointer here
# notes on -funroll-all-loops:
diff --git a/monetdb5/modules/mal/mkey.c b/monetdb5/modules/mal/mkey.c
--- a/monetdb5/modules/mal/mkey.c
+++ b/monetdb5/modules/mal/mkey.c
@@ -40,18 +40,6 @@ MKEYrotate(lng *res, const lng *val, con
return MAL_SUCCEED;
}
-#if defined(__GNUC__) && __GNUC__ == 10
-/* There is a bug in GCC 10.0.1 (at least 10.0.1-0.13) where the loops
- * where this function is inserted is optimized incorrectly, resulting
- * in incorrect results. By adding a call to what is in essence a
- * dummy function we force the optimizer to simplify its optimization
- * and we get the correct results. */
-#define WORK_AROUND_GNUC_BUG() GDKclrerr()
-#else
-/* no need to do this thing of not gcc 10 */
-#define WORK_AROUND_GNUC_BUG() ((void) 0)
-#endif
-
str
MKEYhash(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
{
@@ -282,7 +270,6 @@ MKEYbulk_rotate_xor_hash(bat *res, const
const bte *restrict v = (const bte *) Tloc(b, 0);
for (BUN i = 0; i < n; i++) {
r[i] = GDK_ROTATE(h[i], lbit, rbit) ^ MKEYHASH_bte(v +
i);
- WORK_AROUND_GNUC_BUG();
}
break;
}
@@ -290,7 +277,6 @@ MKEYbulk_rotate_xor_hash(bat *res, const
const sht *restrict v = (const sht *) Tloc(b, 0);
for (BUN i = 0; i < n; i++) {
r[i] = GDK_ROTATE(h[i], lbit, rbit) ^ MKEYHASH_sht(v +
i);
- WORK_AROUND_GNUC_BUG();
}
break;
}
@@ -299,7 +285,6 @@ MKEYbulk_rotate_xor_hash(bat *res, const
const int *restrict v = (const int *) Tloc(b, 0);
for (BUN i = 0; i < n; i++) {
r[i] = GDK_ROTATE(h[i], lbit, rbit) ^ MKEYHASH_int(v +
i);
- WORK_AROUND_GNUC_BUG();
}
break;
}
@@ -308,7 +293,6 @@ MKEYbulk_rotate_xor_hash(bat *res, const
const lng *restrict v = (const lng *) Tloc(b, 0);
for (BUN i = 0; i < n; i++) {
r[i] = GDK_ROTATE(h[i], lbit, rbit) ^ MKEYHASH_lng(v +
i);
- WORK_AROUND_GNUC_BUG();
}
break;
}
@@ -317,7 +301,6 @@ MKEYbulk_rotate_xor_hash(bat *res, const
const hge *restrict v = (const hge *) Tloc(b, 0);
for (BUN i = 0; i < n; i++) {
r[i] = GDK_ROTATE(h[i], lbit, rbit) ^ MKEYHASH_hge(v +
i);
- WORK_AROUND_GNUC_BUG();
}
break;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list