opt-5.c
来自「用于进行gcc测试」· C语言 代码 · 共 111 行
C
111 行
/* { dg-do compile } *//* { dg-options "-O2" } *//* { dg-require-effective-target tls } *//* Sched1 moved {load_tp} pattern between strlen call and the copy of the hard return value to its pseudo. This resulted in a reload abort, since the hard register was not spillable. */extern __thread int __libc_errno __attribute__ ((tls_model ("initial-exec")));struct stat64 { long dummy[4]; };typedef __SIZE_TYPE__ size_t;typedef unsigned long long uint64_t;typedef int __mode_t;extern size_t strlen (__const char *__s) __attribute__ ((__pure__));extern int strcmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__));extern int __open64 (__const char *__file, int __oflag, ...);extern int __open (__const char *__file, int __oflag, ...);extern int __mkdir (__const char *__path, __mode_t __mode);extern int __lxstat64 (int __ver, __const char *__filename, struct stat64 *__stat_buf) ;static const char letters[] ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";int__gen_tempname (char *tmpl, int kind){ int len; char *XXXXXX; static uint64_t value; uint64_t random_time_bits; unsigned long count; int fd = -1; int save_errno = __libc_errno; struct stat64 st; unsigned long attempts_min = 62L * 62L * 62L; unsigned long attempts = attempts_min < 238328 ? 238328 : attempts_min; len = strlen (tmpl); if (len < 6 || strcmp(&tmpl[len - 6], "XXXXXX")) { (__libc_errno = (22)); return -1; } XXXXXX = &tmpl[len - 6]; for (count = 0; count < attempts; value += 7777, ++count) { uint64_t v = value; XXXXXX[0] = letters[v % 62]; v /= 62; XXXXXX[1] = letters[v % 62]; v /= 62; XXXXXX[2] = letters[v % 62]; v /= 62; XXXXXX[3] = letters[v % 62]; v /= 62; XXXXXX[4] = letters[v % 62]; v /= 62; XXXXXX[5] = letters[v % 62]; switch (kind) { case 0: fd = __open (tmpl, 02 | 01000 | 04000, 0400 | 0200); break; case 1: fd = __open64 (tmpl, 02 | 01000 | 04000, 0400 | 0200); break; case 2: fd = __mkdir (tmpl, 0400 | 0200 | 0100); break; case 3: if (__lxstat64 (2, tmpl, &st) < 0) { if (__libc_errno == 2) { (__libc_errno = (save_errno)); return 0; } else return -1; } continue; } if (fd >= 0) { (__libc_errno = (save_errno)); return fd; } else if (__libc_errno != 17) return -1; } (__libc_errno = (17)); return -1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?