mirror of
https://github.com/pret/agbcc.git
synced 2026-03-21 17:44:20 -05:00
Fix prologue issue
This commit is contained in:
parent
c2e57ee044
commit
b11e16421d
|
|
@ -454,3 +454,6 @@ extern int flag_hex_asm;
|
|||
/* Nonzero if generated DWARF debug info should be corrected rather than
|
||||
match the original (buggy) GCC 2.95.x output. */
|
||||
extern int flag_fixed_debug_line_info;
|
||||
|
||||
/* Nonzero if prologue bug should be fixed. */
|
||||
extern int flag_prologue_bugfix;
|
||||
|
|
|
|||
|
|
@ -717,8 +717,11 @@ far_jump_used_p()
|
|||
rtx insn;
|
||||
|
||||
#ifndef OLD_COMPILER
|
||||
if (current_function_has_far_jump)
|
||||
return 1;
|
||||
if (!flag_prologue_bugfix)
|
||||
{
|
||||
if (current_function_has_far_jump)
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
for (insn = get_insns(); insn; insn = NEXT_INSN(insn))
|
||||
|
|
|
|||
13
gcc/toplev.c
13
gcc/toplev.c
|
|
@ -588,6 +588,9 @@ int flag_hex_asm = 0;
|
|||
/* Fix buggy DWARF line info generation. */
|
||||
int flag_fixed_debug_line_info = 0;
|
||||
|
||||
/* Fix prologue bug in new compiler. */
|
||||
int flag_prologue_bugfix = 0;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *string;
|
||||
|
|
@ -729,6 +732,16 @@ lang_independent_options f_options[] =
|
|||
"Use hex instead of decimal in assembly output"},
|
||||
{"fix-debug-line", &flag_fixed_debug_line_info, 1,
|
||||
"Generate fixed DWARF line info"},
|
||||
/* This flag fixes a bug in the newer agbcc version that causes `lr` to be
|
||||
saved onto the stack in functions where it is not necessary. This is
|
||||
needed to produce matching code for certain GBA games.
|
||||
|
||||
This flag is defined under OLD_COMPILER to prevent a situation where a game
|
||||
that uses both agbcc and old_agbcc (e.g., pokepinballrs) needs to maintain two
|
||||
separate lists of flags depending on the compiler used for a specific file.
|
||||
Otherwise, old_agbcc will throw an error. */
|
||||
{"prologue-bugfix", &flag_prologue_bugfix, 1,
|
||||
"Prevent unnecessary saving of the lr register to the stack"},
|
||||
};
|
||||
|
||||
#define NUM_ELEM(a) (sizeof (a) / sizeof ((a)[0]))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user