diff --git a/src/autosegs.h b/src/autosegs.h index f38e3628e..9cba04ad2 100644 --- a/src/autosegs.h +++ b/src/autosegs.h @@ -35,7 +35,15 @@ #ifndef AUTOSEGS_H #define AUTOSEGS_H -#include "doomtype.h" +#if defined(__clang__) +#if defined(__has_feature) && __has_feature(address_sanitizer) +#define NO_SANITIZE __attribute__((no_sanitize("address"))) +#else +#define NO_SANITIZE +#endif +#else +#define NO_SANITIZE +#endif #define REGMARKER(x) (x) typedef void * const REGINFO; diff --git a/src/c_expr.cpp b/src/c_expr.cpp index 0fc20f68f..4d1668266 100644 --- a/src/c_expr.cpp +++ b/src/c_expr.cpp @@ -656,7 +656,7 @@ FProduction *ProdNeqStr (FStringProd *prod1, FStringProd *prod2) FProduction *ProdXorDbl (FDoubleProd *prod1, FDoubleProd *prod2) { - return NewDoubleProd ((double)((SQWORD)prod1->Value ^ (SQWORD)prod2->Value)); + return NewDoubleProd ((double)((int64_t)prod1->Value ^ (int64_t)prod2->Value)); } //========================================================================== @@ -667,7 +667,7 @@ FProduction *ProdXorDbl (FDoubleProd *prod1, FDoubleProd *prod2) FProduction *ProdAndDbl (FDoubleProd *prod1, FDoubleProd *prod2) { - return NewDoubleProd ((double)((SQWORD)prod1->Value & (SQWORD)prod2->Value)); + return NewDoubleProd ((double)((int64_t)prod1->Value & (int64_t)prod2->Value)); } //========================================================================== @@ -678,7 +678,7 @@ FProduction *ProdAndDbl (FDoubleProd *prod1, FDoubleProd *prod2) FProduction *ProdOrDbl (FDoubleProd *prod1, FDoubleProd *prod2) { - return NewDoubleProd ((double)((SQWORD)prod1->Value | (SQWORD)prod2->Value)); + return NewDoubleProd ((double)((int64_t)prod1->Value | (int64_t)prod2->Value)); } //========================================================================== @@ -689,7 +689,7 @@ FProduction *ProdOrDbl (FDoubleProd *prod1, FDoubleProd *prod2) FProduction *ProdLAndDbl (FDoubleProd *prod1, FDoubleProd *prod2) { - return NewDoubleProd ((double)((SQWORD)prod1->Value && (SQWORD)prod2->Value)); + return NewDoubleProd ((double)((int64_t)prod1->Value && (int64_t)prod2->Value)); } //========================================================================== @@ -700,7 +700,7 @@ FProduction *ProdLAndDbl (FDoubleProd *prod1, FDoubleProd *prod2) FProduction *ProdLOrDbl (FDoubleProd *prod1, FDoubleProd *prod2) { - return NewDoubleProd ((double)((SQWORD)prod1->Value || (SQWORD)prod2->Value)); + return NewDoubleProd ((double)((int64_t)prod1->Value || (int64_t)prod2->Value)); } diff --git a/src/doomtype.h b/src/doomtype.h index b2540d69f..0d0b79068 100644 --- a/src/doomtype.h +++ b/src/doomtype.h @@ -57,16 +57,6 @@ typedef TMap FClassMap; #define NOVTABLE #endif -#if defined(__clang__) -#if defined(__has_feature) && __has_feature(address_sanitizer) -#define NO_SANITIZE __attribute__((no_sanitize("address"))) -#else -#define NO_SANITIZE -#endif -#else -#define NO_SANITIZE -#endif - #if defined(__GNUC__) // With versions of GCC newer than 4.2, it appears it was determined that the // cost of an unaligned pointer on PPC was high enough to add padding to the