[committed,MSP430] Define TARGET_VTABLE_ENTRY_ALIGN

Message ID 20181218133215.63e5dd47@jozef-Aspire-VN7-793G
State New
Headers show
Series
  • [committed,MSP430] Define TARGET_VTABLE_ENTRY_ALIGN
Related show

Commit Message

Jozef Lawrynowicz Dec. 18, 2018, 1:32 p.m.
TARGET_VTABLE_ENTRY_ALIGN defaults to POINTER_SIZE, which is 20 for
msp430-elf -mlarge.

g++.dg/torture/pr41257.C ICEs after the invalid alignment of 20 is set.

> during GIMPLE pass: slp

> gcc/testsuite/g++.dg/torture/pr41257.C: In function 'void bar()':

> gcc/testsuite/g++.dg/torture/pr41257.C:17:6: internal compiler error: in dr_analyze_innermost, at tree-data-ref.c:911

>    17 | void bar()

>       |      ^~~

> 0x1427a98 dr_analyze_innermost(innermost_loop_behavior*, tree_node*, loop*, gimple const*)

>         gcc/build/../gcc/tree-data-ref.c:910

> 0x14285ab create_data_ref(edge_def*, loop*, tree_node*, gimple*, bool, bool)

>         gcc/build/../gcc/tree-data-ref.c:1241

> 0x1428965 find_data_references_in_stmt(loop*, gimple*, vec<data_reference*, va_heap, vl_ptr>*)

>         gcc/build/../gcc/tree-data-ref.c:5089

> 0x1440d5d vect_find_stmt_data_reference(loop*, gimple*, vec<data_reference*, va_heap, vl_ptr>*)

>         gcc/build/../gcc/tree-vect-data-refs.c:3949

> 0x1034f0e vect_slp_bb(basic_block_def*)

>         gcc/build/../gcc/tree-vect-slp.c:3020

> 0x10381ea execute

>         gcc/build/../gcc/tree-vectorizer.c:1295


Pointer alignment is always 16 for MSP430, the attached patch (committed to
trunk) sets TARGET_VTABLE_ENTRY_ALIGN to 16 for MSP430. This fixes the above
ICE.

Patch

Index: gcc/ChangeLog
===================================================================
--- gcc/ChangeLog	(revision 267228)
+++ gcc/ChangeLog	(revision 267229)
@@ -1,3 +1,7 @@ 
+2018-12-18  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* config/msp430/msp430.h: Define TARGET_VTABLE_ENTRY_ALIGN.
+
 2018-12-18  Jakub Jelinek  <jakub@redhat.com>
 
 	PR target/88513
Index: gcc/config/msp430/msp430.h
===================================================================
--- gcc/config/msp430/msp430.h	(revision 267228)
+++ gcc/config/msp430/msp430.h	(revision 267229)
@@ -159,6 +159,11 @@ 
 #define PTR_SIZE			(TARGET_LARGE ? 4 : 2)
 #define	POINTERS_EXTEND_UNSIGNED	1
 
+/* TARGET_VTABLE_ENTRY_ALIGN defaults to POINTER_SIZE, which is 20 for
+   TARGET_LARGE.  Pointer alignment is always 16 for MSP430, so set explicitly
+   here.  */
+#define TARGET_VTABLE_ENTRY_ALIGN 16
+
 #define ADDR_SPACE_NEAR	1
 #define ADDR_SPACE_FAR	2