Skip to content

Build fails with --enable-pystats and --with-tail-call-interp due to undeclared lastopcode variable #132758

@furkanonder

Description

@furkanonder

Bug report

Bug description:

When attempting to build CPython with both the --enable-pystats and --with-tail-call-interp options,
the build fails with errors about an undeclared identifier lastopcode.

Configuration

./configure CC=clang LD=clang --with-tail-call-interp --enable-pystats 

Build Output

In file included from Python/ceval.c:976: Python/generated_cases.c.h:28:13: error: use of undeclared identifier 'lastopcode' 28 | INSTRUCTION_STATS(BINARY_OP); | ^ Python/ceval_macros.h:66:48: note: expanded from macro 'INSTRUCTION_STATS' 66 | if (_Py_stats) _Py_stats->opcode_stats[lastopcode].pair_count[op]++; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:28:13: error: use of undeclared identifier 'lastopcode' Python/ceval_macros.h:67:9: note: expanded from macro 'INSTRUCTION_STATS' 67 | lastopcode = op; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:93:13: error: use of undeclared identifier 'lastopcode' 93 | INSTRUCTION_STATS(BINARY_OP_ADD_FLOAT); | ^ Python/ceval_macros.h:66:48: note: expanded from macro 'INSTRUCTION_STATS' 66 | if (_Py_stats) _Py_stats->opcode_stats[lastopcode].pair_count[op]++; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:93:13: error: use of undeclared identifier 'lastopcode' Python/ceval_macros.h:67:9: note: expanded from macro 'INSTRUCTION_STATS' 67 | lastopcode = op; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:151:13: error: use of undeclared identifier 'lastopcode' 151 | INSTRUCTION_STATS(BINARY_OP_ADD_INT); | ^ Python/ceval_macros.h:66:48: note: expanded from macro 'INSTRUCTION_STATS' 66 | if (_Py_stats) _Py_stats->opcode_stats[lastopcode].pair_count[op]++; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:151:13: error: use of undeclared identifier 'lastopcode' Python/ceval_macros.h:67:9: note: expanded from macro 'INSTRUCTION_STATS' 67 | lastopcode = op; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:211:13: error: use of undeclared identifier 'lastopcode' 211 | INSTRUCTION_STATS(BINARY_OP_ADD_UNICODE); | ^ Python/ceval_macros.h:66:48: note: expanded from macro 'INSTRUCTION_STATS' 66 | if (_Py_stats) _Py_stats->opcode_stats[lastopcode].pair_count[op]++; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:211:13: error: use of undeclared identifier 'lastopcode' Python/ceval_macros.h:67:9: note: expanded from macro 'INSTRUCTION_STATS' 67 | lastopcode = op; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:271:13: error: use of undeclared identifier 'lastopcode' 271 | INSTRUCTION_STATS(BINARY_OP_EXTEND); | ^ Python/ceval_macros.h:66:48: note: expanded from macro 'INSTRUCTION_STATS' 66 | if (_Py_stats) _Py_stats->opcode_stats[lastopcode].pair_count[op]++; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:271:13: error: use of undeclared identifier 'lastopcode' Python/ceval_macros.h:67:9: note: expanded from macro 'INSTRUCTION_STATS' 67 | lastopcode = op; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:335:13: error: use of undeclared identifier 'lastopcode' 335 | INSTRUCTION_STATS(BINARY_OP_INPLACE_ADD_UNICODE); | ^ Python/ceval_macros.h:66:48: note: expanded from macro 'INSTRUCTION_STATS' 66 | if (_Py_stats) _Py_stats->opcode_stats[lastopcode].pair_count[op]++; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:335:13: error: use of undeclared identifier 'lastopcode' Python/ceval_macros.h:67:9: note: expanded from macro 'INSTRUCTION_STATS' 67 | lastopcode = op; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:418:13: error: use of undeclared identifier 'lastopcode' 418 | INSTRUCTION_STATS(BINARY_OP_MULTIPLY_FLOAT); | ^ Python/ceval_macros.h:66:48: note: expanded from macro 'INSTRUCTION_STATS' 66 | if (_Py_stats) _Py_stats->opcode_stats[lastopcode].pair_count[op]++; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:418:13: error: use of undeclared identifier 'lastopcode' Python/ceval_macros.h:67:9: note: expanded from macro 'INSTRUCTION_STATS' 67 | lastopcode = op; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:476:13: error: use of undeclared identifier 'lastopcode' 476 | INSTRUCTION_STATS(BINARY_OP_MULTIPLY_INT); | ^ Python/ceval_macros.h:66:48: note: expanded from macro 'INSTRUCTION_STATS' 66 | if (_Py_stats) _Py_stats->opcode_stats[lastopcode].pair_count[op]++; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:476:13: error: use of undeclared identifier 'lastopcode' Python/ceval_macros.h:67:9: note: expanded from macro 'INSTRUCTION_STATS' 67 | lastopcode = op; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:536:13: error: use of undeclared identifier 'lastopcode' 536 | INSTRUCTION_STATS(BINARY_OP_SUBSCR_DICT); | ^ Python/ceval_macros.h:66:48: note: expanded from macro 'INSTRUCTION_STATS' 66 | if (_Py_stats) _Py_stats->opcode_stats[lastopcode].pair_count[op]++; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:536:13: error: use of undeclared identifier 'lastopcode' Python/ceval_macros.h:67:9: note: expanded from macro 'INSTRUCTION_STATS' 67 | lastopcode = op; \ | ^ In file included from Python/ceval.c:976: Python/generated_cases.c.h:602:13: error: use of undeclared identifier 'lastopcode' 602 | INSTRUCTION_STATS(BINARY_OP_SUBSCR_GETITEM); | ^ Python/ceval_macros.h:66:48: note: expanded from macro 'INSTRUCTION_STATS' 66 | if (_Py_stats) _Py_stats->opcode_stats[lastopcode].pair_count[op]++; \ | ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] clang -c -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -DPy_BUILD_CORE -o Python/context.o Python/context.c 20 errors generated. make: *** [Makefile:3221: Python/ceval.o] Error 1 make: *** Waiting for unfinished jobs....

Environment

  • OS: Arch Linux (Linux 6.14.2-arch1-1)
  • Compiler: clang version 19.1.7

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildThe build process and cross-buildtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions