aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2019-08-12 02:33:31 -0700
committerAndrew Waterman <andrew@sifive.com>2019-08-12 02:35:42 -0700
commitbc944193381840386a00ec37a5c44908c8f16689 (patch)
treef32eb6f63409bf3829d567d2ce0fe0a65d81d46b /util
parent0694b85892b49a80eedbe5ac0b558f5a463058a5 (diff)
downloadriscv-pk-bc944193381840386a00ec37a5c44908c8f16689.zip
riscv-pk-bc944193381840386a00ec37a5c44908c8f16689.tar.gz
riscv-pk-bc944193381840386a00ec37a5c44908c8f16689.tar.bz2
Prevent memset from calling itself
With -ftree-loop-distribute-patterns, GCC detects that the body of memset is equivalent to memset, and so turns it into a call to memset, causing infinite recursion. Closes #170.
Diffstat (limited to 'util')
-rw-r--r--util/string.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/util/string.c b/util/string.c
index 615c325..90d7127 100644
--- a/util/string.c
+++ b/util/string.c
@@ -4,6 +4,11 @@
#include <stdint.h>
#include <ctype.h>
+#ifdef __GNUC__
+// Don't let GCC pattern-match these functions' bodies into self-calls
+#pragma GCC optimize ("no-tree-loop-distribute-patterns")
+#endif
+
void* memcpy(void* dest, const void* src, size_t len)
{
const char* s = src;