- some GCC fixed by Edward-san.

This commit is contained in:
Christoph Oelckers 2015-04-29 11:28:04 +02:00
parent 1effaa4c8e
commit 7b6b473ec4
10 changed files with 33 additions and 15 deletions

View file

@ -37,6 +37,7 @@
#define REGMARKER(x) (x) #define REGMARKER(x) (x)
typedef void * const REGINFO; typedef void * const REGINFO;
typedef void * NCREGINFO;
// List of Action functons // List of Action functons
extern REGINFO ARegHead; extern REGINFO ARegHead;
@ -72,7 +73,7 @@ class FAutoSegIterator
} }
Probe = Head; Probe = Head;
} }
REGINFO operator*() const NCREGINFO operator*() const
{ {
return *Probe; return *Probe;
} }

View file

@ -792,7 +792,7 @@ void SetDehParams(FState *state, int codepointer)
sym = dyn_cast<PFunction>(RUNTIME_CLASS(AInventory)->Symbols.FindSymbol(FName(MBFCodePointers[codepointer].name), true)); sym = dyn_cast<PFunction>(RUNTIME_CLASS(AInventory)->Symbols.FindSymbol(FName(MBFCodePointers[codepointer].name), true));
if (sym == NULL) return; if (sym == NULL) return;
if (codepointer < 0 || codepointer >= countof(MBFCodePointerFactories)) if (codepointer < 0 || (unsigned)codepointer >= countof(MBFCodePointerFactories))
{ {
// This simply should not happen. // This simply should not happen.
Printf("Unmanaged dehacked codepointer alias num %i\n", codepointer); Printf("Unmanaged dehacked codepointer alias num %i\n", codepointer);

View file

@ -723,7 +723,7 @@ void D_WriteUserInfoStrings (int pnum, BYTE **stream, bool compact)
case NAME_PlayerClass: case NAME_PlayerClass:
*stream += sprintf(*((char **)stream), "\\%s", info->GetPlayerClassNum() == -1 ? "Random" : *stream += sprintf(*((char **)stream), "\\%s", info->GetPlayerClassNum() == -1 ? "Random" :
D_EscapeUserInfo(info->GetPlayerClassType()->DisplayName.GetChars())); D_EscapeUserInfo(info->GetPlayerClassType()->DisplayName.GetChars()).GetChars());
break; break;
case NAME_Skin: case NAME_Skin:

View file

@ -101,7 +101,7 @@ void DumpTypeTable()
for (size_t i = 0; i < countof(TypeTable.TypeHash); ++i) for (size_t i = 0; i < countof(TypeTable.TypeHash); ++i)
{ {
int len = 0; int len = 0;
Printf("%4d:", i); Printf("%4zu:", i);
for (PType *ty = TypeTable.TypeHash[i]; ty != NULL; ty = ty->HashNext) for (PType *ty = TypeTable.TypeHash[i]; ty != NULL; ty = ty->HashNext)
{ {
Printf(" -> %s", ty->IsKindOf(RUNTIME_CLASS(PNamedType)) ? static_cast<PNamedType*>(ty)->TypeName.GetChars(): ty->GetClass()->TypeName.GetChars()); Printf(" -> %s", ty->IsKindOf(RUNTIME_CLASS(PNamedType)) ? static_cast<PNamedType*>(ty)->TypeName.GetChars(): ty->GetClass()->TypeName.GetChars());
@ -122,7 +122,7 @@ void DumpTypeTable()
} }
Printf("\n"); Printf("\n");
} }
Printf("Used buckets: %d/%u (%.2f%%) for %d entries\n", used, countof(TypeTable.TypeHash), double(used)/countof(TypeTable.TypeHash)*100, all); Printf("Used buckets: %d/%lu (%.2f%%) for %d entries\n", used, countof(TypeTable.TypeHash), double(used)/countof(TypeTable.TypeHash)*100, all);
Printf("Min bucket size: %d\n", min); Printf("Min bucket size: %d\n", min);
Printf("Max bucket size: %d\n", max); Printf("Max bucket size: %d\n", max);
Printf("Avg bucket size: %.2f\n", double(all) / used); Printf("Avg bucket size: %.2f\n", double(all) / used);

View file

@ -389,7 +389,7 @@ public:
if ((*this)[i] != NULL) if ((*this)[i] != NULL)
delete (*this)[i]; delete (*this)[i];
} }
Clear(); this->Clear();
} }
}; };
@ -461,7 +461,12 @@ template<class KT> struct THashTraits
{ {
// Returns the hash value for a key. // Returns the hash value for a key.
hash_t Hash(const KT key) { return (hash_t)(intptr_t)key; } hash_t Hash(const KT key) { return (hash_t)(intptr_t)key; }
hash_t Hash(double key) { return ((hash_t *)&key)[0] ^ ((hash_t *)&key)[1]; } hash_t Hash(double key)
{
hash_t keyhash[2];
memcpy(&keyhash, &key, sizeof(keyhash));
return keyhash[0] ^ keyhash[1];
}
// Compares two keys, returning zero if they are the same. // Compares two keys, returning zero if they are the same.
int Compare(const KT left, const KT right) { return left != right; } int Compare(const KT left, const KT right) { return left != right; }
@ -470,14 +475,24 @@ template<class KT> struct THashTraits
template<> struct THashTraits<float> template<> struct THashTraits<float>
{ {
// Use all bits when hashing singles instead of converting them to ints. // Use all bits when hashing singles instead of converting them to ints.
hash_t Hash(float key) { return *((hash_t *)&key); } hash_t Hash(float key)
{
hash_t keyhash;
memcpy(&keyhash, &key, sizeof(keyhash));
return keyhash;
}
int Compare(float left, float right) { return left != right; } int Compare(float left, float right) { return left != right; }
}; };
template<> struct THashTraits<double> template<> struct THashTraits<double>
{ {
// Use all bits when hashing doubles instead of converting them to ints. // Use all bits when hashing doubles instead of converting them to ints.
hash_t Hash(double key) { return ((hash_t *)&key)[0] ^ ((hash_t *)&key)[1]; } hash_t Hash(double key)
{
hash_t keyhash[2];
memcpy(&keyhash, &key, sizeof(keyhash));
return keyhash[0] ^ keyhash[1];
}
int Compare(double left, double right) { return left != right; } int Compare(double left, double right) { return left != right; }
}; };

View file

@ -4350,8 +4350,8 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetRoll)
{ {
PARAM_ACTION_PROLOGUE; PARAM_ACTION_PROLOGUE;
PARAM_ANGLE (roll); PARAM_ANGLE (roll);
PARAM_INT_OPT (flags); { flags = 0; } PARAM_INT_OPT (flags) { flags = 0; }
PARAM_INT_OPT (ptr); { ptr = AAPTR_DEFAULT; } PARAM_INT_OPT (ptr) { ptr = AAPTR_DEFAULT; }
AActor *ref = COPY_AAPTR(self, ptr); AActor *ref = COPY_AAPTR(self, ptr);
if (ref != NULL) if (ref != NULL)

View file

@ -3130,7 +3130,7 @@ FxExpression *FxVMFunctionCall::Resolve(FCompileContext& ctx)
return NULL; return NULL;
} }
TArray<PType *> &rets = Function->Variants[0].Proto->ReturnTypes; TArray<PType *> &rets = Function->Variants[0].Proto->ReturnTypes;
if (rets.Size() == NULL) if (rets.Size() == 0)
{ {
ReturnType = TypeVoid; ReturnType = TypeVoid;
} }

View file

@ -83,7 +83,7 @@ public:
NeedSpace = false; NeedSpace = false;
if (NestDepth > 0) if (NestDepth > 0)
{ {
Str.AppendFormat("%*s", NestDepth, ""); Str.AppendFormat("%*s", (int)NestDepth, "");
} }
if (ConsecOpens > 0) if (ConsecOpens > 0)
{ {

View file

@ -476,8 +476,8 @@ struct VMValue
{ {
Kill(); Kill();
a = v; a = v;
atag = atag; this->atag = atag;
Type = atag; Type = REGT_POINTER;
} }
void SetNil() void SetNil()
{ {

View file

@ -663,7 +663,9 @@ static void DtoS(ZCC_ExprConstant *expr, FSharedStringArena &str_arena)
// Convert to a string with enough precision such that converting // Convert to a string with enough precision such that converting
// back to a double will not lose any data. // back to a double will not lose any data.
char str[64]; char str[64];
IGNORE_FORMAT_PRE
int len = mysnprintf(str, countof(str), "%H", expr->DoubleVal); int len = mysnprintf(str, countof(str), "%H", expr->DoubleVal);
IGNORE_FORMAT_POST
expr->StringVal = str_arena.Alloc(str, len); expr->StringVal = str_arena.Alloc(str, len);
expr->Type = TypeString; expr->Type = TypeString;
} }