From 910033a07677949c4e92a8848f5f15b8cde63a0b Mon Sep 17 00:00:00 2001 From: "David E. O'Brien" Date: Wed, 22 Mar 2000 19:10:42 +0000 Subject: Port of the GCC 2.7.2.3 that was the base compiler in FreeBSD 2.2.x thru 3.x. --- lang/gcc27/files/patch-emit-rtl.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lang/gcc27/files/patch-emit-rtl.c (limited to 'lang/gcc27/files/patch-emit-rtl.c') diff --git a/lang/gcc27/files/patch-emit-rtl.c b/lang/gcc27/files/patch-emit-rtl.c new file mode 100644 index 000000000000..47fc792c8c73 --- /dev/null +++ b/lang/gcc27/files/patch-emit-rtl.c @@ -0,0 +1,37 @@ +--- emit-rtl.c.orig Thu Sep 14 13:09:30 1995 ++++ emit-rtl.c Mon Mar 20 13:29:11 2000 +@@ -159,6 +159,10 @@ + rtx static_chain_incoming_rtx; /* (REG:Pmode STATIC_CHAIN_INCOMING_REGNUM) */ + rtx pic_offset_table_rtx; /* (REG:Pmode PIC_OFFSET_TABLE_REGNUM) */ + ++/* This is used to implement __builtin_return_address for some machines. ++ See for instance the MIPS port. */ ++rtx return_address_pointer_rtx; /* (REG:Pmode RETURN_ADDRESS_POINTER_REGNUM) */ ++ + rtx virtual_incoming_args_rtx; /* (REG:Pmode VIRTUAL_INCOMING_ARGS_REGNUM) */ + rtx virtual_stack_vars_rtx; /* (REG:Pmode VIRTUAL_STACK_VARS_REGNUM) */ + rtx virtual_stack_dynamic_rtx; /* (REG:Pmode VIRTUAL_STACK_DYNAMIC_REGNUM) */ +@@ -345,6 +349,11 @@ + && ! reload_in_progress) + return arg_pointer_rtx; + #endif ++#ifdef RETURN_ADDRESS_POINTER_REGNUM ++ if (return_address_pointer_rtx && regno == RETURN_ADDRESS_POINTER_REGNUM ++ && mode == Pmode && ! reload_in_progress) ++ return return_address_pointer_rtx; ++#endif + if (stack_pointer_rtx && regno == STACK_POINTER_REGNUM && mode == Pmode + && ! reload_in_progress) + return stack_pointer_rtx; +@@ -3391,6 +3400,11 @@ + arg_pointer_rtx = stack_pointer_rtx; + else + arg_pointer_rtx = gen_rtx (REG, Pmode, ARG_POINTER_REGNUM); ++ ++#ifdef RETURN_ADDRESS_POINTER_REGNUM ++ return_address_pointer_rtx = gen_rtx (REG, Pmode, ++ RETURN_ADDRESS_POINTER_REGNUM); ++#endif + + /* Create the virtual registers. Do so here since the following objects + might reference them. */ -- cgit v1.2.3