OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk
    from Rev 413 to Rev 414
    Reverse comparison

Rev 413 → Rev 414

/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;
}
 
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: gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr44858.c =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr44858.c (nonexistent) +++ 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; +}
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: gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr45262.c =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/execute/pr45262.c (nonexistent) +++ 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; +}
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: gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/compile/pr45109.c =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/gcc.c-torture/compile/pr45109.c (nonexistent) +++ 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)); +}
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: gnu-src/gcc-4.5.1/gcc/testsuite/gcc.target/i386/pr45296.c =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/gcc.target/i386/pr45296.c (nonexistent) +++ 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" } */
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: gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45055.c =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45055.c (nonexistent) +++ 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 (); + } + } +}
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: gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45259.c =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/gcc.dg/pr45259.c (nonexistent) +++ 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); + } +}
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: gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/other/i386-8.C =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/other/i386-8.C (nonexistent) +++ 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]); +}
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: gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/tree-ssa/pr44914.C =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/tree-ssa/pr44914.C (nonexistent) +++ 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;
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: gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/pr45112.C =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/pr45112.C (nonexistent) +++ 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]; +
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: gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/init/value8.C =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/g++.dg/init/value8.C (nonexistent) +++ 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(); +}
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: gnu-src/gcc-4.5.1/gcc/testsuite/gfortran.dg/allocate_derived_3.f90 =================================================================== --- gnu-src/gcc-4.5.1/gcc/testsuite/gfortran.dg/allocate_derived_3.f90 (nonexistent) +++ 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: gnu-src/gcc-4.5.1/gcc/ChangeLog.or32 =================================================================== --- gnu-src/gcc-4.5.1/gcc/ChangeLog.or32 (revision 413) +++ 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.
/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" ""))]
/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.
/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));
}
 
 
/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 */
/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.
/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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.