From d020e6d88ba97508602e625fbe74e622acd3154c Mon Sep 17 00:00:00 2001 From: leitner Date: Mon, 23 May 2016 09:36:48 +0000 Subject: [PATCH] another gcc 6 warning fix compile on osx again remove asm version of i?mult64 (was needed only for clang because it didn't have __uint128_t, but it now has it) --- fmt/fmt_strn.c | 16 ++++++++++++---- fmt/fmt_varint.c | 6 ++++++ mult/imult64.c | 24 ------------------------ mult/umult64.c | 23 ----------------------- 4 files changed, 18 insertions(+), 51 deletions(-) diff --git a/fmt/fmt_strn.c b/fmt/fmt_strn.c index ca4a14a..1be2f1f 100644 --- a/fmt/fmt_strn.c +++ b/fmt/fmt_strn.c @@ -5,10 +5,18 @@ size_t fmt_strn(char *out,const char *in,size_t limit) { register const char* t=in; register const char* u=in+limit; for (;;) { - if (!*t || t==u) break; if (s) { *s=*t; ++s; } ++t; - if (!*t || t==u) break; if (s) { *s=*t; ++s; } ++t; - if (!*t || t==u) break; if (s) { *s=*t; ++s; } ++t; - if (!*t || t==u) break; if (s) { *s=*t; ++s; } ++t; + if (!*t || t==u) break; + if (s) { *s=*t; ++s; } + ++t; + if (!*t || t==u) break; + if (s) { *s=*t; ++s; } + ++t; + if (!*t || t==u) break; + if (s) { *s=*t; ++s; } + ++t; + if (!*t || t==u) break; + if (s) { *s=*t; ++s; } + ++t; } return (size_t)(t-in); } diff --git a/fmt/fmt_varint.c b/fmt/fmt_varint.c index a5b726d..0276b06 100644 --- a/fmt/fmt_varint.c +++ b/fmt/fmt_varint.c @@ -15,4 +15,10 @@ size_t fmt_varint(char* dest,unsigned long long l) { return i; } +#ifdef __ELF__ size_t fmt_pb_type0_int(char* dest,unsigned long long l) __attribute__((alias("fmt_varint"))); +#else +size_t fmt_pb_type0_int(char* dest,unsigned long long l) { + return fmt_varint(dest,l); +} +#endif diff --git a/mult/imult64.c b/mult/imult64.c index 78fc919..79f2f7b 100644 --- a/mult/imult64.c +++ b/mult/imult64.c @@ -4,28 +4,6 @@ int imult64( int64 a, int64 b, int64* c) { return !__builtin_mul_overflow(a,b,c); } -#else - -#if defined(__x86_64__) && defined(__OPTIMIZE__) - -/* WARNING: this only works if compiled with -fomit-frame-pointer */ -void imult64() { - asm volatile( - "xchgq %rdx,%rsi\n" - "movq %rdi,%rax\n" - "imulq %rdx\n" - "jc 1f\n" /* overflow */ - "movq %rax,(%rsi)\n" - "xorq %rax,%rax\n" - "inc %rax\n" - "ret\n" - "1:\n" - "xorq %rax,%rax\n" - /* the closing ret is renerated by gcc */ - ); -} - - #else #include "safemult.h" @@ -54,5 +32,3 @@ int imult64(int64 a,int64 b,int64* c) { #endif #endif - -#endif diff --git a/mult/umult64.c b/mult/umult64.c index 3e7071c..c533b3d 100644 --- a/mult/umult64.c +++ b/mult/umult64.c @@ -8,27 +8,6 @@ int umult64(uint64 a,uint64 b,uint64* c) { return !__builtin_mul_overflow(a,b,c) #include "haveuint128.h" -#if defined(__x86_64__) && defined(__OPTIMIZE__) - -/* WARNING: this only works if compiled with -fomit-frame-pointer */ -void umult64() { - asm volatile( - "xchgq %rdx,%rsi\n" - "movq %rdi,%rax\n" - "mulq %rdx\n" - "jc 1f\n" /* overflow */ - "movq %rax,(%rsi)\n" - "xorq %rax,%rax\n" - "inc %rax\n" - "ret\n" - "1:\n" - "xorq %rax,%rax\n" - /* the closing ret is renerated by gcc */ - ); -} - -#else - #include "safemult.h" #if defined(HAVE_UINT128) @@ -68,5 +47,3 @@ int umult64(uint64 a,uint64 b,uint64* c) { #endif #endif - -#endif