-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
Without passing a -O flag to gcc, tests/gcc/link/positive/builtin-ctype-2.c is effectively getting no-opped:
ableC/testing/tests/gcc/link/positive/builtin-ctype-2.c
Lines 42 to 46 in d947074
| #ifdef __OPTIMIZE__ | |
| TEST_CTYPE_CST_TRUE (isascii, 0); | |
| TEST_CTYPE_CST_TRUE (isascii, 1); | |
| TEST_CTYPE_CST_TRUE (isascii, 126); | |
| TEST_CTYPE_CST_TRUE (isascii, 127); |
When this is actually set, it expands to code like:
# 43 "tests/gcc/link/positive/builtin-ctype-2.c"
extern void link_failure_isascii_cst_true(void); extern int isascii(int); if (! isascii(0)) link_failure_isascii_cst_true();
extern void link_failure_isascii_cst_true(void); extern int isascii(int); if (! isascii(1)) link_failure_isascii_cst_true();
extern void link_failure_isascii_cst_true(void); extern int isascii(int); if (! isascii(126)) link_failure_isascii_cst_true();
extern void link_failure_isascii_cst_true(void); extern int isascii(int); if (! isascii(127)) link_failure_isascii_cst_true();
extern void link_failure_isascii_cst_false(void); extern int isascii(int); if (isascii(-1)) link_failure_isascii_cst_false();
extern void link_failure_isascii_cst_false(void); extern int isascii(int); if (isascii(128)) link_failure_isascii_cst_false();
extern void link_failure_isascii_cst_false(void); extern int isascii(int); if (isascii(129)) link_failure_isascii_cst_false();
extern void link_failure_isascii_cst_false(void); extern int isascii(int); if (isascii(255)) link_failure_isascii_cst_false();This gets errors like:
tests/gcc/link/positive/builtin-ctype-2.c:44:14: error: Redeclaration of link_failure_isascii_cst_true. Original (from tests/gcc/link/positive/builtin-ctype-2.c:43:14)
tests/gcc/link/positive/builtin-ctype-2.c:44:62: error: Redeclaration of isascii. Original (from tests/gcc/link/positive/builtin-ctype-2.c:43:62)
tests/gcc/link/positive/builtin-ctype-2.c:45:14: error: Redeclaration of link_failure_isascii_cst_true. Original (from tests/gcc/link/positive/builtin-ctype-2.c:44:14)
tests/gcc/link/positive/builtin-ctype-2.c:45:62: error: Redeclaration of isascii. Original (from tests/gcc/link/positive/builtin-ctype-2.c:44:62)
tests/gcc/link/positive/builtin-ctype-2.c:46:14: error: Redeclaration of link_failure_isascii_cst_true. Original (from tests/gcc/link/positive/builtin-ctype-2.c:45:14)
tests/gcc/link/positive/builtin-ctype-2.c:46:62: error: Redeclaration of isascii. Original (from tests/gcc/link/positive/builtin-ctype-2.c:45:62)
I'm distracted right now, but I think:
| if top.isTopLevel then |
might be an incorrect check; should it instead always be true of functions? Or something like that?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels