| Index: gcc/config/i386/i386.c
|
| diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
| index 792a9f6c6933cd9c8fad1647d62279c67923ef51..e32dd198a5a4d0092681312014176d0c66db941d 100644
|
| --- a/gcc/config/i386/i386.c
|
| +++ b/gcc/config/i386/i386.c
|
| @@ -3246,7 +3246,7 @@ override_options (bool main_args_p)
|
|
|
| /* If using typedef char *va_list, signal that __builtin_va_start (&ap, 0)
|
| can be optimized to ap = __builtin_next_arg (0). */
|
| - if (!TARGET_64BIT && !TARGET_NACL)
|
| + if (!TARGET_64BIT)
|
| targetm.expand_builtin_va_start = NULL;
|
|
|
| if (TARGET_64BIT)
|
| @@ -6509,42 +6509,6 @@ ix86_build_builtin_va_list_abi (enum calling_abi abi)
|
| {
|
| tree f_gpr, f_fpr, f_ovf, f_sav, record, type_decl;
|
|
|
| - /* For i386 NaCl, use a structure of size 16, alignment 4,
|
| - for compatibility with PNaCl. Only the first 4 bytes
|
| - of the structure are used */
|
| - if (TARGET_NACL && !TARGET_64BIT)
|
| - {
|
| - tree f_ptr, f_pad1, f_pad2, f_pad3;
|
| - record = (*lang_hooks.types.make_type) (RECORD_TYPE);
|
| - type_decl = build_decl (TYPE_DECL, get_identifier ("__va_list_tag"), record);
|
| -
|
| - f_ptr = build_decl (FIELD_DECL, get_identifier ("ptr"),
|
| - ptr_type_node);
|
| - f_pad1 = build_decl (FIELD_DECL, get_identifier ("pad1"),
|
| - ptr_type_node);
|
| - f_pad2 = build_decl (FIELD_DECL, get_identifier ("pad2"),
|
| - ptr_type_node);
|
| - f_pad3 = build_decl (FIELD_DECL, get_identifier ("pad3"),
|
| - ptr_type_node);
|
| -
|
| - DECL_FIELD_CONTEXT (f_ptr) = record;
|
| - DECL_FIELD_CONTEXT (f_pad1) = record;
|
| - DECL_FIELD_CONTEXT (f_pad2) = record;
|
| - DECL_FIELD_CONTEXT (f_pad3) = record;
|
| -
|
| - TREE_CHAIN (record) = type_decl;
|
| - TYPE_NAME (record) = type_decl;
|
| - TYPE_FIELDS (record) = f_ptr;
|
| - TREE_CHAIN (f_ptr) = f_pad1;
|
| - TREE_CHAIN (f_pad1) = f_pad2;
|
| - TREE_CHAIN (f_pad2) = f_pad3;
|
| -
|
| - layout_type (record);
|
| -
|
| - /* The correct type is an array type of one element. */
|
| - return build_array_type (record, build_index_type (size_zero_node));
|
| - }
|
| -
|
| /* For i386 we use plain pointer to argument area. */
|
| if (!TARGET_64BIT || abi == MS_ABI)
|
| return build_pointer_type (char_type_node);
|
| @@ -6801,9 +6765,6 @@ is_va_list_char_pointer (tree type)
|
| {
|
| tree canonic;
|
|
|
| - if (TARGET_NACL)
|
| - return false;
|
| -
|
| /* For 32-bit it is always true. */
|
| if (!TARGET_64BIT)
|
| return true;
|
| @@ -6822,19 +6783,6 @@ ix86_va_start (tree valist, rtx nextarg)
|
| tree gpr, fpr, ovf, sav, t;
|
| tree type;
|
|
|
| - /* On NaCl 32, va_list is a structure. Use the first field. */
|
| - if (TARGET_NACL && !TARGET_64BIT)
|
| - {
|
| - tree f_ptr;
|
| - f_ptr = TYPE_FIELDS (TREE_TYPE (va_list_type_node));
|
| - valist = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (valist)),
|
| - valist);
|
| - valist = build3 (COMPONENT_REF, TREE_TYPE(f_ptr),
|
| - valist, f_ptr, NULL_TREE);
|
| - std_expand_builtin_va_start (valist, nextarg);
|
| - return;
|
| - }
|
| -
|
| /* Only 64bit target needs something special. */
|
| if (!TARGET_64BIT || is_va_list_char_pointer (TREE_TYPE (valist)))
|
| {
|
| @@ -6919,17 +6867,6 @@ ix86_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
|
| enum machine_mode nat_mode;
|
| int arg_boundary;
|
|
|
| - /* On NaCl32, va_list is a structure. Use the first field only. */
|
| - if (TARGET_NACL && !TARGET_64BIT)
|
| - {
|
| - tree f_ptr;
|
| - tree ptr;
|
| - f_ptr = TYPE_FIELDS (TREE_TYPE (va_list_type_node));
|
| - ptr = build3 (COMPONENT_REF, TREE_TYPE (f_ptr),
|
| - build_va_arg_indirect_ref (valist), f_ptr, NULL_TREE);
|
| - return std_gimplify_va_arg_expr (ptr, type, pre_p, post_p);
|
| - }
|
| -
|
| /* Only 64bit target needs something special. */
|
| if (!TARGET_64BIT || is_va_list_char_pointer (TREE_TYPE (valist)))
|
| return std_gimplify_va_arg_expr (valist, type, pre_p, post_p);
|
| @@ -30345,7 +30282,7 @@ ix86_canonical_va_list_type (tree type)
|
| else if (POINTER_TYPE_P (type) && POINTER_TYPE_P (TREE_TYPE(type)))
|
| type = TREE_TYPE (type);
|
|
|
| - if (TARGET_64BIT || TARGET_NACL)
|
| + if (TARGET_64BIT)
|
| {
|
| wtype = va_list_type_node;
|
| gcc_assert (wtype != NULL_TREE);
|
| @@ -30365,10 +30302,6 @@ ix86_canonical_va_list_type (tree type)
|
| }
|
| if (TYPE_MAIN_VARIANT (wtype) == TYPE_MAIN_VARIANT (htype))
|
| return va_list_type_node;
|
| -
|
| - if (TARGET_NACL && !TARGET_64BIT)
|
| - return NULL_TREE;
|
| -
|
| wtype = sysv_va_list_type_node;
|
| gcc_assert (wtype != NULL_TREE);
|
| htype = type;
|
|
|