Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.c-torture/execute/20121108-1.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
char temp[] = "192.168.190.160"; unsigned result = (((((192u<<8)|168u)<<8)|190u)<<8)|160u; int strtoul1(const char *a, char **b, int c) __attribute__((noinline, noclone)); int strtoul1(const char *a, char **b, int c) { *b = a+3; if (a == temp) return 192; else if (a == temp+4) return 168; else if (a == temp+8) return 190; else if (a == temp+12) return 160; __builtin_abort(); } int string_to_ip(const char *s) __attribute__((noinline,noclone)); int string_to_ip(const char *s) { int addr; char *e; int i; if (s == 0) return(0); for (addr=0, i=0; i<4; ++i) { int val = s ? strtoul1(s, &e, 10) : 0; addr <<= 8; addr |= (val & 0xFF); if (s) { s = (*e) ? e+1 : e; } } return addr; } int main(void) { int t = string_to_ip (temp); printf ("%x\n", t); printf ("%x\n", result); if (t != result) __builtin_abort (); printf ("WORKS.\n"); return 0; }