http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59471
Bug ID: 59471 Summary: ICE using vector extensions (non-top-level BIT_FIELD_REF, IMAGPART_EXPR or REALPART_EXPR) Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: jgreenhalgh at gcc dot gnu.org The following code: typedef unsigned char uint8x8_t __attribute__ ((__vector_size__ (8))); typedef unsigned short uint16x8_t __attribute__ ((__vector_size__ (16))); typedef unsigned long uint64x2_t __attribute__ ((__vector_size__ (16))); uint8x8_t foo (uint16x8_t x) { return (uint8x8_t) ((uint64x2_t) x)[0]; } Will give this ICE for current trunk on AArch64, ARM and X86_64: /work/build-x86/install/bin/gcc ../testcases/view-convert-expr.c -O3 ../testcases/view-convert-expr.c: In function ‘foo’: ../testcases/view-convert-expr.c:11:1: error: non-top-level BIT_FIELD_REF, IMAGPART_EXPR or REALPART_EXPR foo (uint16x8_t x) ^ BIT_FIELD_REF <VIEW_CONVERT_EXPR<vector(2) long unsigned int>(x), 64, 0> ../testcases/view-convert-expr.c:13:3: note: in statement return (uint8x8_t) ((uint64x2_t) x)[0]; ^ D.1792 = VIEW_CONVERT_EXPR<uint8x8_t>(BIT_FIELD_REF <VIEW_CONVERT_EXPR<vector(2) long unsigned int>(x), 64, 0>); ../testcases/view-convert-expr.c:11:1: internal compiler error: verify_gimple failed foo (uint16x8_t x) ^ 0x9b5a5a verify_gimple_in_cfg(function*) ../../src/gcc/gcc/tree-cfg.c:4837 0x8df347 execute_function_todo ../../src/gcc/gcc/passes.c:1847 0x8dfb73 execute_todo ../../src/gcc/gcc/passes.c:1877 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. Looking at -fdump-tree-all-raw, I see this expression in view-convert-expr.c.004t.gimple: foo (uint16x8_t x) gimple_bind < uint8x8_t D.1792; gimple_assign <view_convert_expr, D.1792, VIEW_CONVERT_EXPR<uint8x8_t>(BIT_FIELD_REF <VIEW_CONVERT_EXPR<vector(2) long unsigned int>(x), 64, 0>), NULL, NULL> gimple_return <D.1792 NULL> > For reference, my x86 compiler was configured as: Configured with: ../src/gcc/configure --prefix=/work/build-x86/install