From c34960677437197ee2859b243cf185c7f873c83b Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Mon, 21 Aug 2017 11:14:56 +0000 Subject: Move vector_type_mode to tree.c ...so that it's possible to use TYPE_MODE in tree.h. 2017-08-21 Richard Sandiford gcc/ * stor-layout.h (vector_type_mode): Move to... * tree.h (vector_type_mode): ...here. * stor-layout.c (vector_type_mode): Move to... * tree.c (vector_type_mode): ...here. Include rtl.h and regs.h. From-SVN: r251221 --- gcc/stor-layout.c | 39 --------------------------------------- 1 file changed, 39 deletions(-) (limited to 'gcc/stor-layout.c') diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 3028d55..2275bfc 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -2494,45 +2494,6 @@ min_align_of_type (tree type) } return align / BITS_PER_UNIT; } - -/* Vector types need to re-check the target flags each time we report - the machine mode. We need to do this because attribute target can - change the result of vector_mode_supported_p and have_regs_of_mode - on a per-function basis. Thus the TYPE_MODE of a VECTOR_TYPE can - change on a per-function basis. */ -/* ??? Possibly a better solution is to run through all the types - referenced by a function and re-compute the TYPE_MODE once, rather - than make the TYPE_MODE macro call a function. */ - -machine_mode -vector_type_mode (const_tree t) -{ - machine_mode mode; - - gcc_assert (TREE_CODE (t) == VECTOR_TYPE); - - mode = t->type_common.mode; - if (VECTOR_MODE_P (mode) - && (!targetm.vector_mode_supported_p (mode) - || !have_regs_of_mode[mode])) - { - machine_mode innermode = TREE_TYPE (t)->type_common.mode; - - /* For integers, try mapping it to a same-sized scalar mode. */ - if (GET_MODE_CLASS (innermode) == MODE_INT) - { - mode = mode_for_size (TYPE_VECTOR_SUBPARTS (t) - * GET_MODE_BITSIZE (innermode), MODE_INT, 0); - - if (mode != VOIDmode && have_regs_of_mode[mode]) - return mode; - } - - return BLKmode; - } - - return mode; -} /* Create and return a type for signed integers of PRECISION bits. */ -- cgit v1.1