Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test failure: tests/gcc/link/positive/builtin-ctype-2.c fails with -O2 #224

Open
remexre opened this issue Nov 21, 2024 · 0 comments
Open

Comments

@remexre
Copy link
Member

remexre commented Nov 21, 2024

Without passing a -O flag to gcc, tests/gcc/link/positive/builtin-ctype-2.c is effectively getting no-opped:

#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:

might be an incorrect check; should it instead always be true of functions? Or something like that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant