Commit 22bd2554 by Zack Weinberg Committed by Zack Weinberg

920923-1.c: Prevent spurious regressions with bison 1.50 or later.

	* gcc.dg/noncompile/920923-1.c: Prevent spurious regressions with
	bison 1.50 or later.

From-SVN: r58374
parent c1ddb5c8
2002-10-21 Zack Weinberg <zack@codesourcery.com>
* gcc.dg/noncompile/920923-1.c: Prevent spurious regressions with
bison 1.50 or later.
2002-10-21 Janis Johnson <janis187@us.ibm.com> 2002-10-21 Janis Johnson <janis187@us.ibm.com>
* g++.dg/README: Describe more test directories. * g++.dg/README: Describe more test directories.
......
typedef BYTE unsigned char; /* { dg-error "syntax error|empty decl" } */ /* 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 item_n;
typedef int perm_set; typedef int perm_set;
struct PENT { caddr_t v_addr; };/* { dg-error "parse error|no semicolon" } */ struct PENT { caddr_t v_addr; };/* { error "parse error|no semicolon" } */
typedef struct PENT prec; typedef struct PENT prec;
typedef struct PENT *prec_t; typedef struct PENT *prec_t;
prec_t mem_hash; prec_t mem_hash;
BYTE *mem_base; /* { dg-error "parse error|no type" } */ BYTE *mem_base; /* { error "parse error|no type" } */
struct PTE { struct PTE {
BYTE *p_page; /* { dg-error "parse error|no semicolon" } */ BYTE *p_page; /* { error "parse error|no semicolon" } */
perm_set p_perms; perm_set p_perms;
}; /* { dg-error "parse error" } */ }; /* { error "parse error" } */
typedef struct PTE pte; typedef struct PTE pte;
struct PTP { struct PTP {
union { union {
struct *PTP p_tablep; /* { dg-error "parse error|no semicolon" } */ struct *PTP p_tablep; /* { error "parse error|no semicolon" } */
struct *PTE p_entry; struct *PTE p_entry;
} u; /* { dg-warning "no type or storage class" } */ } u; /* { warning "no type or storage class" } */
int valid; int valid;
}; /* { dg-error "parse error" } */ }; /* { error "parse error" } */
typedef struct PTP (u.p_tablep);/* { dg-error "parse error" } */ typedef struct PTP (u.p_tablep);/* { error "parse error" } */
int pfree=0; int pfree=0;
int pcount=0; int pcount=0;
void void
mmu_walk_find(va) mmu_walk_find(va)
caddr_t va; /* { dg-error "parse error|no type" } */ caddr_t va; /* { error "parse error|no type" } */
{ {
BYTE *page_addr; BYTE *page_addr;
if (mmu_base[Level1(va)]->valid==0x0) { if (mmu_base[Level1(va)]->valid==0x0) {
l1_base = mmu_base[Level1(va)]->(u.p_tablep) = p_alloc(); l1_base = mmu_base[Level1(va)]->(u.p_tablep) = p_alloc();
mmu_base[Level1(va)]->valid = 0x3; /* { dg-error "parse error" } */ mmu_base[Level1(va)]->valid = 0x3; /* { error "parse error" } */
for (idx=0; idx<LEVEL1_ENTRIES; idx++) for (idx=0; idx<LEVEL1_ENTRIES; idx++)
l1_base[idx]->valid = 0x0; l1_base[idx]->valid = 0x0;
goto build_level2; goto build_level2;
...@@ -39,42 +53,42 @@ caddr_t va; /* { dg-error "parse error|no type" } */ ...@@ -39,42 +53,42 @@ caddr_t va; /* { dg-error "parse error|no type" } */
if (l1_base[Level2(va)]->valid==0x0) { if (l1_base[Level2(va)]->valid==0x0) {
build_level2: build_level2:
l2_base = l1_base[Level2(va)]->(u.p_tablep) = p_alloc(); l2_base = l1_base[Level2(va)]->(u.p_tablep) = p_alloc();
l1_base[Level2(va)]->valid = 0x3; /* { dg-error "parse error" } */ l1_base[Level2(va)]->valid = 0x3; /* { error "parse error" } */
for (idx=0; idx<LEVEL2_ENTRIES; idx++) for (idx=0; idx<LEVEL2_ENTRIES; idx++)
l2_base[idx]->valid=0x0; l2_base[idx]->valid=0x0;
goto build_page; goto build_page;
} else } else
l2_base = mmu_base[Level2(va)]->(u.p_tablep); l2_base = mmu_base[Level2(va)]->(u.p_tablep);
page_addr = l2_base[Level2(va)]->valid;/* { dg-error "undeclared|no type" } */ page_addr = l2_base[Level2(va)]->valid;/* { error "undeclared|no type" } */
} /* { dg-error "parse error" } */ } /* { error "parse error" } */
void * void *
a_translate(va_op, v_addr) a_translate(va_op, v_addr)
int va_op; int va_op;
caddr_t v_addr; /* { dg-error "parse error" } */ caddr_t v_addr; /* { error "parse error" } */
{ {
register prec_t bucket; register prec_t bucket;
register caddr_t p_addr; /* { dg-error "syntax error" } */ register caddr_t p_addr; /* { error "syntax error" } */
bucket = mem_hash+((((v_addr)>>ITEMBITS))&hash_mask); /* { dg-error "undeclared|for each function" } */ bucket = mem_hash+((((v_addr)>>ITEMBITS))&hash_mask); /* { error "undeclared|for each function" } */
do { do {
if (bucket->v_addr == ((v_addr)>>ITEMBITS) { /* { dg-error "incomplete type|parse error" } */ if (bucket->v_addr == ((v_addr)>>ITEMBITS) { /* { error "incomplete type|parse error" } */
if(!(bucket->perm_set&va_op)) if(!(bucket->perm_set&va_op))
goto prot_fault; goto prot_fault;
return mem_base + v_addr; return mem_base + v_addr;
} }
} while((bucket++)->v_addr != ((caddr_t)0)); /* { dg-error "parse error" } */ } while((bucket++)->v_addr != ((caddr_t)0)); /* { error "parse error" } */
page_miss: page_miss:
p_addr = (--bucket)->p_addr; /* { dg-error "undeclared|pointer to" } */ p_addr = (--bucket)->p_addr; /* { error "undeclared|pointer to" } */
page_type: page_type:
switch (p_addr) { switch (p_addr) {
case BUCKET_FULL: /* { dg-error "undeclared" } */ case BUCKET_FULL: /* { error "undeclared" } */
enlarge_hash_table(mem_hash); enlarge_hash_table(mem_hash);
case((caddr_t)0): /* { dg-error "undeclared|parse error" } */ case((caddr_t)0): /* { error "undeclared|parse error" } */
p_addr = fill_item_entry(va_op, v_addr); p_addr = fill_item_entry(va_op, v_addr);
goto page_type; goto page_type;
case((caddr_t)1): /* { dg-error "parse error" } */ case((caddr_t)1): /* { error "parse error" } */
default: default:
((void)(((0))?0:(__eprintf("Failed assertion`%s'at line%d of`%s'.\n", ((void)(((0))?0:(__eprintf("Failed assertion`%s'at line%d of`%s'.\n",
"FALSE", 327, "b.c"), 0))); "FALSE", 327, "b.c"), 0)));
...@@ -90,9 +104,9 @@ int hash_size; ...@@ -90,9 +104,9 @@ int hash_size;
register int idx; register int idx;
bucket = hasht; bucket = hasht;
for(idx=(hash_size*3)-1; idx>=0; idx--) { for(idx=(hash_size*3)-1; idx>=0; idx--) {
bucket->v_addr = ((caddr_t)0);/* { dg-error "undeclared|pointer to|parse error" } */ bucket->v_addr = ((caddr_t)0);/* { error "undeclared|pointer to|parse error" } */
bucket->p_addr = ((caddr_t)0);/* { dg-error "pointer to|parse error" } */ bucket->p_addr = ((caddr_t)0);/* { error "pointer to|parse error" } */
bucket->perm_set = VA_EMPTY; /* { dg-error "undeclared|pointer to" } */ bucket->perm_set = VA_EMPTY; /* { error "undeclared|pointer to" } */
} }
} }
...@@ -101,21 +115,21 @@ extern void *calloc(__SIZE_TYPE__, __SIZE_TYPE__); ...@@ -101,21 +115,21 @@ extern void *calloc(__SIZE_TYPE__, __SIZE_TYPE__);
void void
init_mem() init_mem()
{ {
mem_base = (BYTE *) calloc(1024, (1<<13)); /* { dg-error "undeclared|parse error" } */ mem_base = (BYTE *) calloc(1024, (1<<13)); /* { error "undeclared|parse error" } */
((void)((mem_base != (BYTE *)0) /* { dg-error "parse error" } */ ((void)((mem_base != (BYTE *)0) /* { error "parse error" } */
? 0 ? 0
: (__eprintf("Failed assertion`%s'at line%d of`%s'.\n", : (__eprintf("Failed assertion`%s'at line%d of`%s'.\n",
"mem_base != (BYTE *)0", 366, "b.c"), "mem_base != (BYTE *)0", 366, "b.c"),
0))); 0)));
hash_num = INIT_NUM_ENTRIES * 3; /* { dg-error "undeclared" } */ hash_num = INIT_NUM_ENTRIES * 3; /* { error "undeclared" } */
mem_hash = (prec_t) calloc(hash_num, sizeof(prec)); /* { dg-error "incomplete type" } */ mem_hash = (prec_t) calloc(hash_num, sizeof(prec)); /* { error "incomplete type" } */
((void)((mem_hash != (prec_t)0) ((void)((mem_hash != (prec_t)0)
? 0 ? 0
: (__eprintf("Failed assertion`%s'at line%d of`%s'.\n", : (__eprintf("Failed assertion`%s'at line%d of`%s'.\n",
"mem_hash != (prec_t)0", 370, "b.c"), "mem_hash != (prec_t)0", 370, "b.c"),
0))); 0)));
flush_hash(mem_hash, 32); flush_hash(mem_hash, 32);
build_ptables(mem_base, 1024*(1<<13)); /* { dg-bogus "integer overflow" "int smaller than 32 bits" { xfail "xstormy16-*-*" } } */ build_ptables(mem_base, 1024*(1<<13)); /* { bogus "integer overflow" "int smaller than 32 bits" } */
} }
struct tm { struct tm {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment