diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.target/aarch64/pic-symrefplus.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.target/aarch64/pic-symrefplus.c | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pic-symrefplus.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pic-symrefplus.c new file mode 100644 index 000000000..f277a5285 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pic-symrefplus.c @@ -0,0 +1,128 @@ +/* { dg-options "-O2 -mcmodel=small -fPIC -fno-builtin" } */ +/* { dg-do compile } */ + +typedef long unsigned int size_t; +enum +{ + __LC_TIME = 2, +}; +enum +{ + ABDAY_1 = (((__LC_TIME) << 16) | (0)), + DAY_1, + ABMON_1, + MON_1, + D_T_FMT, +}; +typedef struct __locale_struct +{ + struct locale_data *__locales[13]; +} *__locale_t; +struct tm +{ + int tm_sec; + int tm_min; + int tm_hour; +}; +struct locale_data +{ + const char *name; + struct + { + const char *string; + } + values []; +}; +extern const struct locale_data _nl_C_LC_TIME __attribute__ ((visibility ("hidden"))); +char * +__strptime_internal (rp, fmt, tmp, statep , locale) + const char *rp; + const char *fmt; + __locale_t locale; + void *statep; +{ + struct locale_data *const current = locale->__locales[__LC_TIME]; + const char *rp_backup; + const char *rp_longest; + int cnt; + size_t val; + enum ptime_locale_status { not, loc, raw } decided_longest; + struct __strptime_state + { + enum ptime_locale_status decided : 2; + } s; + struct tm tmb; + struct tm *tm; + if (statep == ((void *)0)) + { + memset (&s, 0, sizeof (s)); + } + { + tm = &tmb; + } + while (*fmt != '\0') + { + if (*fmt != '%') + { + if (*fmt++ != *rp++) return ((void *)0); + continue; + } + if (statep != ((void *)0)) + { + ++fmt; + } + rp_backup = rp; + switch (*fmt++) + { + case '%': + for (cnt = 0; cnt < 7; ++cnt) + { + const char *trp; + if (s.decided !=raw) + { + if (({ size_t len = strlen ((current->values[((int) (DAY_1 + cnt) & 0xffff)].string)); int result = __strncasecmp_l (((current->values[((int) (DAY_1 + cnt) & 0xffff)].string)), (trp), len, locale) == 0; if (result) (trp) += len; result; }) + && trp > rp_longest) + { + } + if (({ size_t len = strlen ((current->values[((int) (ABDAY_1 + cnt) & 0xffff)].string)); int result = __strncasecmp_l (((current->values[((int) (ABDAY_1 + cnt) & 0xffff)].string)), (trp), len, locale) == 0; if (result) (trp) += len; result; }) + && trp > rp_longest) + { + } + } + if (s.decided != loc + && (((trp = rp, ({ size_t len = strlen ((&_nl_C_LC_TIME.values[((int) (DAY_1) & 0xffff)].string)[cnt]); int result = __strncasecmp_l (((&_nl_C_LC_TIME.values[((int) (DAY_1) & 0xffff)].string)[cnt]), (trp), len, locale) == 0; if (result) (trp) += len; result; })) + && trp > rp_longest) + || ((trp = rp, ({ size_t len = strlen ((&_nl_C_LC_TIME.values[((int) (ABDAY_1) & 0xffff)].string)[cnt]); int result = __strncasecmp_l (((&_nl_C_LC_TIME.values[((int) (ABDAY_1) & 0xffff)].string)[cnt]), (rp), len, locale) == 0; if (result) (rp) += len; result; })) + && trp > rp_longest))) + { + } + } + { + const char *trp; + if (s.decided != loc + && (((trp = rp, ({ size_t len = strlen ((&_nl_C_LC_TIME.values[((int) (MON_1) & 0xffff)].string)[cnt]); int result = __strncasecmp_l (((&_nl_C_LC_TIME.values[((int) (MON_1) & 0xffff)].string)[cnt]), (trp), len, locale) == 0; if (result) (trp) += len; result; })) + && trp > rp_longest) + || ((trp = rp, ({ size_t len = strlen ((&_nl_C_LC_TIME.values[((int) (ABMON_1) & 0xffff)].string)[cnt]); int result = __strncasecmp_l (((&_nl_C_LC_TIME.values[((int) (ABMON_1) & 0xffff)].string)[cnt]), (trp), len, locale) == 0; if (result) (trp) += len; result; })) + && trp > rp_longest))) + { + } + } + case 'c': + { + if (!(*((current->values[((int) (D_T_FMT) & 0xffff)].string)) != '\0' && (rp = __strptime_internal (rp, ((current->values[((int) (D_T_FMT) & 0xffff)].string)), tm, &s , locale)) != ((void *)0))) + { + rp = rp_backup; + } + } + case 'C': + do { int __n = 2; val = 0; while (*rp == ' ') ++rp; if (*rp < '0' || *rp > '9') return ((void *)0); do { val *= 10; val += *rp++ - '0'; } while (--__n > 0 && val * 10 <= 99 && *rp >= '0' && *rp <= '9'); if (val < 0 || val > 99) return ((void *)0); } while (0); + case 'F': + if (!(*("%Y-%m-%d") != '\0' && (rp = __strptime_internal (rp, ("%Y-%m-%d"), tm, &s , locale)) != ((void *)0))) + tm->tm_hour = val % 12; + } + } +} +char * +__strptime_l (buf, format, tm , locale) +{ +} |