Special-case BLKmode vector types in tree_nop_conversion_p
Ensures correct handling of BLKmode vector types by the `tree_nop_conversion_p` function, preventing potential issues with type conversions.
The tree_nop_conversion_p function, which determines if a type conversion is effectively a no-operation, has been updated to correctly handle BLKmode vector types. This fix ensures that conversions involving these specific vector types are accurately identified as either necessary or redundant, preventing potential misoptimizations or internal compiler errors.
In Details
This commit adds a special case to tree_nop_conversion_p in tree.cc to correctly handle BLKmode vector types. Previously, conversions involving these types might not have been correctly identified as no-ops, potentially leading to incorrect optimization decisions or assertion failures in later compiler passes that rely on accurate type conversion information.
- tree_nop_conversion_p
- A GCC internal predicate function that checks if a conversion between two types is a 'no-operation' (nop), meaning the value does not change. This is used to eliminate redundant conversions during optimization.
- BLKmode
- A machine mode in GCC representing a block of data, often used for vector types or structures. It's a generic mode for aggregate data.
- vector types
- Data types that hold multiple values of the same base type, typically processed in parallel by SIMD (Single Instruction, Multiple Data) instructions. Examples include
__m128iorfloat __attribute__((vector_size (16))).