OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.dg/] [torture/] [pr49039.C] - Blame information for rev 749

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 693 jeremybenn
// PR tree-optimization/49039
2
// { dg-do run }
3
 
4
template 
5
struct pair
6
{
7
  T1 first;
8
  T2 second;
9
  pair (const T1 & a, const T2 & b):first (a), second (b) {}
10
};
11
 
12
template 
13
inline pair 
14
make_pair (T1 x, T2 y)
15
{
16
  return pair  (x, y);
17
}
18
 
19
typedef __SIZE_TYPE__ size_t;
20
struct S
21
{
22
  const char *Data;
23
  size_t Length;
24
  static size_t min (size_t a, size_t b) { return a < b ? a : b; }
25
  static size_t max (size_t a, size_t b) { return a > b ? a : b; }
26
  S () :Data (0), Length (0) { }
27
  S (const char *Str) : Data (Str), Length (__builtin_strlen (Str)) {}
28
  S (const char *data, size_t length) : Data (data), Length (length) {}
29
  bool empty () const { return Length == 0; }
30
  size_t size () const { return Length; }
31
  S slice (size_t Start, size_t End) const
32
  {
33
    Start = min (Start, Length);
34
    End = min (max (Start, End), Length);
35
    return S (Data + Start, End - Start);
36
  }
37
  pair  split (char Separator) const
38
  {
39
    size_t Idx = find (Separator);
40
    if (Idx == ~size_t (0))
41
      return make_pair (*this, S ());
42
    return make_pair (slice (0, Idx), slice (Idx + 1, ~size_t (0)));
43
  }
44
  size_t find (char C, size_t From = 0) const
45
  {
46
    for (size_t i = min (From, Length), e = Length; i != e; ++i)
47
      if (Data[i] == C)
48
        return i;
49
    return ~size_t (0);
50
  }
51
};
52
 
53
void
54
Test (const char *arg)
55
{
56
  S Desc (arg);
57
  while (!Desc.empty ())
58
    {
59
      pair  Split = Desc.split ('-');
60
      S Token = Split.first;
61
      Desc = Split.second;
62
      if (Token.empty ())
63
        continue;
64
      Split = Token.split (':');
65
      S Specifier = Split.first;
66
      if (Specifier.empty ())
67
        __builtin_abort ();
68
    }
69
}
70
 
71
int
72
main ()
73
{
74
  Test ("-");
75
  return 0;
76
}

powered by: WebSVN 2.1.0

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