summaryrefslogtreecommitdiff
path: root/gcc/config/darwin.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/darwin.c')
-rw-r--r--gcc/config/darwin.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 541b772a7a4..77e2f0e31c4 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -1136,6 +1136,11 @@ machopic_select_section (tree exp, int reloc,
TREE_INT_CST_LOW (size) == 8 &&
TREE_INT_CST_HIGH (size) == 0)
return darwin_sections[literal8_section];
+ else if (TARGET_64BIT
+ && TREE_CODE (size) == INTEGER_CST
+ && TREE_INT_CST_LOW (size) == 16
+ && TREE_INT_CST_HIGH (size) == 0)
+ return darwin_sections[literal16_section];
else
return base_section;
}
@@ -1234,6 +1239,10 @@ machopic_select_rtx_section (enum machine_mode mode, rtx x,
&& (GET_CODE (x) == CONST_INT
|| GET_CODE (x) == CONST_DOUBLE))
return darwin_sections[literal4_section];
+ else if (GET_MODE_SIZE (mode) == 16
+ && (GET_CODE (x) == CONST_INT
+ || GET_CODE (x) == CONST_DOUBLE))
+ return darwin_sections[literal16_section];
else if (MACHOPIC_INDIRECT
&& (GET_CODE (x) == SYMBOL_REF
|| GET_CODE (x) == CONST