testsuite/52641 - Make analyzer tests pass (or skip) on AVR.
Fixes and skips analyzer test cases on AVR architecture due to implementation differences.
This patch addresses issues in GCC’s testsuite where static analyzer tests were failing on the AVR architecture. Several test cases have been fixed by using correct, fixed-width integer types (e.g., __UINT32_TYPE__ instead of unsigned int) and by skipping tests that rely on specific warning behaviors or strcmp/strcmp implementations not reliably present on AVR. These changes ensure the test suite remains robust across different architectures. This fixes PR52641.
In Details
Several test cases within GCC's static analyzer test suite were failing on the AVR target due to a combination of factors: imprecise type definitions (e.g., unsigned int instead of __UINT32_TYPE__), and differences in the availability or behavior of standard library functions like strcmp when implemented as inline assembly wrappers on AVR. This commit remedies these issues by either correcting the type definitions to use explicit __*_TYPE__ macros or by applying conditional skips (#if defined(avr)) for tests that cannot reliably pass on the AVR architecture. This ensures test suite…
- static analyzer
- A tool that analyzes source code to find potential bugs, such as memory leaks, buffer overflows, and uninitialized variables, without actually running the program.
- AVR
- A family of microcontrollers developed by Atmel (now Microchip Technology). GCC supports compiling code for these embedded processors.
- fixed-width integer types
- Integer types guaranteed to have a specific number of bits, such as
int32_toruint64_t. These are defined in<stdint.h>and are crucial for predictable behavior across different platforms. - inline assembly
- Assembly language code embedded directly within C or C++ source code, typically used for performance-critical sections or to access hardware-specific features.