From d389f4b9bd88edeb4474b3d0e84cd71db7ca6589 Mon Sep 17 00:00:00 2001 From: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Sat, 30 Aug 2025 17:30:43 +0100 Subject: [PATCH] Fix GCC building (#702) --- libultra/src/libc/ldiv.c | 6 +++--- src/menu.c | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libultra/src/libc/ldiv.c b/libultra/src/libc/ldiv.c index 1e4d65c4..54aa7222 100644 --- a/libultra/src/libc/ldiv.c +++ b/libultra/src/libc/ldiv.c @@ -36,15 +36,15 @@ lldiv_t lldiv(long long num, long long denom) { #ifdef __GNUC__ -u64 __lshrdi3(u64 u, unsigned int b) { +__attribute__((optimize("O2"))) u64 __lshrdi3(u64 u, unsigned int b) { return u >> b; } -u64 __ashldi3(u64 u, unsigned int b) { +__attribute__((optimize("O2"))) u64 __ashldi3(u64 u, unsigned int b) { return u << b; } -s64 __ashrdi3(s64 u, unsigned int b) { +__attribute__((optimize("O2"))) s64 __ashrdi3(s64 u, unsigned int b) { return u >> b; } #endif diff --git a/src/menu.c b/src/menu.c index 7b7ea2f3..21e8e07e 100644 --- a/src/menu.c +++ b/src/menu.c @@ -10554,7 +10554,11 @@ void postrace_load(void) { gPostRace.unk0_s32++; return; } +#ifdef AVOID_UB + temp_a0 = gRaceResultsObjectIndices[gPostRace.unk0_s32 - 10]; +#else // This relies on the data laid out as is in memory, since the var itself is only 2 entries big. temp_a0 = D_800E0A10[gPostRace.unk0_s32]; +#endif if (temp_a0 == -1) { menu_imagegroup_load(gRaceResultsImageIndices); menu_racer_portraits();