URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc
- from Rev 413 to Rev 414
- ↔ Reverse comparison
Rev 413 → Rev 414
/trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr45034.c
0,0 → 1,45
extern void abort (void); |
static void fixnum_neg(signed char x, signed char *py, int *pv) |
{ |
unsigned char ux, uy; |
|
ux = (unsigned char)x; |
uy = -ux; |
*py = (uy <= 127) ? (signed char)uy : (-(signed char)(255 - uy) - 1); |
*pv = (x == -128) ? 1 : 0; |
} |
|
void __attribute__((noinline)) foo(int x, int y, int v) |
{ |
if (y < -128 || y > 127) |
abort(); |
} |
|
int test_neg(void) |
{ |
signed char x, y; |
int v, err; |
|
err = 0; |
x = -128; |
for (;;) { |
fixnum_neg(x, &y, &v); |
foo((int)x, (int)y, v); |
if ((v && x != -128) || (!v && x == -128)) |
++err; |
if (x == 127) |
break; |
++x; |
} |
return err; |
} |
|
int main(void) |
{ |
if (sizeof (char) != 1) |
return 0; |
if (test_neg() != 0) |
abort(); |
return 0; |
} |
|
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr45034.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr44858.c
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr44858.c (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr44858.c (revision 414)
@@ -0,0 +1,28 @@
+/* PR rtl-optimization/44858 */
+
+extern void abort (void);
+int a = 3;
+int b = 1;
+
+__attribute__((noinline)) long long
+foo (int x, int y)
+{
+ return x / y;
+}
+
+__attribute__((noinline)) int
+bar (void)
+{
+ int c = 2;
+ c &= foo (1, b) > b;
+ b = (a != 0) | c;
+ return c;
+}
+
+int
+main (void)
+{
+ if (bar () != 0 || b != 1)
+ abort ();
+ return 0;
+}
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr44858.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr45262.c
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr45262.c (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr45262.c (revision 414)
@@ -0,0 +1,33 @@
+/* PR middle-end/45262 */
+
+extern void abort (void);
+
+int
+foo (unsigned int x)
+{
+ return ((int) x < 0) || ((int) (-x) < 0);
+}
+
+int
+bar (unsigned int x)
+{
+ return x >> 31 || (-x) >> 31;
+}
+
+int
+main (void)
+{
+ if (foo (1) != 1)
+ abort ();
+ if (foo (0) != 0)
+ abort ();
+ if (foo (-1) != 1)
+ abort ();
+ if (bar (1) != 1)
+ abort ();
+ if (bar (0) != 0)
+ abort ();
+ if (bar (-1) != 1)
+ abort ();
+ return 0;
+}
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr45262.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/compile/pr45109.c
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/compile/pr45109.c (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/compile/pr45109.c (revision 414)
@@ -0,0 +1,38 @@
+struct o_fsm_t;
+struct o_fsm_event_t;
+
+typedef void (*fn_t) (struct o_fsm_t *,
+ struct o_fsm_event_t const *);
+
+struct o_fsm_state_t {
+ fn_t dispatch;
+};
+
+struct o_fsm_t {
+ fn_t dispatch;
+};
+
+extern struct o_fsm_state_t o_fsm_tran(struct o_fsm_t *fsm,
+ struct o_fsm_state_t next_state);
+static void plist_parser_state_start(struct o_fsm_t *fsm,
+ struct o_fsm_event_t const *fsm_event);
+
+struct o_fsm_state_t o_fsm_state(fn_t dispatch_fcn)
+{
+ return *(struct o_fsm_state_t *)&dispatch_fcn;
+}
+
+typedef struct _o_plist_parser_t {
+ struct o_fsm_t fsm;
+} o_plist_parser_t;
+
+static void plist_parser_state_start(struct o_fsm_t *fsm,
+ struct o_fsm_event_t const *fsm_event)
+{
+}
+
+void o_plist_deserialize_xml(int fin)
+{
+ o_plist_parser_t parser;
+ o_fsm_tran(&parser.fsm, o_fsm_state(plist_parser_state_start));
+}
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/compile/pr45109.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.target/i386/pr45296.c
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.target/i386/pr45296.c (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.target/i386/pr45296.c (revision 414)
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+register long double F80 asm("st"); /* { dg-error "stack register" } */
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.target/i386/pr45296.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45055.c
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45055.c (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45055.c (revision 414)
@@ -0,0 +1,41 @@
+/* PR debug/45055 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftracer -fsched-pressure -funroll-loops -fschedule-insns -fcompare-debug" } */
+
+int colormap[10];
+
+extern int bar ();
+
+void
+foo (int *img, int fp, int y, int *ptr, int depth, int c, int t, int xm)
+{
+ int x, color, count;
+ for (; y; y--)
+ {
+ if (depth)
+ {
+ count = bar ();
+ for (x = xm; x; x--)
+ {
+ if (c != 1)
+ count = color = -1;
+ if (count == 0)
+ color = count = bar ();
+ if (color)
+ t = bar (fp);
+ *ptr++ = colormap[t];
+ }
+ }
+ switch (*img)
+ {
+ case 1:
+ bar ();
+ case 3:
+ case -1:
+ case -3:
+ bar ();
+ case -4:
+ bar ();
+ }
+ }
+}
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45055.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45259.c
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45259.c (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45259.c (revision 414)
@@ -0,0 +1,42 @@
+/* PR debug/45259 */
+/* { dg-do compile } */
+/* { dg-options "-g -O2 -fpic -w" { target fpic } } */
+
+struct S { void (*bar) (long); };
+struct T { struct S *t; };
+int w;
+extern int baz (int);
+
+void
+foo (int x, int u, char *z)
+{
+ struct T *v;
+ static void *y[256] = { &&l1, &&l2 };
+ for (;;)
+ switch (x)
+ {
+ l2:
+ x = 9;
+ case 9:
+ goto *y[*z++];
+ case 10:
+ case 27:
+ case 54:
+ case 99:
+ case 100:
+ case 120:
+ case 122:
+ case 131:
+ case 132:
+ case 134:
+ case 141:
+ case 142:
+ v->t->bar (u);
+ v->t->bar (u);
+ case 143:
+ continue;
+ l1:
+ default:
+ baz (w);
+ }
+}
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45259.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/other/i386-8.C
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/other/i386-8.C (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/other/i386-8.C (revision 414)
@@ -0,0 +1,23 @@
+// PR rtl-optimization/45400
+// { dg-do compile { target i?86-*-* x86_64-*-* } }
+// { dg-options "-O2 -msse2" }
+// { dg-options "-O2 -msse2 -fpic" { target fpic } }
+// { dg-require-effective-target sse2 }
+
+#include
+
+static inline unsigned short
+bar (unsigned short x)
+{
+ return ((x << 8) | (x >> 8));
+}
+
+unsigned int
+foo (float *x, short *y)
+{
+ __m128 a = _mm_set_ps1 (32767.5f);
+ __m128 b = _mm_mul_ps (_mm_load_ps (x), a);
+ __m64 c = _mm_cvtps_pi16 (b);
+ __builtin_memcpy (y, &c, sizeof (short) * 4);
+ y[0] = bar (y[0]);
+}
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/other/i386-8.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/tree-ssa/pr44914.C
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/tree-ssa/pr44914.C (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/tree-ssa/pr44914.C (revision 414)
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -fipa-sra -fnon-call-exceptions" } */
+
+struct A
+{
+ ~A () { }
+};
+
+struct B
+{
+ A a;
+ int i;
+ void f (int) { }
+ B ()
+ {
+ f (i);
+ }
+};
+
+B b;
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/tree-ssa/pr44914.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/pr45112.C
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/pr45112.C (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/pr45112.C (revision 414)
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+
+struct JSString
+{
+ unsigned char mLength;
+ static JSString unitStringTable[];
+};
+
+JSString JSString::unitStringTable[] __attribute__ ((aligned (8))) = { 1 };
+
+int bug [__alignof__ (JSString::unitStringTable) >= 8 ? 1 : -1];
+
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/pr45112.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/init/value8.C
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/init/value8.C (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/init/value8.C (revision 414)
@@ -0,0 +1,19 @@
+// PR c++/45315
+
+struct A
+{
+ A ();
+};
+
+template < int > struct B : A
+{
+ void foo ()
+ {
+ new B < 0 > ();
+ }
+};
+
+int main()
+{
+ B<1>().foo();
+}
trunk/gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/init/value8.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gfortran.dg/allocate_derived_3.f90
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gfortran.dg/allocate_derived_3.f90 (nonexistent)
+++ trunk/gnu-src/gcc-4.5.1/gcc/testsuite/gfortran.dg/allocate_derived_3.f90 (revision 414)
@@ -0,0 +1,17 @@
+! { dg-do compile }
+!
+! PR 44929: [OOP] Parsing error of derived type name starting with 'REAL'
+!
+! Contributed by Satish.BD
+
+ type :: real_type
+ end type
+ class(real_type), allocatable :: obj
+ real(8), allocatable :: r8
+
+ allocate(real_type :: obj)
+
+ allocate( real(kind=8) :: r8)
+ allocate(real(8) :: r8 )
+
+end
Index: trunk/gnu-src/gcc-4.5.1/gcc/ChangeLog.or32
===================================================================
--- trunk/gnu-src/gcc-4.5.1/gcc/ChangeLog.or32 (revision 413)
+++ trunk/gnu-src/gcc-4.5.1/gcc/ChangeLog.or32 (revision 414)
@@ -1,3 +1,19 @@
+2010-11-07 Joern Rennecke
+
+ * config/or32/or32.opt (mredzone=): New option.
+ * config/or32/or32.c (frame_info): New members gpr_frame, late_frame.
+ (or32_compute_frame_size, or32_expand_prologue): Implement -mredzone.
+ or32_expand_epilogue, or32_initial_elimination_offset): Likewise.
+ (or32_function_ok_for_sibcall): Suppress sibcall optimization if
+ the sibcall register might not be available.
+
+ * config/or32/or32.c (or32_expand_prologue): Fix threshold for
+ loading the frame size into a register.
+
+ * config/or32/or32.md (SP_REG, FP_REG, UNSPEC_FRAME): New constants.
+ (frame_dealloc_fp, frame_dealloc_sp): New insn patterns.
+ * config/or32/or32.c (or32_expand_epilogue): Use frame_dealloc_[fs]p.
+
2010-11-01 Joern Rennecke
* config/or32/or32.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
/trunk/gnu-src/gcc-4.5.1/gcc/config/or32/or32.md
26,8 → 26,12
;; with this program. If not, see <http://www.gnu.org/licenses/>. */ |
|
(define_constants [ |
(SP_REG 1) |
(FP_REG 2) ; hard frame pointer |
(CC_REG 34) |
|
;; unspec values |
(UNSPEC_FRAME 0) |
;; unspec_volatile values |
(UNSPECV_SIBCALL_EPILOGUE 0) |
]) |
104,6 → 108,28
DONE; |
}) |
|
(define_insn "frame_dealloc_fp" |
[(set (reg:SI SP_REG) (reg:SI FP_REG)) |
(clobber (mem:QI (plus:SI (reg:SI FP_REG) |
(unspec:SI [(const_int FP_REG)] UNSPEC_FRAME))))] |
"" |
"l.ori\tr1,r2,0\t# deallocate frame" |
[(set_attr "type" "logic") |
(set_attr "length" "1")]) |
|
(define_insn "frame_dealloc_sp" |
[(set (reg:SI SP_REG) |
(plus:SI (reg:SI SP_REG) |
(match_operand:SI 0 "nonmemory_operand" "r,I"))) |
(clobber (mem:QI (plus:SI (reg:SI SP_REG) |
(unspec:SI [(const_int SP_REG)] UNSPEC_FRAME))))] |
"" |
"@ |
l.add\tr1,r1,%0 |
l.addi\tr1,r1,%0" |
[(set_attr "type" "add") |
(set_attr "length" "1")]) |
|
(define_insn "return_internal" |
[(return) |
(use (match_operand 0 "pmode_register_operand" ""))] |
/trunk/gnu-src/gcc-4.5.1/gcc/config/or32/or32.opt
76,3 → 76,7
mpadstruct |
Target Report RejectNegative Mask(PADSTRUCT) |
Make structs a multiple of 4 bytes (warning: ABI altered) |
|
mredzone= |
Target RejectNegative Joined UInteger Var(or32_redzone) Init(128) |
Set the size of the stack below sp that is assumed to be safe from interrupts. |
/trunk/gnu-src/gcc-4.5.1/gcc/config/or32/or32.c
95,6 → 95,8
int total_size; |
int vars_size; |
int args_size; |
int gpr_frame; |
int late_frame; |
HOST_WIDE_INT mask; |
} frame_info; |
|
158,6 → 160,7
HOST_WIDE_INT args_size; |
HOST_WIDE_INT vars_size; |
HOST_WIDE_INT stack_offset; |
HOST_WIDE_INT save_size; |
bool interrupt_p = false; |
|
int regno; |
167,6 → 170,7
|
frame_info.args_size = args_size; |
frame_info.vars_size = vars_size; |
frame_info.gpr_frame = interrupt_p ? or32_redzone : 0; |
|
/* If the function has local variables, we're committed to |
allocating it anyway. Otherwise reclaim it here. */ |
213,9 → 217,10
} |
} |
|
frame_info.total_size = ((frame_info.save_fp_p ? UNITS_PER_WORD : 0) |
+ (frame_info.save_lr_p ? UNITS_PER_WORD : 0) |
+ args_size + frame_info.gpr_size + vars_size); |
save_size = (frame_info.gpr_size |
+ (frame_info.save_fp_p ? UNITS_PER_WORD : 0) |
+ (frame_info.save_lr_p ? UNITS_PER_WORD : 0)); |
frame_info.total_size = save_size + vars_size + args_size; |
gcc_assert (PROLOGUE_TMP != STATIC_CHAIN_REGNUM); |
if (frame_info.total_size > 32767 && interrupt_p) |
{ |
223,6 → 228,7
= (!!(~frame_info.mask && 1 << PROLOGUE_TMP) |
+ !!(~frame_info.mask & 1 << EPILOGUE_TMP)) * UNITS_PER_WORD; |
|
save_size += n_extra; |
frame_info.gpr_size += n_extra; |
frame_info.total_size += n_extra; |
frame_info.mask |= (1 << PROLOGUE_TMP) | (1 << EPILOGUE_TMP); |
230,7 → 236,24
|
stack_offset -= frame_info.gpr_size; |
frame_info.gpr_offset = stack_offset; |
frame_info.late_frame = frame_info.total_size; |
|
if (save_size > or32_redzone |
|| (frame_info.gpr_frame |
&& (frame_info.gpr_frame + frame_info.late_frame <= 32767))) |
{ |
if (frame_info.gpr_frame + frame_info.late_frame <= 32767) |
save_size = frame_info.total_size; |
frame_info.gpr_frame += save_size; |
frame_info.lr_save_offset += save_size; |
frame_info.fp_save_offset += save_size; |
frame_info.gpr_offset += save_size; |
frame_info.late_frame -= save_size; |
/* FIXME: check in TARGET_OVERRIDE_OPTIONS for invalid or32_redzone. */ |
gcc_assert (frame_info.gpr_frame <= 32767); |
gcc_assert ((frame_info.gpr_frame & 3) == 0); |
} |
|
return frame_info.total_size; |
|
} /* or32_compute_frame_size () */ |
620,6 → 643,9
/* No frame needed. */ |
return; |
|
if (frame_info.gpr_frame) |
emit_frame_insn (gen_add2_insn (stack_pointer_rtx, |
GEN_INT (-frame_info.gpr_frame))); |
if (frame_info.save_fp_p) |
{ |
emit_frame_insn (gen_rtx_SET (Pmode, |
655,8 → 681,9
} |
|
/* Update the stack pointer to reflect frame size. */ |
total_size = frame_info.late_frame; |
insn = gen_add2_insn (stack_pointer_rtx, GEN_INT (-total_size)); |
if (total_size > 32767) |
if (total_size > 32768) |
{ |
rtx note = insn; |
rtx value_rtx = gen_rtx_REG (Pmode, PROLOGUE_TMP); |
665,7 → 692,7
insn = emit_frame_insn (gen_add2_insn (stack_pointer_rtx, value_rtx)); |
add_reg_note (insn, REG_FRAME_RELATED_EXPR, note); |
} |
else |
else if (total_size) |
emit_frame_insn (insn); |
|
} /* or32_expand_prologue () */ |
711,9 → 738,8
} |
if (frame_info.save_fp_p) |
{ |
emit_insn (gen_frame_dealloc_fp ()); |
emit_insn |
(gen_add3_insn (stack_pointer_rtx, hard_frame_pointer_rtx, const0_rtx)); |
emit_insn |
(gen_rtx_SET (Pmode, hard_frame_pointer_rtx, |
stack_disp_mem (frame_info.fp_save_offset))); |
} |
721,15 → 747,16
{ |
rtx value_rtx; |
|
total_size = frame_info.late_frame; |
if (total_size > 32767) |
{ |
value_rtx = gen_rtx_REG (Pmode, EPILOGUE_TMP); |
or32_emit_set_const32 (value_rtx, GEN_INT (total_size)); |
} |
else |
else if (frame_info.late_frame) |
value_rtx = GEN_INT (total_size); |
if (total_size) |
emit_insn (gen_add2_insn (stack_pointer_rtx, value_rtx)); |
emit_insn (gen_frame_dealloc_sp (value_rtx)); |
} |
|
if (frame_info.save_lr_p) |
757,6 → 784,9
} |
} |
|
if (frame_info.gpr_frame) |
emit_insn (gen_add2_insn (stack_pointer_rtx, |
GEN_INT (frame_info.gpr_frame))); |
if (!sibcall) |
emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, 9))); |
|
1537,7 → 1567,8
or32_function_ok_for_sibcall (tree decl ATTRIBUTE_UNUSED, |
tree exp ATTRIBUTE_UNUSED) |
{ |
return true; |
/* Assume up to 31 registers of 4 bytes might be saved. */ |
return or32_redzone >= 31 * 4; |
} /* or32_function_ok_for_sibcall () */ |
|
|
1622,11 → 1653,10
int |
or32_initial_elimination_offset(int from, int to) |
{ |
if (from == ARG_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM) |
return 0; |
or32_compute_frame_size (get_frame_size ()); |
return ((from == FRAME_POINTER_REGNUM ? frame_info.gpr_offset : 0) |
+ (to == STACK_POINTER_REGNUM ? frame_info.total_size : 0)); |
return ((from == FRAME_POINTER_REGNUM |
? frame_info.gpr_offset : frame_info.gpr_frame) |
+ (to == STACK_POINTER_REGNUM ? frame_info.late_frame : 0)); |
} |
|
|
/trunk/gnu-src/gdb-7.2/bfd/elf32-or32.c
335,7 → 335,7
FALSE, /* partial_inplace */ |
0, /* src_mask */ |
0x03ffffff, /* dst_mask */ |
FALSE), /* pcrel_offset */ |
TRUE), /* pcrel_offset */ |
|
/* GNU extension to record C++ vtable hierarchy. */ |
HOWTO (R_OR32_GNU_VTINHERIT, /* type */ |
/trunk/gnu-src/gdb-7.2/bfd/ChangeLog.or32
1,3 → 1,8
2010-11-06 Joern Rennecke <joern.rennecke@embecosm.com> |
|
* elf32-or32.c (elf_or32_howto_table) <R_OR32_JUMPTARG>: |
Set pcrel_offset to TRUE. |
|
2010-11-02 Jeremy Bennett <jeremy.bennett@embecosm.com> |
|
* reloc.c: Add BFD_RELOC_28_PCREL_S2. |
/trunk/gnu-src/boards/or32-sim.exp
42,7 → 42,7
set_board_info ldscript "" |
|
# This simulator isn't slow. |
set_board_info slow_simulator 1 |
set_board_info slow_simulator 0 |
|
# Can't pass arguments to programs on this target.. |
set_board_info noargs 1 |