📄 920923-1.c
字号:
/* This test case contains a large number of syntactic errors. We believe the intent of the test is that the compiler simply not crash. The set of error messages reported is different when the C parser is generated with bison 1.50 than 1.35. It is not worth attempting to prevent this. Instead, we use a single dg-error with a regexp that will match _all_ the errors indiscriminately. The old error/warning/etc markers are kept around for reference, but disabled. Revisit after new (recursive descent) parser is implemented for C. -- zw 2002-10-17 *//* { dg-error ".*" "many syntax errors" { target *-*-* } 0 } */typedef BYTE unsigned char; /* { error "syntax error|empty decl" } */typedef int item_n;typedef int perm_set;struct PENT { caddr_t v_addr; };/* { error "parse error|no semicolon" } */typedef struct PENT prec;typedef struct PENT *prec_t;prec_t mem_hash;BYTE *mem_base; /* { error "parse error|no type" } */struct PTE { BYTE *p_page; /* { error "parse error|no semicolon" } */ perm_set p_perms;}; /* { error "parse error" } */typedef struct PTE pte;struct PTP { union { struct *PTP p_tablep; /* { error "parse error|no semicolon" } */ struct *PTE p_entry; } u; /* { warning "no type or storage class" } */ int valid;}; /* { error "parse error" } */typedef struct PTP (u.p_tablep);/* { error "parse error" } */int pfree=0;int pcount=0;voidmmu_walk_find(va)caddr_t va; /* { error "parse error|no type" } */{ BYTE *page_addr; if (mmu_base[Level1(va)]->valid==0x0) { l1_base = mmu_base[Level1(va)]->(u.p_tablep) = p_alloc(); mmu_base[Level1(va)]->valid = 0x3; /* { error "parse error" } */ for (idx=0; idx<LEVEL1_ENTRIES; idx++) l1_base[idx]->valid = 0x0; goto build_level2; } else l1_base = mmu_base[Level1(va)]->(u.p_tablep); if (l1_base[Level2(va)]->valid==0x0) { build_level2: l2_base = l1_base[Level2(va)]->(u.p_tablep) = p_alloc(); l1_base[Level2(va)]->valid = 0x3; /* { error "parse error" } */ for (idx=0; idx<LEVEL2_ENTRIES; idx++) l2_base[idx]->valid=0x0; goto build_page; } else l2_base = mmu_base[Level2(va)]->(u.p_tablep); page_addr = l2_base[Level2(va)]->valid;/* { error "undeclared|no type" } */} /* { error "parse error" } */void *a_translate(va_op, v_addr)int va_op;caddr_t v_addr; /* { error "parse error" } */{ register prec_t bucket; register caddr_t p_addr; /* { error "syntax error" } */ bucket = mem_hash+((((v_addr)>>ITEMBITS))&hash_mask); /* { error "undeclared|for each function" } */ do { if (bucket->v_addr == ((v_addr)>>ITEMBITS) { /* { error "incomplete type|parse error" } */ if(!(bucket->perm_set&va_op)) goto prot_fault; return mem_base + v_addr; } } while((bucket++)->v_addr != ((caddr_t)0)); /* { error "parse error" } */ page_miss: p_addr = (--bucket)->p_addr; /* { error "undeclared|pointer to" } */ page_type: switch (p_addr) { case BUCKET_FULL: /* { error "undeclared" } */ enlarge_hash_table(mem_hash); case((caddr_t)0): /* { error "undeclared|parse error" } */ p_addr = fill_item_entry(va_op, v_addr); goto page_type; case((caddr_t)1): /* { error "parse error" } */ default: ((void)(((0))?0:(__eprintf("Failed assertion`%s'at line%d of`%s'.\n", "FALSE", 327, "b.c"), 0))); }}voidflush_hash(hasht, hash_size)prec_t hasht;int hash_size;{ register prec_t bucket; register int idx; bucket = hasht; for(idx=(hash_size*3)-1; idx>=0; idx--) { bucket->v_addr = ((caddr_t)0);/* { error "undeclared|pointer to|parse error" } */ bucket->p_addr = ((caddr_t)0);/* { error "pointer to|parse error" } */ bucket->perm_set = VA_EMPTY; /* { error "undeclared|pointer to" } */ }}extern void *calloc(__SIZE_TYPE__, __SIZE_TYPE__);voidinit_mem(){ mem_base = (BYTE *) calloc(1024, (1<<13)); /* { error "undeclared|parse error" } */ ((void)((mem_base != (BYTE *)0) /* { error "parse error" } */ ? 0 : (__eprintf("Failed assertion`%s'at line%d of`%s'.\n", "mem_base != (BYTE *)0", 366, "b.c"), 0))); hash_num = INIT_NUM_ENTRIES * 3; /* { error "undeclared" } */ mem_hash = (prec_t) calloc(hash_num, sizeof(prec)); /* { error "incomplete type" } */ ((void)((mem_hash != (prec_t)0) ? 0 : (__eprintf("Failed assertion`%s'at line%d of`%s'.\n", "mem_hash != (prec_t)0", 370, "b.c"), 0))); flush_hash(mem_hash, 32); build_ptables(mem_base, 1024*(1<<13)); /* { bogus "integer overflow" "int smaller than 32 bits" } */}struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday;int tm_mon; int tm_year; int tm_wday;int tm_yday;int tm_isdst; char*tm_zone; long tm_gmtoff;};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -