aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/tree.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 9710ed2..bc07652 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -3792,7 +3792,8 @@ build_pointer_type_for_mode (tree to_type, enum machine_mode mode)
{
tree t = TYPE_POINTER_TO (to_type);
- /* First, if we already have a type for pointers to TO_TYPE, use it. */
+ /* First, if we already have a type for pointers to TO_TYPE and it's
+ the proper mode, use it. */
if (t != 0 && mode == ptr_mode)
return t;
@@ -3801,13 +3802,13 @@ build_pointer_type_for_mode (tree to_type, enum machine_mode mode)
TREE_TYPE (t) = to_type;
TYPE_MODE (t) = mode;
- /* Record this type as the pointer to TO_TYPE. */
+ /* We can only record one type as "the" pointer to TO_TYPE. We choose to
+ record the pointer whose mode is ptr_mode. */
if (mode == ptr_mode)
- TYPE_POINTER_TO (to_type) = t;
+ TYPE_POINTER_TO (to_type) = t;
/* Lay out the type. This function has many callers that are concerned
- with expression-construction, and this simplifies them all.
- Also, it guarantees the TYPE_SIZE is in the same obstack as the type. */
+ with expression-construction, and this simplifies them all. */
layout_type (t);
return t;