wrap-delay.c: New test.

2015-12-07  Steve Ellcey  <sellcey@imgtec.com>

	* gcc.target/mips/wrap-delay.c: New test.

From-SVN: r231383
This commit is contained in:
Steve Ellcey 2015-12-07 20:39:04 +00:00 committed by Steve Ellcey
parent 1167d047bc
commit bcaddce275
2 changed files with 46 additions and 0 deletions

View file

@ -1,3 +1,7 @@
2015-12-07 Steve Ellcey <sellcey@imgtec.com>
* gcc.target/mips/wrap-delay.c: New test.
2015-12-07 Jason Merrill <jason@redhat.com>
* lib/g++.exp: Also find -std list in GXX_TESTSUITE_STDS

View file

@ -0,0 +1,42 @@
/* { dg-do compile } */
/* { dg-options "-g -mframe-header-opt -mbranch-likely" } */
/* GCC was generating an ICE with the above options and -Os because
it was putting the save of $31 in two annulled delay slots but
there was only one restore since only one of the two saves could be
executed. This was correct code but it confused dwarf2cfi and
caused it to ICE when using the -g option. */
enum demangle_component_type
{
DEMANGLE_COMPONENT_TRINARY_ARG2,
};
struct demangle_component
{
enum demangle_component_type type;
};
struct d_info
{
int next_comp;
int num_comps;
};
struct demangle_component * d_make_empty (struct d_info *di)
{
if (di->next_comp >= di->num_comps) return ((void *)0);
++di->next_comp;
}
struct demangle_component *d_make_comp (
struct d_info *di,
enum demangle_component_type type,
struct demangle_component *left)
{
struct demangle_component *p;
switch (type)
{
case DEMANGLE_COMPONENT_TRINARY_ARG2:
if (left == ((void *)0)) return ((void *)0);
}
p = d_make_empty (di);
p->type = type;
}