diff options
author | David E. O'Brien <obrien@FreeBSD.org> | 2000-03-22 19:10:42 +0000 |
---|---|---|
committer | David E. O'Brien <obrien@FreeBSD.org> | 2000-03-22 19:10:42 +0000 |
commit | 910033a07677949c4e92a8848f5f15b8cde63a0b (patch) | |
tree | 45b411beaffa330eddbe13d6e002c0fb1afe6ec9 /lang/gcc27/files/patch-emit-rtl.c | |
parent | Fix the URL in one of the MASTER_SITES. (diff) |
Port of the GCC 2.7.2.3 that was the base compiler in FreeBSD 2.2.x thru 3.x.
Notes
Notes:
svn path=/head/; revision=26961
Diffstat (limited to 'lang/gcc27/files/patch-emit-rtl.c')
-rw-r--r-- | lang/gcc27/files/patch-emit-rtl.c | 37 |
1 files changed, 37 insertions, 0 deletions
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. */ |