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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [pr50908.c] - Blame information for rev 708

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

Line No. Rev Author Line
1 689 jeremybenn
/* { dg-do compile } */
2
/* { dg-require-effective-target lp64 } */
3
/* { dg-options "-O2 -ftree-tail-merge" } */
4
 
5
enum Lisp_Type
6
{
7
  Lisp_Int0 = 0, Lisp_Int1 = 4, Lisp_Symbol = 2, Lisp_Misc = 3, Lisp_String =
8
    1, Lisp_Vectorlike = 5, Lisp_Cons = 6, Lisp_Float = 7,
9
};
10
typedef long Lisp_Object;
11
enum pvec_type
12
{
13
  PVEC_NORMAL_VECTOR = 0, PVEC_PROCESS = 0x200, PVEC_FRAME =
14
    0x400, PVEC_COMPILED = 0x800, PVEC_WINDOW =
15
    0x1000, PVEC_WINDOW_CONFIGURATION = 0x2000, PVEC_SUBR =
16
    0x4000, PVEC_CHAR_TABLE = 0x8000, PVEC_BOOL_VECTOR =
17
    0x10000, PVEC_BUFFER = 0x20000, PVEC_HASH_TABLE = 0x40000, PVEC_TERMINAL =
18
    0x80000, PVEC_SUB_CHAR_TABLE = 0x100000, PVEC_FONT =
19
    0x200000, PVEC_OTHER = 0x400000, PVEC_TYPE_MASK = 0x7ffe00
20
};
21
struct Lisp_Vector
22
{
23
  unsigned long size;
24
};
25
struct Lisp_Char_Table
26
{
27
  Lisp_Object defalt;
28
  Lisp_Object ascii;
29
};
30
struct Lisp_Sub_Char_Table
31
{
32
  Lisp_Object contents[1];
33
};
34
extern Lisp_Object Qnil, Qt, Qquote, Qlambda, Qsubr, Qunbound;
35
struct buffer_text
36
{
37
  unsigned char *beg;
38
  long gpt_byte;
39
  long gap_size;
40
};
41
struct buffer
42
{
43
  struct buffer_text *text;
44
  struct region_cache *width_run_cache;
45
  Lisp_Object tab_width;
46
  Lisp_Object ctl_arrow;
47
};
48
extern struct buffer *current_buffer;
49
extern Lisp_Object Vchar_width_table;
50
struct frame
51
{
52
  long text_lines, text_cols;
53
};
54
struct window
55
{
56
  Lisp_Object frame;
57
};
58
extern Lisp_Object Vtruncate_partial_width_windows;
59
extern struct Lisp_Char_Table *window_display_table (struct window *);
60
struct position *
61
compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos,
62
                width, hscroll, tab_offset, win)
63
     long from, fromvpos, fromhpos, to, tovpos, tohpos;
64
     struct window *win;
65
{
66
  register long hpos = fromhpos;
67
  register long pos;
68
  long pos_byte;
69
  register int c = 0;
70
  register struct Lisp_Char_Table *dp = window_display_table (win);
71
  long wide_column_end_hpos = 0;
72
  long continuation_glyph_width;
73
  while (1)
74
    {
75
      if (hpos > width)
76
        {
77
          int total_width = width + continuation_glyph_width;
78
          if (!((Vtruncate_partial_width_windows) == (Qnil))
79
              && (total_width <
80
                  (((void) 0,
81
                    (struct frame
82
                     *) ((long) (((win)->frame) & ~((((long) 1) << 3) -
83
                                                    1)))))->text_cols))
84
            {
85
              if (pos <= to)
86
                {
87
                  pos = find_before_next_newline (pos, to, 1);
88
                }
89
              if (wide_column_end_hpos > width)
90
                {
91
                  hpos -= width;
92
                }
93
            }
94
        }
95
      else
96
        {
97
          Lisp_Object charvec;
98
          c =
99
            *(((((pos_byte)) >=
100
                (current_buffer->text->gpt_byte) ? (current_buffer->text->
101
                                                    gap_size) : 0) +
102
               ((pos_byte)) + (current_buffer->text->beg) - ((1))));
103
          if (current_buffer->width_run_cache)
104
            {
105
              if (((((enum Lisp_Type) (((unsigned long) ((charvec))) &
106
                                       ((((long) 1) << 3) - 1))) ==
107
                    Lisp_Vectorlike)
108
                   &&
109
                   !(((void) 0,
110
                      (struct Lisp_Vector
111
                       *) ((long) ((charvec) & ~((((long) 1) << 3) - 1))))->
112
                     size & ((((unsigned long) 1 << (64 - 1)) >> 1)))))
113
                {
114
                  unsigned char *ptr;
115
                  int bytes, width, wide_column;
116
                  do
117
                    {
118
                      if ((!((*ptr) & 0x80) ? 1 : !((*ptr) & 0x20) ? 2 :
119
                           !((*ptr) & 0x10) ? 3 : !((*ptr) & 0x08) ? 4 : 5) !=
120
                          bytes)
121
                        width = bytes * 4;
122
                      else
123
                        {
124
                          if (dp != 0
125
                              &&
126
                              ((((enum
127
                                  Lisp_Type) (((unsigned
128
                                                long) (((((unsigned) (c) <
129
                                                          0x80)
130
                                                         ? ((((dp)->ascii) ==
131
                                                             (Qnil)) ? (dp)->
132
                                                            defalt
133
                                                            : (((((enum
134
                                                                   Lisp_Type)
135
                                                                  (((unsigned
136
                                                                     long) (((dp)->ascii))) & ((((long) 1) << 3) - 1))) == Lisp_Vectorlike) && (((((void) 0, (struct Lisp_Vector *) ((long) (((dp)->ascii) & ~((((long) 1) << 3) - 1))))->size & (((((unsigned long) 1 << (64 - 1)) >> 1)) | (PVEC_SUB_CHAR_TABLE)))) == (((((unsigned long) 1 << (64 - 1)) >> 1)) | (PVEC_SUB_CHAR_TABLE)))) ? ((void) 0, (struct Lisp_Sub_Char_Table *) ((long) (((dp)->ascii) & ~((((long) 1) << 3) - 1))))->contents[c] : (dp)->ascii)) : disp_char_vector ((dp), (c)))))) & ((((long) 1) << 3) - 1))) == Lisp_Vectorlike) && !(((void) 0, (struct Lisp_Vector *) ((long) (((((unsigned) (c) < 0x80) ? ((((dp)->ascii) == (Qnil)) ? (dp)->defalt : (((((enum Lisp_Type) (((unsigned long) (((dp)->ascii))) & ((((long) 1) << 3) - 1))) == Lisp_Vectorlike) && (((((void) 0, (struct Lisp_Vector *) ((long) (((dp)->ascii) & ~((((long) 1) << 3) - 1))))->size & (((((unsigned long) 1 << (64 - 1)) >> 1)) | (PVEC_SUB_CHAR_TABLE)))) == (((((unsigned long) 1 << (64 - 1)) >> 1)) | (PVEC_SUB_CHAR_TABLE)))) ? ((void) 0, (struct Lisp_Sub_Char_Table *) ((long) (((dp)->ascii) & ~((((long) 1) << 3) - 1))))->contents[c] : (dp)->ascii)) : disp_char_vector ((dp), (c)))) & ~((((long) 1) << 3) - 1))))->size & ((((unsigned long) 1 << (64 - 1)) >> 1)))))
137
                            width =
138
                              ((void) 0,
139
                               (struct Lisp_Vector
140
                                *) ((long) (((((unsigned) (c) <
141
                                               0x80) ? ((((dp)->ascii) ==
142
                                                         (Qnil)) ? (dp)->
143
                                                        defalt
144
                                                        : (((((enum
145
                                                               Lisp_Type) (((unsigned long) (((dp)->ascii))) & ((((long) 1) << 3) - 1))) == Lisp_Vectorlike) && (((((void) 0, (struct Lisp_Vector *) ((long) (((dp)->ascii) & ~((((long) 1) << 3) - 1))))->size & (((((unsigned long) 1 << (64 - 1)) >> 1)) | (PVEC_SUB_CHAR_TABLE)))) == (((((unsigned long) 1 << (64 - 1)) >> 1)) | (PVEC_SUB_CHAR_TABLE)))) ? ((void) 0, (struct Lisp_Sub_Char_Table *) ((long) (((dp)->ascii) & ~((((long) 1) << 3) - 1))))->contents[c] : (dp)->ascii)) : disp_char_vector ((dp), (c)))) & ~((((long) 1) << 3) - 1))))->size;
146
                          else
147
                            width =
148
                              (((unsigned) (c) < 0x80) ? (c <
149
                                                          0x20 ? (c ==
150
                                                                  '\t'
151
                                                                  ? ((((long)
152
                                                                       (current_buffer->
153
                                                                        tab_width))
154
                                                                      >> (3 -
155
                                                                          1)))
156
                                                                  : (c ==
157
                                                                     '\n' ? 0
158
                                                                     : (((current_buffer->ctl_arrow) == (Qnil)) ? 4 : 2))) : (c < 0x7f ? 1 : ((((current_buffer->ctl_arrow) == (Qnil)) ? 4 : 2)))) : (((long) ((((unsigned) (c) < 0x80) ? (
159
                                                                                                                                                                                                                                                       {
160
                                                                                                                                                                                                                                                       Lisp_Object
161
                                                                                                                                                                                                                                                       _val;
162
                                                                                                                                                                                                                                                       _val;}
163
                        ):                                                                                                                                                                                      char_table_ref ((Vchar_width_table), (c))))) >> (3 - 1)));
164
                          if (width > 1)
165
                            wide_column = width;
166
                        }
167
                    }
168
                  while (0);
169
                  if (wide_column)
170
                    wide_column_end_hpos = hpos + wide_column;
171
                }
172
            }
173
        }
174
    }
175
}

powered by: WebSVN 2.1.0

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