yann@1: See http://gcc.gnu.org/PR13260 yann@1: yann@1: /cvs/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20031204-1.c,v --> standard output yann@1: revision 1.1 yann@1: --- - 1970-01-01 00:00:00.000000000 +0000 yann@1: +++ gcc/gcc/testsuite/gcc.c-torture/execute/20031204-1.c yann@1: @@ -0,0 +1,49 @@ yann@1: +/* PR optimization/13260 */ yann@1: + yann@1: +#include yann@1: + yann@1: +typedef unsigned long u32; yann@1: + yann@1: +u32 in_aton(const char* x) yann@1: +{ yann@1: + return 0x0a0b0c0d; yann@1: +} yann@1: + yann@1: +u32 root_nfs_parse_addr(char *name) yann@1: +{ yann@1: + u32 addr; yann@1: + int octets = 0; yann@1: + char *cp, *cq; yann@1: + yann@1: + cp = cq = name; yann@1: + while (octets < 4) { yann@1: + while (*cp >= '0' && *cp <= '9') yann@1: + cp++; yann@1: + if (cp == cq || cp - cq > 3) yann@1: + break; yann@1: + if (*cp == '.' || octets == 3) yann@1: + octets++; yann@1: + if (octets < 4) yann@1: + cp++; yann@1: + cq = cp; yann@1: + } yann@1: + yann@1: + if (octets == 4 && (*cp == ':' || *cp == '\0')) { yann@1: + if (*cp == ':') yann@1: + *cp++ = '\0'; yann@1: + addr = in_aton(name); yann@1: + strcpy(name, cp); yann@1: + } else yann@1: + addr = (-1); yann@1: + yann@1: + return addr; yann@1: +} yann@1: + yann@1: +int yann@1: +main() yann@1: +{ yann@1: + static char addr[] = "10.11.12.13:/hello"; yann@1: + u32 result = root_nfs_parse_addr(addr); yann@1: + if (result != 0x0a0b0c0d) { abort(); } yann@1: + return 0; yann@1: +}