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

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc2/] [gcc/] [testsuite/] [g++.dg/] [opt/] [inline14.C] - Diff between revs 301 and 384

Only display areas with differences | Details | Blame | View Log

Rev 301 Rev 384
// PR middle-end/34018
// PR middle-end/34018
// { dg-do compile }
// { dg-do compile }
// { dg-options "-O1" }
// { dg-options "-O1" }
template 
template 
struct A
struct A
{
{
  typedef E F;
  typedef E F;
  E elems[N];
  E elems[N];
  A () {}
  A () {}
  E *begin () { return elems; }
  E *begin () { return elems; }
  const E *begin () const { return elems; }
  const E *begin () const { return elems; }
  explicit A (F const &v0, F const &v1, F const &v2)
  explicit A (F const &v0, F const &v1, F const &v2)
  {
  {
    elems[0] = v0;
    elems[0] = v0;
    elems[1] = v1;
    elems[1] = v1;
    elems[2] = v2;
    elems[2] = v2;
  }
  }
};
};
template 
template 
inline void
inline void
bar (const E1 *a1, E2 const &a2, E3 *a3, unsigned long const &sz)
bar (const E1 *a1, E2 const &a2, E3 *a3, unsigned long const &sz)
{
{
  E3 *r = a3 + sz;
  E3 *r = a3 + sz;
  for (;a3 != r; a1++, a3++)
  for (;a3 != r; a1++, a3++)
    *a3 = *a1 - a2;
    *a3 = *a1 - a2;
}
}
template
template
inline A
inline A
operator- (A const& a1, E const& a2)
operator- (A const& a1, E const& a2)
{
{
  typedef A G;
  typedef A G;
  G a3;
  G a3;
  bar (a1.begin (), a2, a3.begin (), N);
  bar (a1.begin (), a2, a3.begin (), N);
  return a3;
  return a3;
}
}
struct B
struct B
{
{
  B (A const &m) : n (m - static_cast(1)) {}
  B (A const &m) : n (m - static_cast(1)) {}
  A n;
  A n;
};
};
void
void
foo ()
foo ()
{
{
  B t (A (0,0,0));
  B t (A (0,0,0));
}
}
 
 

powered by: WebSVN 2.1.0

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