From 22bd25548a593b0a2082cfe501d6436b86c55c38 Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Mon, 21 Oct 2002 19:05:47 +0000 Subject: [PATCH] 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 --- gcc/testsuite/ChangeLog | 13 +++-- gcc/testsuite/gcc.dg/noncompile/920923-1.c | 78 ++++++++++++++++++------------ 2 files changed, 55 insertions(+), 36 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 12580d2..4d6ffd5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2002-10-21 Zack Weinberg + + * gcc.dg/noncompile/920923-1.c: Prevent spurious regressions with + bison 1.50 or later. + 2002-10-21 Janis Johnson * g++.dg/README: Describe more test directories. @@ -156,7 +161,7 @@ Thu Oct 17 19:12:58 CEST 2002 Jan Hubicka 2002-10-15 Mark Mitchell * g++.dg/init/array6.C: New test. - + * g++.dg/abi/mangle13.C: Likewise. * g++.dg/abi/mangle14.C: Likewise. * g++.dg/abi/mangle15.C: Likewise. @@ -164,7 +169,7 @@ Thu Oct 17 19:12:58 CEST 2002 Jan Hubicka 2002-10-14 Mark Mitchell * g++.dg/abi/empty8.C: New test. - + 2002-10-15 Nathan Sidwell * g++.dg/init/ctor1.C: New test. @@ -205,7 +210,7 @@ Mon Oct 14 20:37:51 CEST 2002 Jan Hubicka PR c++/5661 * g++.dg/ext/vlm1.C: New test. * g++.dg/ext/vlm2.C: Likewise. - + * g++.dg/init/array1.C: Remove invalid braces. * g++.dg/init/brace1.C: New test. * g++.dg/init/copy2.C: Likewise. @@ -213,7 +218,7 @@ Mon Oct 14 20:37:51 CEST 2002 Jan Hubicka * g++.old-deja/g++.ext/arrnew.C: Change WARNING to ERROR. * g++.old-deja/g++.mike/p9129.C: Add ERROR on invalid use of braces. - + 2002-10-11 Neil Booth * gcc.dg/cpp/assembler.S: Don't use -ansi. diff --git a/gcc/testsuite/gcc.dg/noncompile/920923-1.c b/gcc/testsuite/gcc.dg/noncompile/920923-1.c index 6193177..b2bc1fd 100644 --- a/gcc/testsuite/gcc.dg/noncompile/920923-1.c +++ b/gcc/testsuite/gcc.dg/noncompile/920923-1.c @@ -1,35 +1,49 @@ -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 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_t; prec_t mem_hash; -BYTE *mem_base; /* { dg-error "parse error|no type" } */ +BYTE *mem_base; /* { error "parse error|no type" } */ struct PTE { - BYTE *p_page; /* { dg-error "parse error|no semicolon" } */ + BYTE *p_page; /* { error "parse error|no semicolon" } */ perm_set p_perms; -}; /* { dg-error "parse error" } */ +}; /* { error "parse error" } */ typedef struct PTE pte; struct PTP { union { - struct *PTP p_tablep; /* { dg-error "parse error|no semicolon" } */ + struct *PTP p_tablep; /* { error "parse error|no semicolon" } */ struct *PTE p_entry; - } u; /* { dg-warning "no type or storage class" } */ + } u; /* { warning "no type or storage class" } */ int valid; -}; /* { dg-error "parse error" } */ -typedef struct PTP (u.p_tablep);/* { dg-error "parse error" } */ +}; /* { error "parse error" } */ +typedef struct PTP (u.p_tablep);/* { error "parse error" } */ int pfree=0; int pcount=0; void mmu_walk_find(va) -caddr_t va; /* { dg-error "parse error|no type" } */ +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; /* { dg-error "parse error" } */ + mmu_base[Level1(va)]->valid = 0x3; /* { error "parse error" } */ for (idx=0; idxvalid = 0x0; goto build_level2; @@ -39,43 +53,43 @@ caddr_t va; /* { dg-error "parse error|no type" } */ 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; /* { dg-error "parse error" } */ + l1_base[Level2(va)]->valid = 0x3; /* { error "parse error" } */ for (idx=0; idxvalid=0x0; goto build_page; } else l2_base = mmu_base[Level2(va)]->(u.p_tablep); - page_addr = l2_base[Level2(va)]->valid;/* { dg-error "undeclared|no type" } */ -} /* { dg-error "parse error" } */ + 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; /* { dg-error "parse error" } */ +caddr_t v_addr; /* { error "parse error" } */ { register prec_t bucket; - register caddr_t p_addr; /* { dg-error "syntax error" } */ - bucket = mem_hash+((((v_addr)>>ITEMBITS))&hash_mask); /* { dg-error "undeclared|for each function" } */ + 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) { /* { dg-error "incomplete type|parse error" } */ + 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)); /* { dg-error "parse error" } */ + } while((bucket++)->v_addr != ((caddr_t)0)); /* { error "parse error" } */ page_miss: - p_addr = (--bucket)->p_addr; /* { dg-error "undeclared|pointer to" } */ + p_addr = (--bucket)->p_addr; /* { error "undeclared|pointer to" } */ page_type: switch (p_addr) { - case BUCKET_FULL: /* { dg-error "undeclared" } */ + case BUCKET_FULL: /* { error "undeclared" } */ 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); goto page_type; - case((caddr_t)1): /* { dg-error "parse error" } */ - default: + 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))); } @@ -90,9 +104,9 @@ int hash_size; register int idx; bucket = hasht; for(idx=(hash_size*3)-1; idx>=0; idx--) { - bucket->v_addr = ((caddr_t)0);/* { dg-error "undeclared|pointer to|parse error" } */ - bucket->p_addr = ((caddr_t)0);/* { dg-error "pointer to|parse error" } */ - bucket->perm_set = VA_EMPTY; /* { dg-error "undeclared|pointer to" } */ + 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" } */ } } @@ -101,21 +115,21 @@ extern void *calloc(__SIZE_TYPE__, __SIZE_TYPE__); void init_mem() { - mem_base = (BYTE *) calloc(1024, (1<<13)); /* { dg-error "undeclared|parse error" } */ - ((void)((mem_base != (BYTE *)0) /* { dg-error "parse error" } */ + 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; /* { dg-error "undeclared" } */ - mem_hash = (prec_t) calloc(hash_num, sizeof(prec)); /* { dg-error "incomplete type" } */ + 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)); /* { 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 { -- 2.7.4