File: 20000815-1.c

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (70 lines) | stat: -rw-r--r-- 1,395 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
struct table_elt
{
  void *exp;
  struct table_elt *next_same_hash;
  struct table_elt *prev_same_hash;
  struct table_elt *next_same_value;
  struct table_elt *prev_same_value;
  struct table_elt *first_same_value;
  struct table_elt *related_value;
  int cost;
  int mode;
  char in_memory;
  char in_struct;
  char is_const;
  char flag;
};

struct write_data
{
  int sp : 1;			 
  int var : 1;			 
  int nonscalar : 1;		 
  int all : 1;			 
};

int cse_rtx_addr_varies_p(void *);
void remove_from_table(struct table_elt *, int);
static struct table_elt *table[32];

void
invalidate_memory (writes)
     struct write_data *writes;
{
  register int i;
  register struct table_elt *p, *next;
  int all = writes->all;
  int nonscalar = writes->nonscalar;

  for (i = 0; i < 31; i++)
    for (p = table[i]; p; p = next)
      {
	next = p->next_same_hash;
	if (p->in_memory
	    && (all
		|| (nonscalar && p->in_struct)
		|| cse_rtx_addr_varies_p (p->exp)))
	  remove_from_table (p, i);
      }
}

int cse_rtx_addr_varies_p(void *x) { return 0; }
void remove_from_table(struct table_elt *x, int y) { abort (); }

int
main()
{
  struct write_data writes;
  struct table_elt elt;

  __builtin_memset(&elt, 0, sizeof(elt));
  elt.in_memory = 1;
  table[0] = &elt;

  __builtin_memset(&writes, 0, sizeof(writes));
  writes.var = 1;
  writes.nonscalar = 1;

  invalidate_memory(&writes);
  return 0;
}